From 3c6eabaef83668e33f6c0cf749de656739aaa0e4 Mon Sep 17 00:00:00 2001 From: Yuri Kuznetsov Date: Wed, 4 Aug 2021 20:57:11 +0300 Subject: [PATCH] install config fix --- application/Espo/Core/Utils/Config.php | 35 +++--------- install/core/Installer.php | 74 +++++++++++++++----------- 2 files changed, 48 insertions(+), 61 deletions(-) diff --git a/application/Espo/Core/Utils/Config.php b/application/Espo/Core/Utils/Config.php index 59c4f53b1a..04040341ab 100644 --- a/application/Espo/Core/Utils/Config.php +++ b/application/Espo/Core/Utils/Config.php @@ -40,14 +40,12 @@ use E_USER_DEPRECATED; */ class Config { - private $defaultConfigPath = 'application/Espo/Resources/defaults/config.php'; - - private $systemConfigPath = 'application/Espo/Resources/defaults/systemConfig.php'; - - protected $configPath = 'data/config.php'; + private $configPath = 'data/config.php'; private $internalConfigPath = 'data/config-internal.php'; + private $systemConfigPath = 'application/Espo/Resources/defaults/systemConfig.php'; + private $cacheTimestamp = 'cacheTimestamp'; protected $associativeArrayAttributeList = [ @@ -275,17 +273,6 @@ class Config return $result; } - /** - * Get system default config parameters. - * - * @deprecated - * @todo Move to `Espo\Core\Utils\Config\ConfigDefaults`. - */ - public function getDefaults(): array - { - return $this->fileManager->getPhpContents($this->defaultConfigPath); - } - private function isLoaded(): bool { return isset($this->data) && !empty($this->data); @@ -304,13 +291,11 @@ class Config private function load(): void { - $configPath = $this->fileManager->isFile($this->configPath) ? - $this->configPath : - $this->defaultConfigPath; - - $data = $this->fileManager->getPhpContents($configPath); $systemData = $this->fileManager->getPhpContents($this->systemConfigPath); + $data = $this->fileManager->isFile($this->configPath) ? + $this->fileManager->getPhpContents($this->configPath) : []; + $internalData = $this->fileManager->isFile($this->internalConfigPath) ? $this->fileManager->getPhpContents($this->internalConfigPath) : []; @@ -322,14 +307,6 @@ class Config $this->fileManager->setConfig($this); } - /** - * Get all parameters. - */ - public function getAllData(): stdClass - { - return (object) $this->getData(); - } - /** * Get all parameters excluding those that are set in the internal config. */ diff --git a/install/core/Installer.php b/install/core/Installer.php index 1d48297211..3f54203af8 100644 --- a/install/core/Installer.php +++ b/install/core/Installer.php @@ -49,25 +49,23 @@ use Espo\Core\ORM\EntityManager; class Installer { - protected $app = null; + private $app = null; - protected $language = null; + private $language = null; - protected $systemHelper = null; + private $systemHelper = null; - protected $databaseHelper = null; + private $databaseHelper = null; - protected $installerConfig; + private $installerConfig; - protected $isAuth = false; - - protected $permissionError; + private $isAuth = false; private $passwordHash; - protected $defaultSettings; + private $defaultSettings; - protected $permittedSettingList = [ + private $permittedSettingList = [ 'dateFormat', 'timeFormat', 'timeZone', @@ -102,7 +100,7 @@ class Installer $this->databaseHelper = new DatabaseHelper($this->getConfig()); } - protected function initialize(): void + private function initialize(): void { $fileManager = new ConfigFileManager(); @@ -116,10 +114,22 @@ class Installer $config->update(); } - $configData = get_object_vars($config->getAllData()); - $defaultData = $config->getDefaults(); + $defaultData = include('application/Espo/Resources/defaults/config.php'); - $configWriterFileManager = new ConfigWriterFileManager(null, $configData['defaultPermissions'] ?? null); + $configData = []; + + foreach (array_keys($defaultData) as $key) { + if (!$config->has($key)) { + continue; + } + + $configData[$key] = $config->get($key); + } + + $configWriterFileManager = new ConfigWriterFileManager( + null, + $config->get('defaultPermissions') ?? null + ); /** @var InjectableFactory $injectableFactory */ $injectableFactory = (new Application())->getContainer()->get('injectableFactory'); @@ -143,12 +153,12 @@ class Installer $this->app = new Application(); } - protected function getContainer(): Container + private function getContainer(): Container { return $this->app->getContainer(); } - protected function getEntityManager(): EntityManager + private function getEntityManager(): EntityManager { return $this->getContainer()->get('entityManager'); } @@ -168,27 +178,27 @@ class Installer return $this->app->getContainer()->get('injectableFactory')->create(ConfigWriter::class); } - protected function getSystemHelper() + private function getSystemHelper() { return $this->systemHelper; } - protected function getDatabaseHelper() + private function getDatabaseHelper() { return $this->databaseHelper; } - protected function getInstallerConfig() + private function getInstallerConfig() { return $this->installerConfig; } - protected function getFileManager(): FileManager + private function getFileManager(): FileManager { return $this->app->getContainer()->get('fileManager'); } - protected function getPasswordHash(): PasswordHash + private function getPasswordHash(): PasswordHash { if (!isset($this->passwordHash)) { $config = $this->getConfig(); @@ -205,7 +215,7 @@ class Installer return $this->getConfig()->get('version'); } - protected function auth() + private function auth() { if (!$this->isAuth) { $this->app->setupSystemUser(); @@ -227,7 +237,7 @@ class Installer return $this->app->isInstalled(); } - protected function getLanguage(): Language + private function getLanguage(): Language { if (!isset($this->language)) { try { @@ -256,7 +266,7 @@ class Installer return $languageList; } - protected function getCurrencyList(): array + private function getCurrencyList(): array { return $this->getMetadata()->get('app.currency.list'); } @@ -409,7 +419,7 @@ class Installer return $result; } - protected function createRecords() + private function createRecords() { $records = include('install/core/afterInstall/records.php'); @@ -424,7 +434,7 @@ class Installer return $result; } - protected function createRecord($entityName, $data) + private function createRecord($entityName, $data) { if (isset($data['id'])) { @@ -500,7 +510,7 @@ class Installer return $result; } - protected function saveAdminPreferences($preferences) + private function saveAdminPreferences($preferences) { $permittedSettingList = [ 'dateFormat', @@ -600,7 +610,7 @@ class Installer return $this->defaultSettings; } - protected function normalizeSettingParams(array $params) + private function normalizeSettingParams(array $params) { $defaultSettings = $this->getDefaultSettings(); @@ -654,7 +664,7 @@ class Installer return $normalizedParams; } - protected function translateSetting($name, array $settingDefs) + private function translateSetting($name, array $settingDefs) { if (isset($settingDefs['options'])) { $optionLabel = $this->getLanguage() @@ -684,7 +694,7 @@ class Installer return $this->getContainer()->get('scheduledJob')->getSetupMessage(); } - protected function executeQueries() + private function executeQueries() { $queries = include('install/core/afterInstall/queries.php'); @@ -707,12 +717,12 @@ class Installer return $result; } - protected function executeFinalScript() + private function executeFinalScript() { $this->prepareDummyJob(); } - protected function prepareDummyJob() + private function prepareDummyJob() { $scheduledJob = $this->getEntityManager() ->getRepository('ScheduledJob')