From d5b68cd146c722706663ffd30562668dbdcea4b1 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Fri, 27 Apr 2018 21:07:04 +0200 Subject: [PATCH] Add a App-Mode with defined constants - Normal Mode = 0 - Install Mode = 1 - Maintenance Mode = 2 Moved Install-Mode check to class `App` Replaced all maintenance and install checks with $a->mode checks --- include/dba.php | 1 + include/text.php | 4 ++-- index.php | 24 ++++++++---------------- src/App.php | 14 +++++++++++++- src/Core/Install.php | 6 +++--- 5 files changed, 27 insertions(+), 22 deletions(-) diff --git a/include/dba.php b/include/dba.php index b24d9b409d..1fe4cab400 100644 --- a/include/dba.php +++ b/include/dba.php @@ -93,6 +93,7 @@ class dba { // No suitable SQL driver was found. if (!self::$connected) { + self::$driver = null; self::$db = null; } $a->save_timestamp($stamp1, "network"); diff --git a/include/text.php b/include/text.php index 796acffcef..23ce0f3d78 100644 --- a/include/text.php +++ b/include/text.php @@ -637,7 +637,7 @@ function logger($msg, $level = 0) { // turn off logger in install mode if ( - $a->install_mode + $a->mode == APP_MODE_INSTALL || !dba::$connected ) { return; @@ -709,7 +709,7 @@ function dlogger($msg, $level = 0) { // turn off logger in install mode if ( - $a->install_mode + $a->mode == APP_MODE_INSTALL || !dba::$connected ) { return; diff --git a/index.php b/index.php index 2f23ea791a..d45704c937 100644 --- a/index.php +++ b/index.php @@ -31,16 +31,8 @@ BaseObject::setApp($a); // The value is set to "true" by default in boot.php $a->backend = false; -/** - * Load the configuration file which contains our DB credentials. - * Ignore errors. If the file doesn't exist or is empty, we are running in - * installation mode. - */ - -$install = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? false : true); - -// Only load config if found, don't surpress errors -if (!$install) { +// Only load config if found, don't suppress errors +if (!$a->mode == APP_MODE_INSTALL) { include ".htconfig.php"; } @@ -50,7 +42,7 @@ if (!$install) { require_once "include/dba.php"; -if (!$install) { +if (!$a->mode == APP_MODE_INSTALL) { $result = dba::connect($db_host, $db_user, $db_pass, $db_data); unset($db_host, $db_user, $db_pass, $db_data); @@ -85,7 +77,7 @@ if (!$install) { Addon::loadHooks(); Addon::callHooks('init_1'); - $maintenance = Config::get('system', 'maintenance'); + $a->mode = ((Config::get('system', 'maintenance')) ? APP_MODE_MAINTENANCE : APP_MODE_NORMAL); } $lang = L10n::getBrowserLanguage(); @@ -129,7 +121,7 @@ if ((x($_SESSION, 'language')) && ($_SESSION['language'] !== $lang)) { L10n::loadTranslationTable($lang); } -if ((x($_GET, 'zrl')) && (!$install && !$maintenance)) { +if ((x($_GET, 'zrl')) && $a->mode == APP_MODE_NORMAL) { // Only continue when the given profile link seems valid // Valid profile links contain a path with "/profile/" and no query parameters if ((parse_url($_GET['zrl'], PHP_URL_QUERY) == "") @@ -181,9 +173,9 @@ $_SESSION['last_updated'] = defaults($_SESSION, 'last_updated', []); // in install mode, any url loads install module // but we need "view" module for stylesheet -if ($install && $a->module!="view") { +if ($a->mode == APP_MODE_INSTALL && $a->module!="view") { $a->module = 'install'; -} elseif ($maintenance && $a->module!="view") { +} elseif ($a->mode == APP_MODE_MAINTENANCE && $a->module!="view") { $a->module = 'maintenance'; } else { check_url($a); @@ -342,7 +334,7 @@ if (! x($a->page, 'content')) { $a->page['content'] = ''; } -if (!$install && !$maintenance) { +if ($a->mode == APP_MODE_NORMAL) { Addon::callHooks('page_content_top', $a->page['content']); } diff --git a/src/App.php b/src/App.php index 5ff7eab04d..4ad3f62b63 100644 --- a/src/App.php +++ b/src/App.php @@ -14,6 +14,10 @@ use Detection\MobileDetect; use Exception; +define ('APP_MODE_NORMAL', 0); +define ('APP_MODE_INSTALL', 1); +define ('APP_MODE_MAINTENANCE', 2); + require_once 'boot.php'; require_once 'include/text.php'; @@ -52,7 +56,7 @@ class App public $argv; public $argc; public $module; - public $install_mode = false; + public $mode = APP_MODE_NORMAL; public $pager; public $strings; public $basepath; @@ -289,6 +293,14 @@ class App // Register template engines $this->register_template_engine('Friendica\Render\FriendicaSmartyEngine'); + /** + * Load the configuration file which contains our DB credentials. + * Ignore errors. If the file doesn't exist or is empty, we are running in + * installation mode. * + */ + $this->mode = ((file_exists('.htconfig.php') && filesize('.htconfig.php')) ? APP_MODE_NORMAL : APP_MODE_INSTALL); + + self::$a = $this; } diff --git a/src/Core/Install.php b/src/Core/Install.php index 25ecb02b4f..56e423595d 100644 --- a/src/Core/Install.php +++ b/src/Core/Install.php @@ -17,8 +17,8 @@ use DOMDocument; */ class Install extends BaseObject { - public static function setInstallMode($mode = true) { - self::getApp()->install_mode = $mode; + public static function setInstallMode() { + self::getApp()->mode = APP_MODE_INSTALL; } public static function check($phpath = 'php') @@ -328,4 +328,4 @@ class Install extends BaseObject return $errors; } -} \ No newline at end of file +}