]> git.mxchange.org Git - friendica.git/commitdiff
Move AppMode
authorPhilipp Holzer <admin@philipp.info>
Thu, 14 Mar 2019 01:36:49 +0000 (02:36 +0100)
committerHypolite Petovan <hypolite@mrpetovan.com>
Sat, 23 Mar 2019 03:22:32 +0000 (23:22 -0400)
src/App.php
src/Core/Config/Cache/ConfigCacheLoader.php
src/Factory/DependencyFactory.php
tests/DatabaseTest.php
tests/include/ApiTest.php
tests/src/Database/DBATest.php
tests/src/Database/DBStructureTest.php

index b5ad6832197a536eaaeab998375321c10567e9e1..ff201e42ec0723fd5b044904c10cf54806486072 100644 (file)
@@ -165,6 +165,16 @@ class App
                return $this->profiler;
        }
 
+       /**
+        * Returns the Mode of the Application
+        *
+        * @return App\Mode The Application Mode
+        */
+       public function getMode()
+       {
+               return $this->mode;
+       }
+
        /**
         * Register a stylesheet file path to be included in the <head> tag of every page.
         * Inclusion is done in App->initHead().
@@ -208,19 +218,21 @@ class App
         *
         * @param string           $basePath   The basedir of the app
         * @param Configuration    $config    The Configuration
+        * @param App\Mode         $mode      The mode of this Friendica app
         * @param LoggerInterface  $logger    The current app logger
         * @param Profiler         $profiler  The profiler of this application
         * @param bool             $isBackend Whether it is used for backend or frontend (Default true=backend)
         *
         * @throws Exception if the Basepath is not usable
         */
-       public function __construct($basePath, Configuration $config, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
+       public function __construct($basePath, Configuration $config, App\Mode $mode, LoggerInterface $logger, Profiler $profiler, $isBackend = true)
        {
                BaseObject::setApp($this);
 
                $this->logger   = $logger;
                $this->config   = $config;
                $this->profiler = $profiler;
+               $this->mode     = $mode;
                $cfgBasePath = $this->config->get('system', 'basepath');
                $this->basePath = !empty($cfgBasePath) ? $cfgBasePath : $basePath;
 
@@ -234,8 +246,6 @@ class App
 
                $this->profiler->reset();
 
-               $this->mode = new App\Mode($this->basePath);
-
                $this->reload();
 
                set_time_limit(0);
@@ -335,22 +345,6 @@ class App
                Core\Renderer::registerTemplateEngine('Friendica\Render\FriendicaSmartyEngine');
        }
 
-       /**
-        * Returns the Mode of the Application
-        *
-        * @return App\Mode The Application Mode
-        *
-        * @throws InternalServerErrorException when the mode isn't created
-        */
-       public function getMode()
-       {
-               if (empty($this->mode)) {
-                       throw new InternalServerErrorException('Mode of the Application is not defined');
-               }
-
-               return $this->mode;
-       }
-
        /**
         * Reloads the whole app instance
         */
@@ -369,6 +363,7 @@ class App
                                $this->config->get('rendertime', 'callstack', false));
 
                        Core\Hook::loadHooks();
+                       $loader = new ConfigCacheLoader($this->basePath, $this->mode);
                        Core\Hook::callAll('load_config', $loader);
                }
 
index 55f18681ce7e002a01068fcb676a60f9fc80256a..9e06d8fb892e68a4fb361c5e2eec11afca0933f2 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace Friendica\Core\Config\Cache;
 
+use Friendica\App;
 use Friendica\Core\Addon;
 
 /**
@@ -23,8 +24,14 @@ class ConfigCacheLoader
        private $baseDir;
        private $configDir;
 
-       public function __construct($baseDir)
+       /**
+        * @var App\Mode
+        */
+       private $appMode;
+
+       public function __construct($baseDir, App\Mode $mode)
        {
+               $this->appMode = $mode;
                $this->baseDir = $baseDir;
                $this->configDir = $baseDir . DIRECTORY_SEPARATOR . self::SUBDIRECTORY;
        }
@@ -34,8 +41,12 @@ class ConfigCacheLoader
         *
         * First loads the default value for all the configuration keys, then the legacy configuration files, then the
         * expected local.config.php
+        *
+        * @param IConfigCache The config cache to load to
+        *
+        * @throws \Exception
         */
