]> git.mxchange.org Git - friendica.git/commitdiff
Refactoring ConfigCacheLoader methods
authorPhilipp Holzer <admin@philipp.info>
Tue, 5 Feb 2019 21:27:57 +0000 (22:27 +0100)
committerPhilipp Holzer <admin@philipp.info>
Tue, 5 Feb 2019 21:27:57 +0000 (22:27 +0100)
bin/auth_ejabberd.php
bin/console.php
bin/daemon.php
bin/worker.php
index.php
src/App.php
src/Core/Config/ConfigCache.php
src/Core/Config/ConfigCacheLoader.php
src/Util/BasePath.php

index af728f218c2b36c2d2aa5de56326d627a072c8fd..11df438952a06e96ee700a7d6345cba1c90007d8 100755 (executable)
@@ -54,7 +54,7 @@ chdir($directory);
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$basedir = BasePath::create(dirname(__DIR__));
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
 $configLoader = new Config\ConfigCacheLoader($basedir);
 $config = Factory\ConfigFactory::createCache($configLoader);
 $logger = Factory\LoggerFactory::create('auth_ejabberd', $config);
index e7b1786de74c580a141c54d9a1bec9216238929f..9061824d875b0be10f8f1fad8aa94c1f883c55a0 100755 (executable)
@@ -7,7 +7,7 @@ use Friendica\Core\Config;
 use Friendica\Factory;
 use Friendica\Util\BasePath;
 
-$basedir = BasePath::create(dirname(__DIR__));
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
 $configLoader = new Config\ConfigCacheLoader($basedir);
 $config = Factory\ConfigFactory::createCache($configLoader);
 $logger = Factory\LoggerFactory::create('console', $config);
index 7e71571cb3be3cf5fd94ac28d05e861fcdbe6a6b..5c014a92702429d58af4dfab1ac163597d34b95d 100755 (executable)
@@ -33,7 +33,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$basedir = BasePath::create(dirname(__DIR__));
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
 $configLoader = new Config\ConfigCacheLoader($basedir);
 $config = Factory\ConfigFactory::createCache($configLoader);
 $logger = Factory\LoggerFactory::create('daemon', $config);
