X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFactory%2FConfigFactory.php;h=cf55640960f0c02f19191f8be52257c14329a048;hb=b5d994394e2c67d37d9a9360731d08d7112d18fe;hp=269daea8b8d5514d6a19497a912dc43d54c50506;hpb=d6a82c6c2d7befde9914fce3bd4e3e07b97ca036;p=friendica.git diff --git a/src/Factory/ConfigFactory.php b/src/Factory/ConfigFactory.php index 269daea8b8..cf55640960 100644 --- a/src/Factory/ConfigFactory.php +++ b/src/Factory/ConfigFactory.php @@ -1,52 +1,122 @@ . + * + */ namespace Friendica\Factory; +use Exception; use Friendica\Core\Config; +use Friendica\Core\Config\Cache; +use Friendica\Model\Config\Config as ConfigModel; +use Friendica\Model\Config\PConfig as PConfigModel; +use Friendica\Util\ConfigFileLoader; class ConfigFactory { /** - * @param Config\ConfigCacheLoader $loader The Config Cache loader (INI/config/.htconfig) + * The key of the $_SERVER variable to override the config directory * - * @return Config\ConfigCache + * @var string */ - public static function createCache(Config\ConfigCacheLoader $loader) + const CONFIG_DIR_ENV = 'FRIENDICA_CONFIG_DIR'; + + /** + * The Sub directory of the config-files + * + * @var string + */ + const CONFIG_DIR = 'config'; + + /** + * The Sub directory of the static config-files + * + * @var string + */ + const STATIC_DIR = 'static'; + + /** + * @param string $basePath The basepath of FRIENDICA + * @param array $serer the $_SERVER array + * + * @return ConfigFileLoader + */ + public function createConfigFileLoader(string $basePath, array $server = []) { - $configCache = new Config\ConfigCache(); - $loader->loadConfigFiles($configCache); + if (!empty($server[self::CONFIG_DIR_ENV]) && is_dir($server[self::CONFIG_DIR_ENV])) { + $configDir = $server[self::CONFIG_DIR_ENV]; + } else { + $configDir = $basePath . DIRECTORY_SEPARATOR . self::CONFIG_DIR; + } + $staticDir = $basePath . DIRECTORY_SEPARATOR . self::STATIC_DIR; + + return new ConfigFileLoader($basePath, $configDir, $staticDir); + } + + /** + * @param ConfigFileLoader $loader The Config Cache loader (INI/config/.htconfig) + * + * @return Cache + * + * @throws Exception + */ + public function createCache(ConfigFileLoader $loader, array $server = []) + { + $configCache = new Cache(); + $loader->setupCache($configCache, $server); return $configCache; } /** - * @param string $type The adapter type - * @param Config\IConfigCache $config The config cache of this adapter + * @param Cache $configCache The config cache of this adapter + * @param ConfigModel $configModel The configuration model * - * @return Config\IConfigAdapter + * @return Config\IConfig */ - public static function createConfig($type, Config\IConfigCache $config) + public function createConfig(Cache $configCache, ConfigModel $configModel) { - if ($type == 'preload') { - return new Config\PreloadConfigAdapter($config); + if ($configCache->get('system', 'config_adapter') === 'preload') { + $configuration = new Config\PreloadConfig($configCache, $configModel); } else { - return new Config\JITConfigAdapter($config); + $configuration = new Config\JitConfig($configCache, $configModel); } + + + return $configuration; } /** - * @param string $type The adapter type - * @param Config\IPConfigCache $config The config cache of this adapter - * @param int $uid The UID of the current user + * @param Cache $configCache The config cache + * @param \Friendica\Core\PConfig\Cache $pConfigCache The personal config cache + * @param PConfigModel $configModel The configuration model * - * @return Config\IPConfigAdapter + * @return \Friendica\Core\PConfig\IPConfig */ - public static function createPConfig($type, Config\IPConfigCache $config, $uid = null) + public function createPConfig(Cache $configCache, \Friendica\Core\PConfig\Cache $pConfigCache, PConfigModel $configModel) { - if ($type == 'preload') { - return new Config\PreloadPConfigAdapter($config, $uid); + if ($configCache->get('system', 'config_adapter') === 'preload') { + $configuration = new \Friendica\Core\PConfig\PreloadPConfig($pConfigCache, $configModel); } else { - return new Config\JITPConfigAdapter($config); + $configuration = new \Friendica\Core\PConfig\JitPConfig($pConfigCache, $configModel); } + + return $configuration; } }