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
|
<?php
/*
* Xibo - Digital Signage - http://www.xibo.org.uk
* Copyright (C) 2015 Spring Signage Ltd
*
* This file (Actions.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/>.
*/
namespace Xibo\Middleware;
use Slim\Middleware;
use Xibo\Controller\Library;
use Xibo\Factory\LayoutFactory;
use Xibo\Helper\Config;
use Xibo\Helper\Log;
use Xibo\Helper\Theme;
use Xibo\Helper\Translate;
class Actions extends Middleware
{
public function call()
{
$app = $this->app;
// Process notifications
// Attach a hook to log the route
$app->hook('slim.before.dispatch', function() use ($app) {
// Process Actions
if (!Config::isUpgradePending() && Config::GetSetting('DEFAULTS_IMPORTED') == 0) {
$folder = Theme::uri('layouts', true);
foreach (array_diff(scandir($folder), array('..', '.')) as $file) {
if (stripos($file, '.zip')) {
$layout = LayoutFactory::createFromZip($folder . '/' . $file, null, 1, false, false, true);
$layout->save([
'audit' => false
]);
}
}
// Install files
Library::installAllModuleFiles();
Config::ChangeSetting('DEFAULTS_IMPORTED', 1);
}
// Handle if we are an upgrade
// Get the current route pattern
$resource = $app->router->getCurrentRoute()->getPattern();
// Get an array of excluded routes
$excludedRoutes = array_merge($app->publicRoutes, ['/update', '/update/step/:id']);
// Does the version in the DB match the version of the code?
// If not then we need to run an upgrade.
if (Config::isUpgradePending() && !in_array($resource, $excludedRoutes)) {
Log::debug('%s not in excluded routes, redirecting. ', $resource);
$app->redirectTo('upgrade.view');
}
$notifications = [];
if ($app->user->userTypeId == 1 && file_exists(PROJECT_ROOT . '/web/install/index.php')) {
Log::notice('Install.php exists and shouldn\'t');
$notifications[] = __('There is a problem with this installation. "install.php" should be deleted.');
}
// Language match?
if (Translate::getRequestedLanguage() != Translate::GetLocale()) {
$notifications[] = __('Your requested language %s could not be loaded.', Translate::getRequestedLanguage());
}
$app->view()->appendData(['notifications' => $notifications]);
});
$this->next->call();
}
}
|