]> git.agnieray.net Git - galette.git/blob - galette/includes/galette.inc.php
Bump version
[galette.git] / galette / includes / galette.inc.php
1 <?php
2
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
4
5 /**
6 * Main Galette initialisation
7 *
8 * PHP version 5
9 *
10 * Copyright © 2009-2021 The Galette Team
11 *
12 * This file is part of Galette (http://galette.tuxfamily.org).
13 *
14 * Galette is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation, either version 3 of the License, or
17 * (at your option) any later version.
18 *
19 * Galette is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
23 *
24 * You should have received a copy of the GNU General Public License
25 * along with Galette. If not, see <http://www.gnu.org/licenses/>.
26 *
27 * @category Main
28 * @package Galette
29 *
30 * @author Johan Cwiklinski <johan@x-tnd.be>
31 * @copyright 2007-2021 The Galette Team
32 * @license http://www.gnu.org/licenses/gpl-3.0.html GPL License 3.0 or (at your option) any later version
33 * @link http://galette.tuxfamily.org
34 * @since Available since 0.7-dev - 2007-10-07
35 */
36
37 //define galette's root directory
38 if (!defined('GALETTE_ROOT')) {
39 define('GALETTE_ROOT', __DIR__ . '/../');
40 }
41
42 require_once GALETTE_ROOT . 'config/versions.inc.php';
43 require_once GALETTE_ROOT . 'config/paths.inc.php';
44
45 // check required PHP version...
46 if (version_compare(PHP_VERSION, GALETTE_PHP_MIN, '<')) {
47 echo 'Galette is NOT compliant with your current PHP version. ' .
48 'Galette requires PHP ' . GALETTE_PHP_MIN .
49 ' minimum and current version is ' . phpversion();
50 die(1);
51 }
52
53 $time_start = microtime(true);
54 $cron = (PHP_SAPI === 'cli');
55
56 // define relative base path templating can use
57 if (!defined('GALETTE_BASE_PATH')) {
58 define('GALETTE_BASE_PATH', './');
59 }
60
61 //we'll only include relevant parts if we work from installer
62 if (!isset($installer)) {
63 $installer = false;
64 }
65 // test if galette is already installed or if we're form installer
66 // and redirect to install page if not
67 $installed = file_exists(GALETTE_CONFIG_PATH . 'config.inc.php');
68 if (!$installed && !$installer) {
69 header('location: ./installer.php');
70 die();
71 } else if ($installed) {
72 include_once GALETTE_CONFIG_PATH . 'config.inc.php';
73 }
74
75 if (
76 file_exists(GALETTE_CONFIG_PATH . 'behavior.inc.php')
77 && !defined('GALETTE_TESTS') && !$cron
78 ) {
79 include_once GALETTE_CONFIG_PATH . 'behavior.inc.php';
80 }
81
82 use Analog\Analog;
83 use Analog\Handler;
84 use Analog\Handler\LevelName;
85 use Galette\Core;
86
87 require GALETTE_ROOT . '/vendor/autoload.php';
88
89 //start profiling
90 if (
91 defined('GALETTE_XHPROF_PATH')
92 && function_exists('xhprof_enable')
93 ) {
94 include_once __DIR__ . '/../lib/Galette/Common/XHProf.php';
95 $profiler = new Galette\Common\XHProf();
96 $profiler->start();
97 }
98
99 define('GALETTE_NIGHTLY', false);
100 define('GALETTE_VERSION', 'v0.9.5.2');
101
102 //Version to display
103 if (!defined('GALETTE_HIDE_VERSION')) {
104 define('GALETTE_DISPLAY_VERSION', \Galette\Core\Galette::gitVersion(false));
105 }
106
107 define('GALETTE_COMPAT_VERSION', '0.9.5');
108 define('GALETTE_DB_VERSION', '0.950');
109 if (!defined('GALETTE_MODE')) {
110 define('GALETTE_MODE', \Galette\Core\Galette::MODE_PROD);
111 }
112
113 if (!isset($_COOKIE['show_galette_dashboard'])) {
114 setcookie(
115 'show_galette_dashboard',
116 true,
117 [
118 'expires' => time() + 31536000, //valid for a year
119 'path' => '/'
120 ]
121 );
122 }
123
124 if (!defined('GALETTE_DISPLAY_ERRORS')) {
125 if (GALETTE_MODE === \Galette\Core\Galette::MODE_DEV) {
126 define('GALETTE_DISPLAY_ERRORS', 1);
127 } else {
128 define('GALETTE_DISPLAY_ERRORS', 0);
129 }
130 }
131 ini_set('display_errors', (defined('GALETTE_TESTS') ? '1' : '0'));
132
133 /*------------------------------------------------------------------------------
134 Logger stuff
135 ------------------------------------------------------------------------------*/
136
137 error_reporting(E_ALL);
138 set_error_handler(function ($severity, $message, $file, $line) {
139 if (error_reporting() & $severity) {
140 throw new \ErrorException($message, 0, $severity, $file, $line);
141 }
142 });
143
144 //change default format so the 3rd param is a string for level name
145 Analog::$format = "%s - %s - %s - %s\n";
146 $galette_run_log = null;
147
148 if (!defined('GALETTE_LOG_LVL')) {
149 if (GALETTE_MODE === 'DEV') {
150 define('GALETTE_LOG_LVL', Analog::DEBUG);
151 } elseif (defined('GALETTE_TESTS')) {
152 define('GALETTE_LOG_LVL', Analog::NOTICE);
153 } else {
154 define('GALETTE_LOG_LVL', Analog::WARNING);
155 }
156 }
157
158 if (defined('GALETTE_TESTS')) {
159 $log_path = GALETTE_LOGS_PATH . 'tests.log';
160 $galette_run_log = LevelName::init(Handler\File::init($log_path));
161 } else {
162 $galette_log_var = null;
163
164 if (!$installer || ($installer && defined('GALETTE_LOGGER_CHECKED'))) {
165 //logs everything in galette log file
166 if (!isset($logfile)) {
167 //if no filename has been setted (ie. from install), set default one
168 $logfile = 'galette';
169 }
170 $log_path = GALETTE_LOGS_PATH . $logfile . '.log';
171 $galette_run_log = LevelName::init(Handler\File::init($log_path));
172 } else {
173 $galette_run_log = LevelName::init(Handler\Variable::init($galette_log_var));
174 }
175 if (!$installer) {
176 Core\Logs::cleanup();
177 }
178 }
179
180 Analog::handler($galette_run_log);
181
182 require_once GALETTE_ROOT . 'includes/functions.inc.php';
183
184 //If we're not working from tests
185 if ($installed && !defined('GALETTE_TESTS')) {
186
187 /**
188 * Database instantiation
189 */
190 $zdb = new Core\Db();
191
192 if ($zdb->checkDbVersion()) {
193
194 /**
195 * Load preferences
196 */
197 $preferences = new Core\Preferences($zdb);
198
199 /**
200 * Set the path to the current theme templates
201 */
202 define(
203 '_CURRENT_THEME_PATH',
204 GALETTE_THEMES_PATH . $preferences->pref_theme . '/'
205 );
206
207 if (!defined('GALETTE_TPL_SUBDIR')) {
208 define(
209 'GALETTE_TPL_SUBDIR',
210 'templates/' . $preferences->pref_theme . '/'
211 );
212 }
213
214 if (!defined('GALETTE_THEME')) {
215 define(
216 'GALETTE_THEME',
217 'themes/' . $preferences->pref_theme . '/'
218 );
219 }
220 } else {
221 $needs_update = true;
222 }
223 }
224
225 $plugins = new Galette\Core\Plugins();
226 //make sure plugins autoload is called before session start
227 $plugins->autoload(GALETTE_PLUGINS_PATH);