-       public function loadConfigFiles(ConfigCache $config)
+       public function loadConfigFiles(IConfigCache $config)
        {
                $config->load($this->loadCoreConfig('defaults'));
                $config->load($this->loadCoreConfig('settings'));
@@ -44,6 +55,12 @@ class ConfigCacheLoader
                $config->load($this->loadLegacyConfig('htconfig'), true);
 
                $config->load($this->loadCoreConfig('local'), true);
+
+               // In case of install mode, add the found basepath (because there isn't a basepath set yet
+               if ($this->appMode->isInstall()) {
+                       // Setting at least the basepath we know
+                       $config->set('system', 'basepath', $this->baseDir);
+               }
        }
 
        /**
index 67384452e92f93b028a38f46f12a9671ea2fbab9..265dca88ef7ba51db7702e4d3f792148c75a84b0 100644 (file)
@@ -23,7 +23,8 @@ class DependencyFactory
        public static function setUp($channel, $directory, $isBackend = true)
        {
                $basePath = BasePath::create($directory, $_SERVER);
-               $configLoader = new Cache\ConfigCacheLoader($basePath);
+               $mode = new App\Mode($basePath);
+               $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
                $configCache = Factory\ConfigFactory::createCache($configLoader);
                $profiler = Factory\ProfilerFactory::create($configCache);
                Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
@@ -31,8 +32,8 @@ class DependencyFactory
                // needed to call PConfig::init()
                Factory\ConfigFactory::createPConfig($configCache);
                $logger = Factory\LoggerFactory::create($channel, $config, $profiler);
-               Factory\LoggerFactory::createDev($channel, $config);
+               Factory\LoggerFactory::createDev($channel, $config, $profiler);
 
-               return new App($basePath, $config, $logger, $profiler, $isBackend);
+               return new App($basePath, $config, $mode, $logger, $profiler, $isBackend);
        }
 }
index 3ff4c6fe14f529aa00066dc466092ea883e42fe8..6a64b28816bdd138f14d0cf3d3677a6e6a77ead4 100644 (file)
@@ -5,6 +5,7 @@
 
 namespace Friendica\Test;
 
+use Friendica\App;
 use Friendica\Core\Config\Cache;
 use Friendica\Database\DBA;
 use Friendica\Factory;
@@ -41,7 +42,8 @@ abstract class DatabaseTest extends MockedTest
                }
 
                $basePath = BasePath::create(dirname(__DIR__));
-               $configLoader = new Cache\ConfigCacheLoader($basePath);
+               $mode = new App\Mode($basePath);
+               $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
                $config = Factory\ConfigFactory::createCache($configLoader);
 
                $profiler = \Mockery::mock(Profiler::class);
index 394e822201dfd679fe1f88d8c90f108ab44cf887..3d7e5bcfb655ef066d7e789342d447c4cf9d05f6 100644 (file)
@@ -37,14 +37,15 @@ class ApiTest extends DatabaseTest
        public function setUp()
        {
                $basePath = BasePath::create(dirname(__DIR__) . '/../');
-               $configLoader = new Cache\ConfigCacheLoader($basePath);
+               $mode = new App\Mode($basePath);
+               $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
                $configCache = Factory\ConfigFactory::createCache($configLoader);
                $profiler = Factory\ProfilerFactory::create($configCache);
                Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
                Factory\ConfigFactory::createPConfig($configCache);
                $logger = Factory\LoggerFactory::create('test', $config, $profiler);
-               $this->app = new App($basePath, $config, $logger, $profiler, false);
+               $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
 
                parent::setUp();
 
index 1408fc37bdd20d8dd32af1c9c3ff3b09e1e15f10..e638e2740568ca4978ecda19c8b68ed1193ba85b 100644 (file)
@@ -14,14 +14,15 @@ class DBATest extends DatabaseTest
        public function setUp()
        {
                $basePath = BasePath::create(dirname(__DIR__) . '/../../');
-               $configLoader = new Cache\ConfigCacheLoader($basePath);
+               $mode = new App\Mode($basePath);
+               $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
                $configCache = Factory\ConfigFactory::createCache($configLoader);
                $profiler = Factory\ProfilerFactory::create($configCache);
                Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
                Factory\ConfigFactory::createPConfig($configCache);
                $logger = Factory\LoggerFactory::create('test', $config, $profiler);
-               $this->app = new App($basePath, $config, $logger, $profiler, false);
+               $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
 
                parent::setUp();
 
index 0efecac234f5e0773d5b77659962df125b1ca32d..34f659b51ce21fb088cf5fa70c7f52547cee2a4f 100644 (file)
@@ -14,14 +14,15 @@ class DBStructureTest extends DatabaseTest
        public function setUp()
        {
                $basePath = BasePath::create(dirname(__DIR__) . '/../../');
-               $configLoader = new Cache\ConfigCacheLoader($basePath);
+               $mode = new App\Mode($basePath);
+               $configLoader = new Cache\ConfigCacheLoader($basePath, $mode);
                $configCache = Factory\ConfigFactory::createCache($configLoader);
                $profiler = Factory\ProfilerFactory::create($configCache);
                Factory\DBFactory::init($basePath, $configCache, $profiler, $_SERVER);
                $config = Factory\ConfigFactory::createConfig($configCache);
                Factory\ConfigFactory::createPConfig($configCache);
                $logger = Factory\LoggerFactory::create('test', $config, $profiler);
-               $this->app = new App($basePath, $config, $logger, $profiler, false);
+               $this->app = new App($basePath, $config, $mode, $logger, $profiler, false);
 
                parent::setUp();
        }