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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<?php
/*
* Xibo - Digital Signage - http://www.xibo.org.uk
* Copyright (C) 2006-2015 Daniel Garner
*
* This file (index.php) is part of Xibo.
*
* Xibo is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* Xibo is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Xibo. If not, see <http://www.gnu.org/licenses/>.
*/
use Xibo\Service\ConfigService;
DEFINE('XIBO', true);
define('PROJECT_ROOT', realpath(__DIR__ . '/..'));
error_reporting(0);
ini_set('display_errors', 0);
require PROJECT_ROOT . '/vendor/autoload.php';
if (!file_exists('settings.php')) {
if (file_exists(PROJECT_ROOT . '/web/install/index.php')) {
header('Location: install/');
exit();
}
else {
die('Not configured');
}
}
// Create a logger
$logger = new \Xibo\Helper\AccessibleMonologWriter(array(
'name' => 'WEB',
'handlers' => [
new \Xibo\Helper\DatabaseLogHandler()
],
'processors' => array(
new \Xibo\Helper\LogProcessor(),
new \Monolog\Processor\UidProcessor(7)
)
), false);
// Slim Application
$app = new \RKA\Slim(array(
'debug' => false,
'log.writer' => $logger
));
$app->setName('web');
// Twig templates
$twig = new \Slim\Views\Twig();
$twig->parserOptions = array(
'debug' => true,
'cache' => PROJECT_ROOT . '/cache'
);
$twig->parserExtensions = array(
new \Slim\Views\TwigExtension(),
new \Xibo\Twig\TransExtension(),
new \Xibo\Twig\ByteFormatterTwigExtension(),
new \Xibo\Twig\UrlDecodeTwigExtension(),
new \Xibo\Twig\DateFormatTwigExtension()
);
// Configure the template folder
$twig->twigTemplateDirs = [PROJECT_ROOT . '/views'];
$app->view($twig);
// Config
$app->configService = ConfigService::Load(PROJECT_ROOT . '/web/settings.php');
//
// Middleware (onion, outside inwards and then out again - i.e. the last one is first and last);
//
$app->add(new \Xibo\Middleware\Actions());
// Theme Middleware
$app->add(new \Xibo\Middleware\Theme());
// Authentication middleware
if ($app->configService->authentication != null && $app->configService->authentication instanceof \Slim\Middleware)
$app->add($app->configService->authentication);
else
$app->add(new \Xibo\Middleware\WebAuthentication());
// Standard Xibo middleware
$app->add(new \Xibo\Middleware\CsrfGuard());
$app->add(new \Xibo\Middleware\State());
$app->add(new \Xibo\Middleware\Storage());
$app->add(new \Xibo\Middleware\Xmr());
// Handle additional Middleware
\Xibo\Middleware\State::setMiddleWare($app);
//
// End Middleware
//
// Configure the Slim error handler
$app->error(function (\Exception $e) use ($app) {
$app->container->get('\Xibo\Controller\Error')->handler($e);
});
// Configure a not found handler
$app->notFound(function () use ($app) {
$app->container->get('\Xibo\Controller\Error')->notFound();
});
// All application routes
require PROJECT_ROOT . '/lib/routes-web.php';
require PROJECT_ROOT . '/lib/routes.php';
// Run App
try {
$app->run();
}
catch (Exception $e) {
echo 'Fatal Error - sorry this shouldn\'t happen. ';
echo $e->getMessage();
}
|