-
Notifications
You must be signed in to change notification settings - Fork 0
/
bootstrap.php
102 lines (70 loc) · 2.87 KB
/
bootstrap.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
<?php
require_once __DIR__ . '/vendor/autoload.php';
use Knp\Provider\ConsoleServiceProvider;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$app = new Silex\Application();
// App config (or create config.php to override) --------------
$app['config'] =
[
'storage_dir' => __DIR__ . '/web/static',
'public_storage_dir' => 'static/', // trailing slash
'strip_folders' => false,
'allowed_mime_types' => ['image/png', 'image/jpeg', 'image/gif', 'image/bmp', 'image/tiff'],
'max_file_size' => 1024 * 1024 * 32,
'features' => [
// If this is enabled, a cron must call the command
// ./console --quiet i:purge every few minutes.
'expiration' => true,
// If this is enabled, the webserver must be configured to call
// ./console i:hit --quiet <url> when an image was sent to a client.
// Requires expiration enabled.
'deletion_at_first_view' => true
],
'thumb_size' => 300,
# Requires convert to be installed, and system function allowed.
'use_system_convert' => true,
# Requires convert and exiftool (Debian package: libimage-exiftool-perl)
'use_system_exif_tools' => true,
'data_file' => __DIR__ . '/images.sqlite'
];
// App bootstrap ----------------------------------------------
require_once 'utils.php';
$app->register(new Silex\Provider\TwigServiceProvider(), [
'twig.path' => __DIR__.'/templates',
]);
$app->register(new ConsoleServiceProvider(), [
'console.name' => 'izcraft',
'console.version' => '2.0',
'console.project_directory' => __DIR__ . "/.."
]);
if (file_exists(__DIR__ . '/config.php')) $app['config'] = array_merge($app['config'], include(__DIR__ . '/config.php'));
date_default_timezone_set('Europe/Paris');
/**
* Renders a view, but replaces the template with a CLI template if the client is WGet or CURL.
* In this case a template “name.html.twig” will be replated by “name.cli.twig”, if the template exists.
*
* @return Response
*/
$app['render'] = $app->protect(function (Request $request, $template_name, array $context = array(), $http_code = 200) use ($app) {
$user_agent = strtolower(trim($request->headers->get('User-Agent', '')));
$plain_text = false;
$template = null;
if (strpos($user_agent, 'wget') === 0 || strpos($user_agent, 'curl') === 0)
{
try
{
$template = $app['twig']->load('cli/' . str_replace('.html.twig', '.cli.twig', $template_name));
$plain_text = true;
}
catch (\Twig_Error_Loader $e) {
}
}
if ($template == null)
{
$template = $app['twig']->load($template_name);
}
return new Response($template->render($context), $http_code, ['Content-Type' => $plain_text ? 'text/plain' : 'text/html']);
});
// ------------------------------------------------------------
return $app;