index 61fdbed544c9ab5899c12fcd94dc90ecff24cab4..553e9849774fe307e5f1535b9c090809ce043e80 100755 (executable)
@@ -31,7 +31,7 @@ if (!file_exists("boot.php") && (sizeof($_SERVER["argv"]) != 0)) {
 
 require dirname(__DIR__) . '/vendor/autoload.php';
 
-$basedir = BasePath::create(dirname(__DIR__));
+$basedir = BasePath::create(dirname(__DIR__), $_SERVER);
 $configLoader = new Config\ConfigCacheLoader($basedir);
 $config = Factory\ConfigFactory::createCache($configLoader);
 $logger = Factory\LoggerFactory::create('worker', $config);
index 11b7879991d3fe67394abe628050cb87de1ea068..7e7396785f5993c7b17f7a1e74870b7be5b4afcd 100644 (file)
--- a/index.php
+++ b/index.php
@@ -15,7 +15,7 @@ if (!file_exists(__DIR__ . '/vendor/autoload.php')) {
 
 require __DIR__ . '/vendor/autoload.php';
 
-$basedir = BasePath::create(__DIR__);
+$basedir = BasePath::create(__DIR__, $_SERVER);
 $configLoader = new Config\ConfigCacheLoader($basedir);
 $config = Factory\ConfigFactory::createCache($configLoader);
 $logger = Factory\LoggerFactory::create('index', $config);
index 5d557738da7c1ae219c59c36aa054f003be0e842..38d41cfcf837ae1831e36ff067c26d05cefeba2b 100644 (file)
@@ -387,7 +387,7 @@ class App
                        Core\Hook::loadHooks();
                        $loader = new ConfigCacheLoader($this->basePath);
                        Core\Hook::callAll('load_config', $loader);
-                       $this->config->loadConfigArray($loader->loadAddonConfig(), true);
+                       $this->config->loadConfigArray($loader->loadCoreConfig('addon'), true);
                }
 
                $this->loadDefaultTimezone();
index dba2a9dd119062ef773776d066503928aefc2bd4..e03d3525666464a849e5c09e53f4179b3abdfb05 100644 (file)
@@ -11,24 +11,14 @@ namespace Friendica\Core\Config;
  */
 class ConfigCache implements IConfigCache, IPConfigCache
 {
-       /**
-        * NEVER, EVER use this public config array outside of the class
-        * It is only public due to backward compatibility to .htconfig.php
-        *
-        * @var array The cached config array
-        */
-       public $config;
+       private $config;
 
        /**
         * @param array $config    A initial config array
         */
        public function __construct(array $config = [])
        {
-               $this->config = [];
-
-               if (isset($config)) {
-                       $this->loadConfigArray($config, true);
-               }
+               $this->config = $config;
        }
 
        /**
index 58647e5aec032474eb795b5df8e1b9c9865acabb..55213493762710329cf47ccf5404dd6fe79f9f4a 100644 (file)
@@ -40,8 +40,8 @@ class ConfigCacheLoader
                // Setting at least the basepath we know
                $config->set('system', 'basepath', $this->baseDir);
 
-               $config->loadConfigArray($this->loadConfigFile('defaults'));
-               $config->loadConfigArray($this->loadConfigFile('settings'));
+               $config->loadConfigArray($this->loadCoreConfig('defaults'));
+               $config->loadConfigArray($this->loadCoreConfig('settings'));
 
                // Legacy .htconfig.php support
                if (file_exists($this->baseDir  . '/.htpreconfig.php')) {
@@ -82,16 +82,11 @@ class ConfigCacheLoader
                        }
                }
 
-               if (file_exists($this->baseDir . '/config/local.config.php')) {
-                       $config->loadConfigArray($this->loadConfigFile('local'), true);
-               } elseif (file_exists($this->baseDir . '/config/local.ini.php')) {
-                       $config->loadConfigArray($this->loadINIConfigFile('local'), true);
-               }
+               $config->loadConfigArray($this->loadCoreConfig('local'), true);
        }
 
        /**
-        * Tries to load the specified legacy configuration file into the App->config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
+        * Tries to load the specified legacy configuration file into the ConfigCache (@see ConfigCache ).
         *
         * @deprecated since version 2018.12
         * @param string $filename
@@ -119,8 +114,7 @@ class ConfigCacheLoader
        }
 
        /**
-        * Tries to load the specified configuration file into the App->config array.
-        * Doesn't overwrite previously set values by default to prevent default config files to supersede DB Config.
+        * Tries to load the specified configuration file and returns the config array.
         *
         * The config format is PHP array and the template for configuration files is the following:
         *
@@ -130,19 +124,13 @@ class ConfigCacheLoader
         *      ],
         * ];
         *
-        * @param string $filename
-        * @param bool   $addon     True, if a config for an addon should be loaded
-        * @return array The configuration
-        * @throws \Exception
+        * @param  string $filepath The filepath of the
+        * @return array The config array0
+        *
+        * @throws \Exception if the config cannot get loaded.
         */
-       public function loadConfigFile($filename, $addon = false)
+       private function loadConfigFile($filepath)
        {
-               if ($addon) {
-                       $filepath = $this->baseDir . Addon::DIRECTORY . $filename . self::SUBDIRECTORY . $filename . ".config.php";
-               } else {
-                       $filepath = $this->configDir . $filename . ".config.php";
-               }
-
                if (!file_exists($filepath)) {
                        throw new \Exception('Error loading non-existent config file ' . $filepath);
                }
@@ -157,22 +145,43 @@ class ConfigCacheLoader
        }
 
        /**
-        * Loads addons configuration files
+        * Tries to load the specified core-configuration and returns the config array.
+        *
+        * @param string $name The name of the configuration
+        *
+        * @return array The config array (empty if no config found)
+        *
+        * @throws \Exception if the configuration file isn't readable
+        */
+       public function loadCoreConfig($name)
+       {
+               if (file_exists($this->configDir . $name . '.config.php')) {
+                       return $this->loadConfigFile($this->configDir . $name . '.config.php');
+               } elseif (file_exists($this->configDir . $name . '.ini.php')) {
+                       return $this->loadINIConfigFile($this->configDir . $name . '.ini.php');
+               } else {
+                       return [];
+               }
+       }
+
+       /**
+        * Tries to load the specified addon-configuration and returns the config array.
         *
         * First loads all activated addons default configuration through the load_config hook, then load the local.config.php
         * again to overwrite potential local addon configuration.
         *
-        * @return array The config array
+        * @param string $name The name of the configuration
         *
-        * @throws \Exception
+        * @return array The config array (empty if no config found)
+        *
+        * @throws \Exception if the configuration file isn't readable
         */
-       public function loadAddonConfig()
+       public function loadAddonConfig($name)
        {
-               // Load the local addon config file to overwritten default addon config values
-               if (file_exists($this->configDir . 'addon.config.php')) {
-                       return $this->loadConfigFile('addon');
-               } elseif (file_exists($this->configDir . 'addon.ini.php')) {
-                       return $this->loadINIConfigFile('addon');
+               $filepath = $this->baseDir . Addon::DIRECTORY . $name . self::SUBDIRECTORY . $name . ".config.php";
+
+               if (file_exists($filepath)) {
+                       return $this->loadConfigFile($filepath);
                } else {
                        return [];
                }
index 56b0fa1fe9f78685c3e28a76bc0dc672c6195618..fecc63a2ab60e2a6c28f21306b822d74a67db66e 100644 (file)
@@ -12,23 +12,24 @@ class BasePath
         * It first checks for the internal variable, then for DOCUMENT_ROOT and
         * finally for PWD
         *
-        * @param string|null $basepath
+        * @param string|null $basePath The default base path
+        * @param array       $server   server arguments
         *
         * @return string
         *
         * @throws \Exception if directory isn't usable
         */
-       public static function create($basepath)
+       public static function create($basePath, $server = [])
        {
-               if (!$basepath && !empty($_SERVER['DOCUMENT_ROOT'])) {
-                       $basepath = $_SERVER['DOCUMENT_ROOT'];
+               if (!$basePath && !empty($server['DOCUMENT_ROOT'])) {
+                       $basePath = $server['DOCUMENT_ROOT'];
                }
 
-               if (!$basepath && !empty($_SERVER['PWD'])) {
-                       $basepath = $_SERVER['PWD'];
+               if (!$basePath && !empty($server['PWD'])) {
+                       $basePath = $server['PWD'];
                }
 
-               return self::getRealPath($basepath);
+               return self::getRealPath($basePath);
        }
 
        /**
@@ -52,7 +53,6 @@ class BasePath
                }
        }
 
-
        /**
         * @brief Checks if a given directory is usable for the system
         *