| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- namespace ModulesGarden\Servers\KerioEmail\Core\App\Packages;
- abstract class BasePackageConfiguration
- {
- protected $configuration = null;
- protected $appConfigFound = false;
- static $protectedConfigOptions = [
- PackageConfigurationConst::VERSION,
- PackageConfigurationConst::PACKAGE_NAME
- ];
- public function __get($key)
- {
- $this->loadConfiguration();
- if(isset($this->configuration[$key]))
- {
- return $this->configuration[$key];
- }
- return null;
- }
- public function getConfig()
- {
- $this->loadConfiguration();
- return $this->configuration;
- }
- public function getName()
- {
- $this->loadConfiguration();
- return $this->configuration[PackageConfigurationConst::PACKAGE_NAME];
- }
- public function loadConfiguration($forceReload = false)
- {
- if (!($this->configuration === null || $forceReload))
- {
- return;
- }
- $config = $this::CONFIGURATION;
- $packageName = $config[PackageConfigurationConst::PACKAGE_NAME];
- $appPackageConfig = $this->getAppPackageConfig($packageName);
- $merged = array_merge($config, $appPackageConfig);
- foreach (self::$protectedConfigOptions as $protectedOption)
- {
- $merged[$protectedOption] = $config[$protectedOption];
- }
- $this->configuration = $merged;
- }
- public function getAppPackageConfig($packageName = null)
- {
- $appConfigClassName = '\ModulesGarden\Servers\KerioEmail\App\Config\Packages\\' . $packageName;
- if (!class_exists($appConfigClassName) || !is_subclass_of($appConfigClassName, AppPackageConfiguration::class)
- || !defined($appConfigClassName . '::APP_CONFIGURATION'))
- {
- return [];
- }
- $this->appConfigFound = true;
- return $appConfigClassName::APP_CONFIGURATION;
- }
- }
|