public function saveParameters($moduleGroup = null, $moduleName = null, $allowCreateLanguage = true) { global $parametersMod; $this->languageId = Db::getLanguageId($this->cachedLanguage['code']); if ($this->languageId === false) { if ($allowCreateLanguage) { $this->languageId = Db::insertLanguage($this->cachedLanguage); \Modules\standard\languages\Db::createEmptyTranslations($this->languageId, 'par_lang'); } else { $siteLanguages = \Modules\standard\languages\Db::getLanguages(); $this->languageId = $siteLanguages[0]['id']; } } foreach ($this->parameterGroups as $groupKey => $group) { if ($moduleGroup == null || $moduleName == null || $moduleGroup == $group->moduleGroupName && $moduleName == $group->moduleName) { if ($parametersMod->getValue('standard', 'configuration', 'advanced_options', 'administrator_interface_language') == $this->languageCode) { //set module group translation $tmpGroup = Db::getGroup($group->moduleGroupName); if ($tmpGroup && $group->moduleGroupTranslation) { Db::updateModuleGroupTranslation($tmpGroup['id'], $group->moduleGroupTranslation); } //set module translation $tmpModule = \Db::getModule(null, $group->moduleGroupName, $group->moduleName); if ($tmpModule && $group->moduleTranslation) { Db::updateModuleTranslation($tmpModule['id'], $group->moduleTranslation); } } $group->saveToDb($this->languageId); } } }
private static function importConfig($groupName, $moduleName) { global $log; $siteLanguages = \Modules\standard\languages\Db::getLanguages(); foreach ($siteLanguages as $key => $language) { $siteLanguages[$key]['code'] = strtolower($siteLanguages[$key]['code']); } $configFiles = ModulesInstallation::getConfigFiles(MODULE_DIR . 'standard/content_management/widgets/' . $groupName . '/' . $moduleName . '/install/', 'parameters'); foreach ($configFiles as $key => $file) { $configFiles[$key] = unserialize(file_get_contents(MODULE_DIR . 'standard/content_management/widgets/' . $groupName . '/' . $moduleName . '/install/' . $key)); $configFiles[$key]->languageCode = strtolower($configFiles[$key]->languageCode); } //install default config foreach ($configFiles as $key => $file) { if ($key == 'parameters.conf') { if (isset($siteLanguages[0])) { $file->languageCode = $siteLanguages[0]['code']; $log->log('developer/widgets', 'parameters installation', MODULE_DIR . 'standard/content_management/widgets/' . $groupName . '/' . $moduleName . '/install/parameters.conf installation (' . $siteLanguages[0]['code'] . ')'); $file->saveParameters($groupName, $moduleName, false); } } } //install configuration files that match site languages foreach ($configFiles as $configKey => $file) { if ($configKey !== 'parameters.conf') { //parameters.conf is already installed foreach ($siteLanguages as $languageKey => $language) { if ($language['code'] == $file->languageCode) { $file->languageCode = $siteLanguages[0]['code']; $log->log('adeveloper/widgets', 'parameters installation', MODULE_DIR . 'standard/content_management/widgets/' . $groupName . '/' . $moduleName . '/install/' . $configKey . ' (' . $language['code'] . ')'); $file->saveParameters($groupName, $moduleName, false); $siteLanguages[$languageKey] == null; //mark language as installed } } } } //install configuration files that are similar to site languages. Eg. en-gb and en foreach ($configFiles as $configKey => $file) { if ($configKey !== 'parameters.conf') { //parameters.conf is already installed $tmpLang = $file->languageCode; $tmpLang = substr($tmpLang, 0, strpos($tmpLang, '-')); foreach ($siteLanguages as $languageKey => $language) { if ($language !== null && ($language['code'] = $tmpLang)) { //null - already installed $file->languageCode = $siteLanguages[0]['code']; $log->log('bdeveloper/widgets', 'parameters installation', MODULE_DIR . 'standard/content_management/widgets/' . $groupName . '/' . $moduleName . '/install/' . $configKey . ' (' . $language['code'] . ')'); $file->saveParameters($groupName, $moduleName, false); $siteLanguages[$languageKey] == null; //mark language as installed } } } } }
public static function saveParameters($file, $ignoreLanguage = false) { require_once MODULE_DIR . 'standard/languages/db.php'; //require_once(MODULE_DIR."standard/seo/db.php"); global $parametersMod; global $site; require $file; $answer = ''; //get languageId $languageId = null; if ($ignoreLanguage || !isset($languageCode)) { $languageId = $site->currentLanguage['id']; } else { $languages = \Modules\standard\languages\db::getLanguages(); foreach ($languages as $key => $language) { if ($language['code'] == $languageCode) { $languageId = $language['id']; } } if ($languageId === null) { if (!isset($languageShort)) { $languageShort = $languageCode; } if (!isset($languageLong)) { $languageLong = $languageCode; } if (!isset($languageUrl)) { $languageUrl = $languageCode; } $parameter = array(); $rowNumber = -1.0E+17; $languages = \Modules\standard\languages\Db::getLanguages(); foreach ($languages as $language) { if ($language['row_number'] >= $rowNumber) { $rowNumber = $language['row_number'] + 1; } } $languageId = Db::insertLanguage($languageCode, $languageShort, $languageLong, $languageUrl, 0, $rowNumber); \Modules\standard\languages\Db::createRootZoneElement($languageId); \Modules\standard\languages\Db::createEmptyTranslations($languageId, 'par_lang'); } } if (isset($parameterGroupTitle)) { foreach ($parameterGroupTitle as $groupName => $group) { foreach ($group as $moduleName => $module) { foreach ($module as $parameterGroupName => $value) { $tmpModule = \Db::getModule(null, $groupName, $moduleName); if ($tmpModule) { $tmpParameterGroup = Db::getParameterGroup($tmpModule['id'], $parameterGroupName); if ($tmpParameterGroup) { Db::setParameterGroupTitle($tmpParameterGroup['id'], $value); } else { if (isset($parameterGroupAdmin[$groupName][$moduleName][$parameterGroupName])) { $admin = $parameterGroupAdmin[$groupName][$moduleName][$parameterGroupName]; } else { $admin = 1; } $tmpParameterGroup = Db::createParameterGroup($tmpModule['id'], $parameterGroupName, $value, $admin); } } } } } } if (isset($parameterValue)) { foreach ($parameterValue as $groupName => $moduleGroup) { foreach ($moduleGroup as $moduleName => $module) { $tmpModule = \Db::getModule(null, $groupName, $moduleName); if ($tmpModule) { foreach ($module as $parameterGroupName => $parameterGroup) { $tmpParameterGroup = Db::getParameterGroup($tmpModule['id'], $parameterGroupName); if (!$tmpParameterGroup) { if (isset($parameterGroupAdmin[$groupName][$moduleName][$parameterGroupName])) { $admin = $parameterGroupAdmin[$groupName][$moduleName][$parameterGroupName]; } else { $admin = 1; } $tmpParameterGroup['id'] = Db::createParameterGroup($tmpModule['id'], $parameterGroupName, $parameterGroupName, $admin); } foreach ($parameterGroup as $parameterName => $value) { if (!$parametersMod->exist($groupName, $moduleName, $parameterGroupName, $parameterName)) { $parameter = array(); $parameter['name'] = $parameterName; if (isset($parameterAdmin[$groupName][$moduleName][$parameterGroupName][$parameterName])) { $parameter['admin'] = $parameterAdmin[$groupName][$moduleName][$parameterGroupName][$parameterName]; } else { $parameter['admin'] = 1; } if (isset($parameterTitle[$groupName][$moduleName][$parameterGroupName][$parameterName])) { $parameter['translation'] = $parameterTitle[$groupName][$moduleName][$parameterGroupName][$parameterName]; } else { $parameter['translation'] = $parameterName; } if (isset($parameterType[$groupName][$moduleName][$parameterGroupName][$parameterName])) { $parameter['type'] = $parameterType[$groupName][$moduleName][$parameterGroupName][$parameterName]; } else { $parameter['type'] = 'string'; } $parameter['value'] = str_replace("\r\n", "\n", $value); //user can edit parameters file and change line endings. So, we convert them back $parameter['value'] = str_replace("\r", "\n", $parameter['value']); Db::insertParameter($tmpParameterGroup['id'], $parameter); } else { $value = str_replace("\r\n", "\n", $value); //user can edit parameters file and change line endings. So, we convert them back $value = str_replace("\r", "\n", $value); $parametersMod->setValue($groupName, $moduleName, $parameterGroupName, $parameterName, $value, $languageId); } } } } } } } if (isset($parameterTitle)) { foreach ($parameterTitle as $moduleGroupName => $moduleGroup) { foreach ($moduleGroup as $moduleName => $module) { foreach ($module as $parameterGroupName => $parameterGroup) { foreach ($parameterGroup as $parameterName => $title) { Db::setParameterTitle($moduleGroupName, $moduleName, $parameterGroupName, $parameterName, $title); } } } } } if (isset($moduleGroupTitle)) { foreach ($moduleGroupTitle as $groupName => $value) { Db::setModuleGroupTitle($groupName, $value); } } if (isset($moduleTitle)) { foreach ($moduleTitle as $groupName => $group) { foreach ($group as $moduleName => $value) { Db::setModuleTitle($groupName, $moduleName, $value); } } } return $answer; }
private function importConfig($groupName, $moduleName) { require_once BASE_DIR . MODULE_DIR . 'developer/localization/manager.php'; global $log; global $parametersMod; $siteLanguages = \Modules\standard\languages\Db::getLanguages(); $installDir = BASE_DIR . PLUGIN_DIR . $groupName . '/' . $moduleName . '/install/'; //install default config if (is_file($installDir . 'config.php')) { \Modules\developer\localization\Manager::saveParameters($installDir . 'config.php', true); } //get public area translation files $configFiles = $this->getFiles($installDir, 'translations.public.'); foreach ($siteLanguages as $key => $language) { $siteLanguages[$key]['code'] = strtolower($siteLanguages[$key]['code']); } //install configuration files that match site languages foreach ($siteLanguages as $languageKey => $language) { if (isset($configFiles[$language['code']])) { \Modules\developer\localization\Manager::saveParameters($installDir . $configFiles[$language['code']]); $siteLanguages[$languageKey] == null; //mark language as installed } } //install configuration files that are similar to site languages. Eg. en-gb and en foreach ($configFiles as $configKey => $file) { if ($configKey !== 'default') { //default is already installed $fileCode = $configKey; $fileCode = substr($fileCode, 0, strpos($fileCode, '-')); foreach ($siteLanguages as $languageKey => $language) { if ($language !== null) { //null - already installed $languageCode = substr($language['code'], 0, strpos($language['code'], '-')); if ($languageCode = $fileCode) { \Modules\developer\localization\Manager::saveParameters($installDir . $configFiles[$configKey]); $siteLanguages[$languageKey] == null; //mark language as installed } } } } } //get administration area translation files $configFiles = $this->getFiles($installDir, 'translations.administrator.'); $administrationAreaLanguageCode = $parametersMod->getValue('standard', 'configuration', 'advanced_options', 'administrator_interface_language'); if (isset($configFiles[$administrationAreaLanguageCode])) { \Modules\developer\localization\Manager::saveParameters($installDir . $configFiles[$administrationAreaLanguageCode], true); } else { if (strpos($administrationAreaLanguageCode, '-') !== false) { $administrationAreaLanguageCode = substr($administrationAreaLanguageCode, 0, strpos($administrationAreaLanguageCode, '-')); } foreach ($configFiles as $configKey => $file) { $fileCode = $configKey; $fileCode = substr($fileCode, 0, strpos($fileCode, '-')); if ($fileCode == $administrationAreaLanguageCode) { \Modules\developer\localization\Manager::saveParameters($installDir . $configFiles[$configKey], true); } } } }
/** * Get all languages * @return array */ public static function getLanguages() { require_once BASE_DIR . MODULE_DIR . 'standard/languages/db.php'; $languages = \Modules\standard\languages\Db::getLanguages(); return $languages; }