From: Philipp Holzer <admin@philipp.info>
Date: Fri, 27 Apr 2018 19:07:04 +0000 (+0200)
Subject: Add a App-Mode with defined constants
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d5b68cd146c722706663ffd30562668dbdcea4b1;p=friendica.git

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
---

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
+}