diff --git a/src/App.php b/src/App.php index 9c65c8e379..366d20fbdb 100644 --- a/src/App.php +++ b/src/App.php @@ -166,6 +166,8 @@ class App $this->session = $this->container->create(IHandleUserSessions::class); $this->appHelper = $this->container->create(AppHelper::class); + $addonHelper = $this->container->create(AddonHelper::class); + $this->load( $request->getServerParams(), $this->container->create(DbaDefinition::class), @@ -174,6 +176,7 @@ class App $this->config, $this->profiler, $this->appHelper, + $addonHelper, ); $this->registerTemplateEngine(); @@ -182,7 +185,7 @@ class App $this->container->create(IManagePersonalConfigValues::class), $this->container->create(Page::class), $this->container->create(Nav::class), - $this->container->create(AddonHelper::class), + $addonHelper, $this->container->create(ModuleHTTPException::class), $start_time, $request @@ -212,6 +215,7 @@ class App $this->container->create(IManageConfigValues::class), $this->container->create(Profiler::class), $this->container->create(AppHelper::class), + $this->container->create(AddonHelper::class), ); $this->registerTemplateEngine(); @@ -240,6 +244,7 @@ class App $this->container->create(IManageConfigValues::class), $this->container->create(Profiler::class), $this->container->create(AppHelper::class), + $this->container->create(AddonHelper::class), ); /** @var BasePath */ @@ -318,7 +323,8 @@ class App Mode $mode, IManageConfigValues $config, Profiler $profiler, - AppHelper $appHelper + AppHelper $appHelper, + AddonHelper $addonHelper ): void { if ($config->get('system', 'ini_max_execution_time') !== false) { set_time_limit((int) $config->get('system', 'ini_max_execution_time')); @@ -340,7 +346,7 @@ class App if ($mode->has(Mode::DBAVAILABLE)) { Core\Hook::loadHooks(); - $loader = (new Config())->createConfigFileManager($appHelper->getBasePath(), $serverParams); + $loader = (new Config())->createConfigFileManager($appHelper->getBasePath(), $addonHelper->getAddonPath(), $serverParams); Core\Hook::callAll('load_config', $loader); // Hooks are now working, reload the whole definitions with hook enabled diff --git a/src/Core/Config/Factory/Config.php b/src/Core/Config/Factory/Config.php index da9daa572d..30d3e597c6 100644 --- a/src/Core/Config/Factory/Config.php +++ b/src/Core/Config/Factory/Config.php @@ -42,7 +42,7 @@ class Config * * @return Util\ConfigFileManager */ - public function createConfigFileManager(string $basePath, array $server = []): Util\ConfigFileManager + public function createConfigFileManager(string $basePath, string $addonPath, array $server = []): Util\ConfigFileManager { if (!empty($server[self::CONFIG_DIR_ENV]) && is_dir($server[self::CONFIG_DIR_ENV])) { $configDir = $server[self::CONFIG_DIR_ENV]; @@ -51,7 +51,7 @@ class Config } $staticDir = $basePath . DIRECTORY_SEPARATOR . self::STATIC_DIR; - return new Util\ConfigFileManager($basePath, $configDir, $staticDir, $server); + return new Util\ConfigFileManager($basePath, $addonPath, $configDir, $staticDir, $server); } /** diff --git a/src/Core/Config/Util/ConfigFileManager.php b/src/Core/Config/Util/ConfigFileManager.php index ecb06a7cc8..def31c4b8c 100644 --- a/src/Core/Config/Util/ConfigFileManager.php +++ b/src/Core/Config/Util/ConfigFileManager.php @@ -7,7 +7,6 @@ namespace Friendica\Core\Config\Util; -use Friendica\Core\Addon; use Friendica\Core\Config\Exception\ConfigFileException; use Friendica\Core\Config\ValueObject\Cache; @@ -46,6 +45,7 @@ class ConfigFileManager * @var string */ private $baseDir; + private string $addonDir; /** * @var string */ @@ -65,9 +65,10 @@ class ConfigFileManager * @param string $configDir * @param string $staticDir */ - public function __construct(string $baseDir, string $configDir, string $staticDir, array $server = []) + public function __construct(string $baseDir, string $addonDir, string $configDir, string $staticDir, array $server = []) { $this->baseDir = $baseDir; + $this->addonDir = $addonDir; $this->configDir = $configDir; $this->staticDir = $staticDir; $this->server = $server; @@ -160,17 +161,16 @@ class ConfigFileManager */ public function loadAddonConfig(string $name): array { - $filepath = $this->baseDir . DIRECTORY_SEPARATOR . // /var/www/html/ - Addon::DIRECTORY . DIRECTORY_SEPARATOR . // addon/ - $name . DIRECTORY_SEPARATOR . // openstreetmap/ - 'config' . DIRECTORY_SEPARATOR . // config/ - $name . ".config.php"; // openstreetmap.config.php + $filepath = $this->addonDir . DIRECTORY_SEPARATOR . // /var/www/html/addon/ + $name . DIRECTORY_SEPARATOR . // openstreetmap/ + 'config' . DIRECTORY_SEPARATOR . // config/ + $name . ".config.php"; // openstreetmap.config.php - if (file_exists($filepath)) { - return $this->loadConfigFile($filepath); - } else { + if (!file_exists($filepath)) { return []; } + + return $this->loadConfigFile($filepath); } /** diff --git a/src/Module/Admin/Summary.php b/src/Module/Admin/Summary.php index 72ce10e418..282c15e4bc 100644 --- a/src/Module/Admin/Summary.php +++ b/src/Module/Admin/Summary.php @@ -26,7 +26,8 @@ class Summary extends BaseAdmin { parent::content(); - $basePath = DI::appHelper()->getBasePath(); + $basePath = DI::appHelper()->getBasePath(); + $addonPath = DI::addonHelper()->getAddonPath(); // are there MyISAM tables in the DB? If so, trigger a warning message $warningtext = []; @@ -117,7 +118,7 @@ class Summary extends BaseAdmin } // check legacy basepath settings - $configLoader = (new Config())->createConfigFileManager($basePath, $_SERVER); + $configLoader = (new Config())->createConfigFileManager($basePath, $addonPath, $_SERVER); $configCache = new Cache(); $configLoader->setupCache($configCache); $confBasepath = $configCache->get('system', 'basepath'); diff --git a/static/dependencies.config.php b/static/dependencies.config.php index d2de70d208..6e6f7ecf52 100644 --- a/static/dependencies.config.php +++ b/static/dependencies.config.php @@ -87,6 +87,7 @@ return (function(string $basepath, array $getVars, array $serverVars, array $coo 'call' => [ ['createConfigFileManager', [ $basepath, + $basepath . '/addon', $serverVars, ], Dice::CHAIN_CALL], ], diff --git a/tests/Util/CreateDatabaseTrait.php b/tests/Util/CreateDatabaseTrait.php index c188ee8f94..bae22a9e79 100644 --- a/tests/Util/CreateDatabaseTrait.php +++ b/tests/Util/CreateDatabaseTrait.php @@ -32,7 +32,12 @@ trait CreateDatabaseTrait return $this->dba; } - $configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/'); + $configFileManager = new ConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + $this->root->url() . '/config', + $this->root->url() . '/static' + ); $config = new ReadOnlyFileConfig(new Cache([ 'database' => [ 'disable_pdo' => true diff --git a/tests/src/Core/Config/Cache/ConfigFileManagerTest.php b/tests/src/Core/Config/Cache/ConfigFileManagerTest.php index e5b1fc623d..098f8c3e74 100644 --- a/tests/src/Core/Config/Cache/ConfigFileManagerTest.php +++ b/tests/src/Core/Config/Cache/ConfigFileManagerTest.php @@ -34,6 +34,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -61,6 +62,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -90,6 +92,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -127,6 +130,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -163,6 +167,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -217,6 +222,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -254,6 +260,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -288,6 +295,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -322,6 +330,7 @@ class ConfigFileManagerTest extends MockedTestCase $configFileLoader = new ConfigFileManager( $this->root->url(), + $this->root->url() . DIRECTORY_SEPARATOR . 'addon', $this->root->url() . DIRECTORY_SEPARATOR . Config::CONFIG_DIR, $this->root->url() . DIRECTORY_SEPARATOR . Config::STATIC_DIR ); @@ -341,7 +350,11 @@ class ConfigFileManagerTest extends MockedTestCase { $this->delConfigFile('local.config.php'); - $configFileManager = (new Config())->createConfigFileManager($this->root->url(), ['FRIENDICA_CONFIG_DIR' => '/a/wrong/dir/']); + $configFileManager = (new Config())->createConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + ['FRIENDICA_CONFIG_DIR' => '/a/wrong/dir/'], + ); $configCache = new Cache(); $configFileManager->setupCache($configCache); @@ -367,10 +380,11 @@ class ConfigFileManagerTest extends MockedTestCase ->at($this->root->getChild('config2')) ->setContent(file_get_contents($fileDir . 'B.config.php')); - $configFileManager = (new Config())->createConfigFileManager($this->root->url(), - [ - 'FRIENDICA_CONFIG_DIR' => $this->root->getChild('config2')->url(), - ]); + $configFileManager = (new Config())->createConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + ['FRIENDICA_CONFIG_DIR' => $this->root->getChild('config2')->url()], + ); $configCache = new Cache(); $configFileManager->setupCache($configCache); @@ -389,11 +403,12 @@ class ConfigFileManagerTest extends MockedTestCase ->at($this->root->getChild('config')) ->setContent(''); - $configFileManager = (new Config())->createConfigFileManager($this->root->url()); + $configFileManager = (new Config())->createConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + ); $configCache = new Cache(); $configFileManager->setupCache($configCache); - - self::assertEquals(1,1); } } diff --git a/tests/src/Core/Config/ConfigTest.php b/tests/src/Core/Config/ConfigTest.php index 83dbaa0af0..079c39eb66 100644 --- a/tests/src/Core/Config/ConfigTest.php +++ b/tests/src/Core/Config/ConfigTest.php @@ -56,7 +56,12 @@ class ConfigTest extends DatabaseTestCase parent::setUp(); $this->configCache = new Cache(); - $this->configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/'); + $this->configFileManager = new ConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + $this->root->url() . '/config', + $this->root->url() . '/static' + ); } /** @@ -608,7 +613,13 @@ class ConfigTest extends DatabaseTestCase $this->setConfigFile('static' . DIRECTORY_SEPARATOR . 'env.config.php', true); $this->loadDirectFixture($this->configToDbArray($data), $this->getDbInstance()); - $configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/', $server); + $configFileManager = new ConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + $this->root->url() . '/config', + $this->root->url() . '/static', + $server + ); $configFileManager->setupCache($this->configCache); $config = new DatabaseConfig($this->getDbInstance(), $this->configCache); diff --git a/tests/src/Core/Config/ConfigTransactionTest.php b/tests/src/Core/Config/ConfigTransactionTest.php index 5c704b7600..5e1435cf36 100644 --- a/tests/src/Core/Config/ConfigTransactionTest.php +++ b/tests/src/Core/Config/ConfigTransactionTest.php @@ -30,7 +30,12 @@ class ConfigTransactionTest extends FixtureTestCase { parent::setUp(); - $this->configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/'); + $this->configFileManager = new ConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + $this->root->url() . '/config', + $this->root->url() . '/static' + ); } public function dataTests(): array diff --git a/tests/src/Core/Storage/Repository/StorageManagerTest.php b/tests/src/Core/Storage/Repository/StorageManagerTest.php index ac74274c03..4e56c094c1 100644 --- a/tests/src/Core/Storage/Repository/StorageManagerTest.php +++ b/tests/src/Core/Storage/Repository/StorageManagerTest.php @@ -64,7 +64,10 @@ class StorageManagerTest extends DatabaseTestCase $this->database = $this->getDbInstance(); $configFactory = new Config(); - $configFileManager = $configFactory->createConfigFileManager($this->root->url()); + $configFileManager = $configFactory->createConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + ); $configCache = $configFactory->createCache($configFileManager); $this->config = new \Friendica\Core\Config\Model\DatabaseConfig($this->database, $configCache); diff --git a/tests/src/Database/DatabaseTest.php b/tests/src/Database/DatabaseTest.php index c889d6d7d1..5e01ed79da 100644 --- a/tests/src/Database/DatabaseTest.php +++ b/tests/src/Database/DatabaseTest.php @@ -32,7 +32,12 @@ class DatabaseTest extends FixtureTestCase parent::setUp(); $this->configCache = new Cache(); - $this->configFileManager = new ConfigFileManager($this->root->url(), $this->root->url() . '/config/', $this->root->url() . '/static/'); + $this->configFileManager = new ConfigFileManager( + $this->root->url(), + $this->root->url() . '/addon', + $this->root->url() . '/config', + $this->root->url() . '/static' + ); } /**