public function postProcess() { global $currentIndex; if (isset($_POST['submitDatabase' . $this->table])) { if ($this->tabAccess['edit'] === '1') { foreach ($this->_fieldsDatabase as $field => $values) { if (isset($values['required']) and $values['required']) { if (($value = Tools::getValue($field)) == false and (string) $value != '0') { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is required'); } } } if (!sizeof($this->_errors)) { /* Datas are not saved in database but in config/settings.inc.php */ $settings = array(); foreach ($_POST as $k => $value) { if ($value) { $settings['_' . Tools::strtoupper($k) . '_'] = $value; } } rewriteSettingsFile(NULL, NULL, $settings); Tools::redirectAdmin($currentIndex . '&conf=6' . '&token=' . $this->token); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit anything here.'); } } }
public function postProcess() { global $currentIndex; if (isset($_POST['submitDatabase' . $this->table])) { if ($this->tabAccess['edit'] === '1') { foreach ($this->_fieldsDatabase as $field => $values) { if (isset($values['required']) and $values['required']) { if (($value = Tools::getValue($field)) == false and (string) $value != '0') { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is required.'); } } } if (!sizeof($this->_errors)) { /* Datas are not saved in database but in config/settings.inc.php */ $settings = array(); foreach ($_POST as $k => $value) { if ($value) { $settings['_' . Tools::strtoupper($k) . '_'] = $value; } } rewriteSettingsFile(NULL, NULL, $settings); Tools::redirectAdmin($currentIndex . '&conf=6' . '&token=' . $this->token); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } if (Tools::isSubmit('submitEngine')) { if (!isset($_POST['tablesBox']) or !sizeof($_POST['tablesBox'])) { $this->_errors[] = Tools::displayError('You did not select any tables'); } else { $available_engines = $this->_getEngines(); $tables_status = $this->_getTablesStatus(); $tables_engine = array(); foreach ($tables_status as $table) { $tables_engine[$table['Name']] = $table['Engine']; } $engineType = pSQL(Tools::getValue('engineType')); /* Datas are not saved in database but in config/settings.inc.php */ $settings = array('_MYSQL_ENGINE_' => $engineType); rewriteSettingsFile(NULL, NULL, $settings); foreach ($_POST['tablesBox'] as $table) { if ($engineType == $tables_engine[$table]) { $this->_errors[] = $table . ' ' . $this->l('is already in') . ' ' . $engineType; } else { if (!Db::getInstance()->Execute('ALTER TABLE `' . bqSQL($table) . '` ENGINE=`' . bqSQL($engineType) . '`')) { $this->_errors[] = $this->l('Can\'t change engine for') . ' ' . $table; } else { echo '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Engine change of') . ' ' . $table . ' ' . $this->l('to') . ' ' . $engineType . '</div>'; } } } } } }
public function postProcess() { global $currentIndex; /* PrestaShop demo mode */ if (_PS_MODE_DEMO_) { $this->_errors[] = Tools::displayError('This functionnality has been disabled.'); return; } if (Tools::getValue('PS_ATTACHMENT_MAXIMUM_SIZE') or Tools::getValue('PS_LIMIT_UPLOAD_FILE_VALUE') or Tools::getValue('PS_LIMIT_UPLOAD_IMAGE_VALUE')) { $uploadMaxSize = (int) str_replace('M', '', ini_get('upload_max_filesize')); $postMaxSize = (int) str_replace('M', '', ini_get('post_max_size')); $maxSize = $uploadMaxSize < $postMaxSize ? $uploadMaxSize : $postMaxSize; $_POST['PS_ATTACHMENT_MAXIMUM_SIZE'] = $maxSize < Tools::getValue('PS_ATTACHMENT_MAXIMUM_SIZE') ? $maxSize : Tools::getValue('PS_ATTACHMENT_MAXIMUM_SIZE'); if (Tools::getValue('PS_LIMIT_UPLOAD_FILE_VALUE') > $maxSize or Tools::getValue('PS_LIMIT_UPLOAD_IMAGE_VALUE') > $maxSize) { $this->_errors[] = Tools::displayError($this->l('The chosen limit is superior to the server\'s maximum upload capacity. You need to increase your server limit.')); return; } else { if (!Tools::getValue('PS_LIMIT_UPLOAD_FILE_VALUE')) { $_POST['PS_LIMIT_UPLOAD_FILE_VALUE'] = 1; } else { if (!Tools::getValue('PS_LIMIT_UPLOAD_IMAGE_VALUE')) { $_POST['PS_LIMIT_UPLOAD_IMAGE_VALUE'] = 1; } else { $_POST['PS_LIMIT_UPLOAD_FILE_VALUE'] = Tools::getValue('PS_LIMIT_UPLOAD_FILE_VALUE'); $_POST['PS_LIMIT_UPLOAD_IMAGE_VALUE'] = Tools::getValue('PS_LIMIT_UPLOAD_IMAGE_VALUE'); } } } } if (isset($_POST['submitGeneral' . $this->table])) { Module::hookExec('categoryUpdate'); // We call this hook, for regenerate cache of categories if (Tools::getValue('PS_CONDITIONS') == true and (Tools::getValue('PS_CONDITIONS_CMS_ID') == 0 or !Db::getInstance()->getValue(' SELECT `id_cms` FROM `' . _DB_PREFIX_ . 'cms` WHERE id_cms = ' . (int) Tools::getValue('PS_CONDITIONS_CMS_ID')))) { $this->_errors[] = Tools::displayError('Assign a valid CMS page if you want it to be read.'); } if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsGeneral); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitShop' . $this->table])) { if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsShop); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitAppearance' . $this->table])) { if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsAppearance); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitThemes' . $this->table])) { if ($this->tabAccess['edit'] === '1') { if ($val = Tools::getValue('PS_THEME')) { if (rewriteSettingsFile(NULL, $val, NULL)) { Tools::redirectAdmin($currentIndex . '&conf=6' . '&token=' . $this->token); } else { $this->_errors[] = Tools::displayError('Cannot access settings file.'); } } else { $this->_errors[] = Tools::displayError('You must choose a graphical theme.'); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } parent::postProcess(); }
public function postProcess() { /* PrestaShop demo mode */ if (_PS_MODE_DEMO_) { $this->errors[] = Tools::displayError('This functionality has been disabled.'); return; } Hook::exec('action' . get_class($this) . ucfirst($this->action) . 'Before', array('controller' => $this)); if (Tools::isSubmit('submitAddServer')) { if ($this->tabAccess['add'] === '1') { if (!Tools::getValue('memcachedIp')) { $this->errors[] = Tools::displayError('The Memcached IP is missing.'); } if (!Tools::getValue('memcachedPort')) { $this->errors[] = Tools::displayError('The Memcached port is missing.'); } if (!Tools::getValue('memcachedWeight')) { $this->errors[] = Tools::displayError('The Memcached weight is missing.'); } if (!count($this->errors)) { if (CacheMemcache::addServer(pSQL(Tools::getValue('memcachedIp')), (int) Tools::getValue('memcachedPort'), (int) Tools::getValue('memcachedWeight'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = Tools::displayError('The Memcached server cannot be added.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to add this.'); } } if (Tools::getValue('deleteMemcachedServer')) { if ($this->tabAccess['add'] === '1') { if (CacheMemcache::deleteServer((int) Tools::getValue('deleteMemcachedServer'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = Tools::displayError('There was an error when attempting to delete the Memcached server.'); } } else { $this->errors[] = Tools::displayError('You do not have permission to delete this.'); } } $redirectAdmin = false; if ((bool) Tools::getValue('smarty_up')) { if ($this->tabAccess['edit'] === '1') { Configuration::updateValue('PS_SMARTY_FORCE_COMPILE', Tools::getValue('smarty_force_compile', _PS_SMARTY_NO_COMPILE_)); Configuration::updateValue('PS_SMARTY_CACHE', Tools::getValue('smarty_cache', 0)); Configuration::updateValue('PS_SMARTY_CONSOLE', Tools::getValue('smarty_console', 0)); Configuration::updateValue('PS_SMARTY_CONSOLE_KEY', Tools::getValue('smarty_console_key', 'SMARTY_DEBUG')); $redirecAdmin = true; } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('features_detachables_up')) { if ($this->tabAccess['edit'] === '1') { if (Tools::getValue('combination') || !Combination::isCurrentlyUsed()) { Configuration::updateValue('PS_COMBINATION_FEATURE_ACTIVE', Tools::getValue('combination')); } if (Tools::getValue('customer_group') && !Group::isCurrentlyUsed()) { Configuration::updateValue('PS_GROUP_FEATURE_ACTIVE', Tools::getValue('customer_group')); } Configuration::updateValue('PS_FEATURE_FEATURE_ACTIVE', Tools::getValue('feature')); $redirectAdmin = true; } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('ccc_up')) { if ($this->tabAccess['edit'] === '1') { $theme_cache_directory = _PS_ALL_THEMES_DIR_ . $this->context->shop->theme_directory . '/cache/'; if (((bool) Tools::getValue('PS_CSS_THEME_CACHE') || (bool) Tools::getValue('PS_JS_THEME_CACHE')) && !is_writable($theme_cache_directory)) { $this->errors[] = Tools::displayError(sprintf($this->l('To use Smart Cache directory %s must be writable.'), realpath($theme_cache_directory))); } if (!Configuration::updateValue('PS_CSS_THEME_CACHE', (int) Tools::getValue('PS_CSS_THEME_CACHE')) || !Configuration::updateValue('PS_JS_THEME_CACHE', (int) Tools::getValue('PS_JS_THEME_CACHE')) || !Configuration::updateValue('PS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_JS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_JS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', (int) Tools::getValue('PS_HTACCESS_CACHE_CONTROL'))) { $this->errors[] = Tools::displayError('Unknown error.'); } else { $redirectAdmin = true; if (Configuration::get('PS_HTACCESS_CACHE_CONTROL')) { Tools::generateHtaccess(); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('media_server_up')) { if ($this->tabAccess['edit'] === '1') { if (Tools::getValue('_MEDIA_SERVER_1_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_1_'))) { $this->errors[] = Tools::displayError('Media server #1 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_2_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_2_'))) { $this->errors[] = Tools::displayError('Media server #2 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_3_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_3_'))) { $this->errors[] = Tools::displayError('Media server #3 is invalid'); } if (!count($this->errors)) { $base_urls = array(); $base_urls['_MEDIA_SERVER_1_'] = Tools::getValue('_MEDIA_SERVER_1_'); $base_urls['_MEDIA_SERVER_2_'] = Tools::getValue('_MEDIA_SERVER_2_'); $base_urls['_MEDIA_SERVER_3_'] = Tools::getValue('_MEDIA_SERVER_3_'); if ($base_urls['_MEDIA_SERVER_1_'] || $base_urls['_MEDIA_SERVER_2_'] || $base_urls['_MEDIA_SERVER_3_']) { Configuration::updateValue('PS_MEDIA_SERVERS', 1); } else { Configuration::updateValue('PS_MEDIA_SERVERS', 0); } rewriteSettingsFile($base_urls, null, null); Tools::clearSmartyCache(); Media::clearCache(); Tools::generateHtaccess(null, null, null, '', null, array($base_urls['_MEDIA_SERVER_1_'], $base_urls['_MEDIA_SERVER_2_'], $base_urls['_MEDIA_SERVER_3_'])); unset($this->_fieldsGeneral['_MEDIA_SERVER_1_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_2_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_3_']); $redirectAdmin = true; } } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('ciphering_up') && Configuration::get('PS_CIPHER_ALGORITHM') != (int) Tools::getValue('PS_CIPHER_ALGORITHM')) { if ($this->tabAccess['edit'] === '1') { $algo = (int) Tools::getValue('PS_CIPHER_ALGORITHM'); $prev_settings = file_get_contents(_PS_ROOT_DIR_ . '/config/settings.inc.php'); $new_settings = $prev_settings; if ($algo) { if (!function_exists('mcrypt_encrypt')) { $this->errors[] = Tools::displayError('The "Mcrypt" PHP extension is not activated on this server.'); } else { if (!strstr($new_settings, '_RIJNDAEL_KEY_')) { $key_size = mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $key = Tools::passwdGen($key_size); $new_settings = preg_replace('/define\\(\'_COOKIE_KEY_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_KEY_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_KEY_\', \'' . $key . '\');', $new_settings); } if (!strstr($new_settings, '_RIJNDAEL_IV_')) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $iv = base64_encode(mcrypt_create_iv($iv_size, MCRYPT_RAND)); $new_settings = preg_replace('/define\\(\'_COOKIE_IV_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_IV_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_IV_\', \'' . $iv . '\');', $new_settings); } } } if (!count($this->errors)) { // If there is not settings file modification or if the backup and replacement of the settings file worked if ($new_settings == $prev_settings || copy(_PS_ROOT_DIR_ . '/config/settings.inc.php', _PS_ROOT_DIR_ . '/config/settings.old.php') && (bool) file_put_contents(_PS_ROOT_DIR_ . '/config/settings.inc.php', $new_settings)) { Configuration::updateValue('PS_CIPHER_ALGORITHM', $algo); $redirectAdmin = true; } else { $this->errors[] = Tools::displayError('The settings file cannot be overwritten.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('cache_up')) { if ($this->tabAccess['edit'] === '1') { $new_settings = $prev_settings = file_get_contents(_PS_ROOT_DIR_ . '/config/settings.inc.php'); $cache_active = (bool) Tools::getValue('cache_active'); if ($caching_system = Tools::getValue('caching_system')) { $new_settings = preg_replace('/define\\(\'_PS_CACHING_SYSTEM_\', \'([a-z0-9=\\/+-_]*)\'\\);/Ui', 'define(\'_PS_CACHING_SYSTEM_\', \'' . $caching_system . '\');', $new_settings); } else { $cache_active = false; $this->errors[] = Tools::displayError('The caching system is missing.'); } if ($cache_active) { if ($caching_system == 'CacheMemcache' && !extension_loaded('memcache')) { $this->errors[] = Tools::displayError('To use Memcached, you must install the Memcache PECL extension on your server.') . ' <a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>'; } elseif ($caching_system == 'CacheApc' && !extension_loaded('apc')) { $this->errors[] = Tools::displayError('To use APC cache, you must install the APC PECL extension on your server.') . ' <a href="http://fr.php.net/manual/fr/apc.installation.php">http://fr.php.net/manual/fr/apc.installation.php</a>'; } elseif ($caching_system == 'CacheXcache' && !extension_loaded('xcache')) { $this->errors[] = Tools::displayError('To use Xcache, you must install the Xcache extension on your server.') . ' <a href="http://xcache.lighttpd.net">http://xcache.lighttpd.net</a>'; } elseif ($caching_system == 'CacheXcache' && !ini_get('xcache.var_size')) { $this->errors[] = Tools::displayError('To use Xcache, you must configure "xcache.var_size" for the Xcache extension (recommended value 16M to 64M).') . ' <a href="http://xcache.lighttpd.net/wiki/XcacheIni">http://xcache.lighttpd.net/wiki/XcacheIni</a>'; } elseif ($caching_system == 'CacheFs') { if (!is_dir(_PS_CACHEFS_DIRECTORY_)) { @mkdir(_PS_CACHEFS_DIRECTORY_, 0777, true); } elseif (!is_writable(_PS_CACHEFS_DIRECTORY_)) { $this->errors[] = sprintf(Tools::displayError('To use CacheFS, the directory %s must be writable.'), realpath(_PS_CACHEFS_DIRECTORY_)); } } if ($caching_system == 'CacheFs') { if (!($depth = Tools::getValue('ps_cache_fs_directory_depth'))) { $this->errors[] = Tools::displayError('Please set a directory depth.'); } if (!count($this->errors)) { CacheFs::deleteCacheDirectory(); CacheFs::createCacheDirectories((int) $depth); Configuration::updateValue('PS_CACHEFS_DIRECTORY_DEPTH', (int) $depth); } } elseif ($caching_system == 'CacheMemcache' && !_PS_CACHE_ENABLED_ && _PS_CACHING_SYSTEM_ == 'CacheMemcache') { Cache::getInstance()->flush(); } } if (!count($this->errors)) { $new_settings = preg_replace('/define\\(\'_PS_CACHE_ENABLED_\', \'([01]?)\'\\);/Ui', 'define(\'_PS_CACHE_ENABLED_\', \'' . (int) $cache_active . '\');', $new_settings); // If there is not settings file modification or if the backup and replacement of the settings file worked if ($new_settings == $prev_settings || copy(_PS_ROOT_DIR_ . '/config/settings.inc.php', _PS_ROOT_DIR_ . '/config/settings.old.php') && (bool) file_put_contents(_PS_ROOT_DIR_ . '/config/settings.inc.php', $new_settings)) { $redirectAdmin = true; } else { $this->errors[] = Tools::displayError('The settings file cannot be overwritten.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit this.'); } } if ((bool) Tools::getValue('empty_smarty_cache')) { $redirectAdmin = true; Tools::clearSmartyCache(); Tools::clearXMLCache(); Media::clearCache(); PrestaShopAutoload::getInstance()->generateIndex(); } if (Tools::isSubmit('submitAddconfiguration') && _PS_MODE_DEV_) { Configuration::updateGlobalValue('PS_DISABLE_NON_NATIVE_MODULE', (int) Tools::getValue('native_module')); Configuration::updateGlobalValue('PS_DISABLE_OVERRIDES', (int) Tools::getValue('overrides')); if (Tools::getValue('overrides')) { PrestaShopAutoload::getInstance()->_include_override_path = false; } PrestaShopAutoload::getInstance()->generateIndex(); } if ($redirectAdmin && (!isset($this->errors) || !count($this->errors))) { Hook::exec('action' . get_class($this) . ucfirst($this->action) . 'After', array('controller' => $this, 'return' => '')); Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } }
public function postProcess() { if (Tools::isSubmit('submitAddmeta')) { $langs = Language::getLanguages(true); $default_language = Configuration::get('PS_LANG_DEFAULT'); if (Tools::getValue('page') != 'index') { $defaultLangIsValidated = Validate::isLinkRewrite(Tools::getValue('url_rewrite_' . $default_language)); $englishLangIsValidated = Validate::isLinkRewrite(Tools::getValue('url_rewrite_1')); } else { // index.php can have empty rewrite rule $defaultLangIsValidated = !Tools::getValue('url_rewrite_' . $default_language) or Validate::isLinkRewrite(Tools::getValue('url_rewrite_' . $default_language)); $englishLangIsValidated = !Tools::getValue('url_rewrite_1') or Validate::isLinkRewrite(Tools::getValue('url_rewrite_1')); } if (!$defaultLangIsValidated and !$englishLangIsValidated) { $this->_errors[] = Tools::displayError('Url rewrite field must be filled at least in default or english language.'); return false; } foreach ($langs as $lang) { $current = Tools::getValue('url_rewrite_' . $lang['id_lang']); if (strlen($current) == 0) { // Prioritize default language first if ($defaultLangIsValidated) { $_POST['url_rewrite_' . $lang['id_lang']] = Tools::getValue('url_rewrite_' . $default_language); } else { $_POST['url_rewrite_' . $lang['id_lang']] = Tools::getValue('url_rewrite_1'); } } } } if (Tools::isSubmit('submitOptions' . $this->table)) { $baseUrls = array(); if ($__PS_BASE_URI__ = Tools::getValue('__PS_BASE_URI__')) { $baseUrls['__PS_BASE_URI__'] = $__PS_BASE_URI__; } rewriteSettingsFile($baseUrls, NULL, NULL); unset($this->_fieldsGeneral['__PS_BASE_URI__']); } if (Tools::isSubmit('submitOptions' . $this->table) or Tools::isSubmit('submitAddmeta')) { Module::hookExec('afterSaveAdminMeta'); } return parent::postProcess(); }
public function postProcess() { global $currentIndex; if (isset($_POST['submitGeneral' . $this->table])) { Module::hookExec('categoryUpdate'); // We call this hook, for regenerate cache of categories if (Tools::getValue('PS_CONDITIONS') == true and (Tools::getValue('PS_CONDITIONS_CMS_ID') == 0 or !Db::getInstance()->getValue(' SELECT `id_cms` FROM `' . _DB_PREFIX_ . 'cms` WHERE id_cms = ' . (int) Tools::getValue('PS_CONDITIONS_CMS_ID')))) { $this->_errors[] = Tools::displayError('Assign a valid CMS page if you want it to be read.'); } if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsGeneral); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitShop' . $this->table])) { if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsShop); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitAppearance' . $this->table])) { if ($this->tabAccess['edit'] === '1') { $this->_postConfig($this->_fieldsAppearance); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } elseif (isset($_POST['submitThemes' . $this->table])) { if ($this->tabAccess['edit'] === '1') { if ($val = Tools::getValue('PS_THEME')) { if (rewriteSettingsFile(NULL, $val, NULL)) { Tools::redirectAdmin($currentIndex . '&conf=6' . '&token=' . $this->token); } else { $this->_errors[] = Tools::displayError('Cannot access settings file.'); } } else { $this->_errors[] = Tools::displayError('You must choose a graphical theme.'); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } parent::postProcess(); }
public function postProcess() { if (Tools::isSubmit('submitAddServer')) { if ($this->tabAccess['add'] === '1') { if (!Tools::getValue('memcachedIp')) { $this->errors[] = Tools::displayError('Memcached IP is missing'); } if (!Tools::getValue('memcachedPort')) { $this->errors[] = Tools::displayError('Memcached port is missing'); } if (!Tools::getValue('memcachedWeight')) { $this->errors[] = Tools::displayError('Memcached weight is missing'); } if (!count($this->errors)) { if (CacheMemcache::addServer(pSQL(Tools::getValue('memcachedIp')), (int) Tools::getValue('memcachedPort'), (int) Tools::getValue('memcachedWeight'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = Tools::displayError('Cannot add Memcached server'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to add here.'); } } if (Tools::getValue('deleteMemcachedServer')) { if ($this->tabAccess['add'] === '1') { if (CacheMemcache::deleteServer((int) Tools::getValue('deleteMemcachedServer'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = Tools::displayError('Error in deleting Memcached server'); } } else { $this->errors[] = Tools::displayError('You do not have permission to delete here.'); } } $redirecAdmin = false; if ((bool) Tools::getValue('smarty_up')) { if ($this->tabAccess['edit'] === '1') { Configuration::updateValue('PS_SMARTY_FORCE_COMPILE', Tools::getValue('smarty_force_compile', _PS_SMARTY_NO_COMPILE_)); Configuration::updateValue('PS_SMARTY_CACHE', Tools::getValue('smarty_cache', 0)); Configuration::updateValue('PS_SMARTY_CONSOLE', Tools::getValue('smarty_console', 0)); $redirecAdmin = true; } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ((bool) Tools::getValue('features_detachables_up')) { if ($this->tabAccess['edit'] === '1') { if (!Combination::isCurrentlyUsed()) { Configuration::updateValue('PS_COMBINATION_FEATURE_ACTIVE', Tools::getValue('combination')); } Configuration::updateValue('PS_FEATURE_FEATURE_ACTIVE', Tools::getValue('feature')); $redirecAdmin = true; } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ((bool) Tools::getValue('ccc_up')) { if ($this->tabAccess['edit'] === '1') { if (!Configuration::updateValue('PS_CSS_THEME_CACHE', (int) Tools::getValue('PS_CSS_THEME_CACHE')) || !Configuration::updateValue('PS_JS_THEME_CACHE', (int) Tools::getValue('PS_JS_THEME_CACHE')) || !Configuration::updateValue('PS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_JS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_JS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_HIGH_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HIGH_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', (int) Tools::getValue('PS_HTACCESS_CACHE_CONTROL'))) { $this->errors[] = Tools::displayError('Unknown error.'); } else { $redirecAdmin = true; if (Configuration::get('PS_HTACCESS_CACHE_CONTROL')) { Tools::generateHtaccess(); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ((bool) Tools::getValue('media_server_up')) { if ($this->tabAccess['edit'] === '1') { if (Tools::getValue('_MEDIA_SERVER_1_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_1_'))) { $this->errors[] = Tools::displayError('Media server #1 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_2_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_2_'))) { $this->errors[] = Tools::displayError('Media server #2 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_3_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_3_'))) { $this->errors[] = Tools::displayError('Media server #3 is invalid'); } if (!count($this->errors)) { $base_urls = array(); $base_urls['_MEDIA_SERVER_1_'] = Tools::getValue('_MEDIA_SERVER_1_'); $base_urls['_MEDIA_SERVER_2_'] = Tools::getValue('_MEDIA_SERVER_2_'); $base_urls['_MEDIA_SERVER_3_'] = Tools::getValue('_MEDIA_SERVER_3_'); rewriteSettingsFile($base_urls, null, null); unset($this->_fieldsGeneral['_MEDIA_SERVER_1_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_2_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_3_']); $redirecAdmin = true; } } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ((bool) Tools::getValue('ciphering_up') && Configuration::get('PS_CIPHER_ALGORITHM') != (int) Tools::getValue('PS_CIPHER_ALGORITHM')) { if ($this->tabAccess['edit'] === '1') { $algo = (int) Tools::getValue('PS_CIPHER_ALGORITHM'); $settings = file_get_contents(dirname(__FILE__) . '/../../config/settings.inc.php'); if ($algo) { if (!function_exists('mcrypt_encrypt')) { $this->errors[] = Tools::displayError('PHP "Mcrypt" extension is not activated on this server.'); } else { if (!strstr($settings, '_RIJNDAEL_KEY_')) { $key_size = mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $key = Tools::passwdGen($key_size); $settings = preg_replace('/define\\(\'_COOKIE_KEY_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_KEY_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_KEY_\', \'' . $key . '\');', $settings); } if (!strstr($settings, '_RIJNDAEL_IV_')) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $iv = base64_encode(mcrypt_create_iv($iv_size, MCRYPT_RAND)); $settings = preg_replace('/define\\(\'_COOKIE_IV_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_IV_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_IV_\', \'' . $iv . '\');', $settings); } } } if (!count($this->errors)) { if (file_put_contents(dirname(__FILE__) . '/../../config/settings.inc.php', $settings)) { Configuration::updateValue('PS_CIPHER_ALGORITHM', $algo); $redirecAdmin = true; } else { $this->errors[] = Tools::displayError('Cannot overwrite settings file.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ((bool) Tools::getValue('cache_up')) { if ($this->tabAccess['edit'] === '1') { $settings = file_get_contents(dirname(__FILE__) . '/../../config/settings.inc.php'); if (!Tools::getValue('active')) { $cache_active = 0; } else { $cache_active = 1; } if (!($caching_system = Tools::getValue('caching_system'))) { $this->errors[] = Tools::displayError('Caching system is missing'); } else { $settings = preg_replace('/define\\(\'_PS_CACHING_SYSTEM_\', \'([a-z0-9=\\/+-_]+)\'\\);/Ui', 'define(\'_PS_CACHING_SYSTEM_\', \'' . $caching_system . '\');', $settings); } if ($cache_active && $caching_system == 'CacheMemcache' && !extension_loaded('memcache')) { $this->errors[] = Tools::displayError('To use Memcached, you must install the Memcache PECL extension on your server.') . ' <a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>'; } else { if ($cache_active && $caching_system == 'CacheApc' && !extension_loaded('apc')) { $this->errors[] = Tools::displayError('To use APC cache, you must install the APC PECL extension on your server.') . ' <a href="http://fr.php.net/manual/fr/apc.installation.php">http://fr.php.net/manual/fr/apc.installation.php</a>'; } else { if ($cache_active && $caching_system == 'CacheXcache' && !extension_loaded('xcache')) { $this->errors[] = Tools::displayError('To use Xcache, you must install the Xcache extension on your server.') . ' <a href="http://xcache.lighttpd.net">http://xcache.lighttpd.net</a>'; } else { if ($cache_active && $caching_system == 'CacheFs' && !is_writable(_PS_CACHEFS_DIRECTORY_)) { $this->errors[] = sprintf(Tools::displayError('To use CacheFS the directory %s must be writable.'), realpath(_PS_CACHEFS_DIRECTORY_)); } } } } if ($caching_system == 'CacheFs' && $cache_active) { if (!($depth = Tools::getValue('ps_cache_fs_directory_depth'))) { $this->errors[] = Tools::displayError('Please set a directory depth'); } if (!count($this->errors)) { CacheFs::deleteCacheDirectory(); CacheFs::createCacheDirectories((int) $depth); Configuration::updateValue('PS_CACHEFS_DIRECTORY_DEPTH', (int) $depth); } } else { if ($caching_system == 'MCached' && $cache_active && !_PS_CACHE_ENABLED_ && _PS_CACHING_SYSTEM_ == 'MCached') { Cache::getInstance()->flush(); } } if (!count($this->errors)) { $settings = preg_replace('/define\\(\'_PS_CACHE_ENABLED_\', \'([0-9])\'\\);/Ui', 'define(\'_PS_CACHE_ENABLED_\', \'' . (int) $cache_active . '\');', $settings); if (file_put_contents(dirname(__FILE__) . '/../../config/settings.inc.php', $settings)) { $redirecAdmin = true; } else { $this->errors[] = Tools::displayError('Cannot overwrite settings file.'); } } } else { $this->errors[] = Tools::displayError('You do not have permission to edit here.'); } } if ($redirecAdmin) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { return parent::postProcess(); } }
public function postProcess() { global $currentIndex; if (Tools::isSubmit('submitCaching')) { if ($this->tabAccess['edit'] === '1') { $settings = file_get_contents(dirname(__FILE__) . '/../../config/settings.inc.php'); if (!Tools::getValue('active')) { $cache_active = 0; } else { $cache_active = 1; } if (!($caching_system = Tools::getValue('caching_system'))) { $this->_errors[] = Tools::displayError('Caching system is missing'); } else { $settings = preg_replace('/define\\(\'_PS_CACHING_SYSTEM_\', \'([a-z0-9=\\/+-_]+)\'\\);/Ui', 'define(\'_PS_CACHING_SYSTEM_\', \'' . $caching_system . '\');', $settings); } if ($cache_active and $caching_system == 'MCached' and !extension_loaded('memcache')) { $this->_errors[] = Tools::displayError('To use Memcached, you must to install the Memcache PECL extension on your server.') . ' <a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>'; } elseif ($cache_active and $caching_system == 'CacheFS' and !is_writable(_PS_CACHEFS_DIRECTORY_)) { $this->_errors[] = Tools::displayError('To use CacheFS the directory') . ' ' . realpath(_PS_CACHEFS_DIRECTORY_) . ' ' . Tools::displayError('must be writable'); } if ($caching_system == 'CacheFS') { if (!($depth = Tools::getValue('ps_cache_fs_directory_depth'))) { $this->_errors[] = Tools::displayError('Please set a directory depth'); } if (!sizeof($this->_errors)) { CacheFS::deleteCacheDirectory(); CacheFS::createCacheDirectories((int) $depth); Configuration::updateValue('PS_CACHEFS_DIRECTORY_DEPTH', (int) $depth); } } if (!sizeof($this->_errors)) { $settings = preg_replace('/define\\(\'_PS_CACHE_ENABLED_\', \'([0-9])\'\\);/Ui', 'define(\'_PS_CACHE_ENABLED_\', \'' . (int) $cache_active . '\');', $settings); if (file_put_contents(dirname(__FILE__) . '/../../config/settings.inc.php', $settings)) { Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->_errors[] = Tools::displayError('Cannot overwrite settings file.'); } } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } if (Tools::isSubmit('submitAddServer')) { if ($this->tabAccess['add'] === '1') { if (!Tools::getValue('memcachedIp')) { $this->_errors[] = Tools::displayError('Memcached IP is missing'); } if (!Tools::getValue('memcachedPort')) { $this->_errors[] = Tools::displayError('Memcached port is missing'); } if (!Tools::getValue('memcachedWeight')) { $this->_errors[] = Tools::displayError('Memcached weight is missing'); } if (!sizeof($this->_errors)) { if (MCached::addServer(pSQL(Tools::getValue('memcachedIp')), (int) Tools::getValue('memcachedPort'), (int) Tools::getValue('memcachedWeight'))) { Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->_errors[] = Tools::displayError('Cannot add Memcached server'); } } } else { $this->_errors[] = Tools::displayError('You do not have permission to add here.'); } } if (Tools::getValue('deleteMemcachedServer')) { if ($this->tabAccess['add'] === '1') { if (MCached::deleteServer((int) Tools::getValue('deleteMemcachedServer'))) { Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->_errors[] = Tools::displayError('Error in deleting Memcached server'); } } else { $this->_errors[] = Tools::displayError('You do not have permission to delete here.'); } } if (Tools::isSubmit('submitCiphering') and Configuration::get('PS_CIPHER_ALGORITHM') != (int) Tools::getValue('PS_CIPHER_ALGORITHM')) { if ($this->tabAccess['edit'] === '1') { $algo = (int) Tools::getValue('PS_CIPHER_ALGORITHM'); $settings = file_get_contents(dirname(__FILE__) . '/../../config/settings.inc.php'); if ($algo) { if (!function_exists('mcrypt_encrypt')) { $this->_errors[] = Tools::displayError('Mcrypt is not activated on this server.'); } else { if (!strstr($settings, '_RIJNDAEL_KEY_')) { $key_size = mcrypt_get_key_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $key = Tools::passwdGen($key_size); $settings = preg_replace('/define\\(\'_COOKIE_KEY_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_KEY_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_KEY_\', \'' . $key . '\');', $settings); } if (!strstr($settings, '_RIJNDAEL_IV_')) { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB); $iv = base64_encode(mcrypt_create_iv($iv_size, MCRYPT_RAND)); $settings = preg_replace('/define\\(\'_COOKIE_IV_\', \'([a-z0-9=\\/+-_]+)\'\\);/i', 'define(\'_COOKIE_IV_\', \'\\1\');' . "\n" . 'define(\'_RIJNDAEL_IV_\', \'' . $iv . '\');', $settings); } } } if (!count($this->_errors)) { if (file_put_contents(dirname(__FILE__) . '/../../config/settings.inc.php', $settings)) { Configuration::updateValue('PS_CIPHER_ALGORITHM', $algo); Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->_errors[] = Tools::displayError('Cannot overwrite settings file.'); } } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } if (Tools::isSubmit('submitCCC')) { if ($this->tabAccess['edit'] === '1') { if (!Configuration::updateValue('PS_CSS_THEME_CACHE', (int) Tools::getValue('PS_CSS_THEME_CACHE')) or !Configuration::updateValue('PS_JS_THEME_CACHE', (int) Tools::getValue('PS_JS_THEME_CACHE')) or !Configuration::updateValue('PS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HTML_THEME_COMPRESSION')) or !Configuration::updateValue('PS_JS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_JS_HTML_THEME_COMPRESSION')) or !Configuration::updateValue('PS_HIGH_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HIGH_HTML_THEME_COMPRESSION'))) { $this->_errors[] = Tools::displayError('Unknown error.'); } else { Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } if (Tools::isSubmit('submitMediaServers')) { if ($this->tabAccess['edit'] === '1') { if (Tools::getValue('_MEDIA_SERVER_1_') != NULL and !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_1_'))) { $this->_errors[] = Tools::displayError('Media server #1 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_2_') != NULL and !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_2_'))) { $this->_errors[] = Tools::displayError('Media server #2 is invalid'); } if (Tools::getValue('_MEDIA_SERVER_3_') != NULL and !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_3_'))) { $this->_errors[] = Tools::displayError('Media server #3 is invalid'); } if (!sizeof($this->_errors)) { $baseUrls = array(); $baseUrls['_MEDIA_SERVER_1_'] = Tools::getValue('_MEDIA_SERVER_1_'); $baseUrls['_MEDIA_SERVER_2_'] = Tools::getValue('_MEDIA_SERVER_2_'); $baseUrls['_MEDIA_SERVER_3_'] = Tools::getValue('_MEDIA_SERVER_3_'); rewriteSettingsFile($baseUrls, NULL, NULL); unset($this->_fieldsGeneral['_MEDIA_SERVER_1_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_2_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_3_']); Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } if (Tools::isSubmit('submitSmartyConfig')) { if ($this->tabAccess['edit'] === '1') { Configuration::updateValue('PS_SMARTY_FORCE_COMPILE', Tools::getValue('smarty_force_compile', 0)); Configuration::updateValue('PS_SMARTY_CACHE', Tools::getValue('smarty_cache', 0)); Tools::redirectAdmin($currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); } } return parent::postProcess(); }
/** * Update settings in database and configuration files * * @params array $fields Fields settings * * @global string $currentIndex Current URL in order to keep current Tab */ protected function _postConfig($fields) { global $currentIndex; $languages = Language::getLanguages(); /* Check required fields */ foreach ($fields as $field => $values) { if (isset($values['required']) and $values['required']) { if ($values['type'] == 'textLang') { foreach ($languages as $language) { if (($value = Tools::getValue($field . '_' . $language['id_lang'])) == false and (string) $value != '0') { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is required'); } } } elseif (($value = Tools::getValue($field)) == false and (string) $value != '0') { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is required'); } } } /* Check fields validity */ foreach ($fields as $field => $values) { if ($values['type'] == 'textLang') { foreach ($languages as $language) { if (Tools::getValue($field . '_' . $language['id_lang']) and isset($values['validation'])) { if (!Validate::$values['validation'](Tools::getValue($field . '_' . $language['id_lang']))) { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is invalid'); } } } } elseif (Tools::getValue($field) and isset($values['validation'])) { if (!Validate::$values['validation'](Tools::getValue($field))) { $this->_errors[] = Tools::displayError('field') . ' <b>' . $values['title'] . '</b> ' . Tools::displayError('is invalid'); } } } /* Default value if null */ foreach ($fields as $field => $values) { if (!Tools::getValue($field) and isset($values['default'])) { $_POST[$field] = $values['default']; } } /* Save process */ if (!sizeof($this->_errors)) { if (isset($_POST['submitGeneral' . $this->table])) { rewriteSettingsFile(isset($_POST['PS_BASE_URI']) ? $_POST['PS_BASE_URI'] : '', NULL, NULL); unset($this->_fieldsGeneral['PS_BASE_URI']); } elseif (isset($_POST['submitAppearance' . $this->table])) { if (isset($_FILES['PS_LOGO']['tmp_name']) and $_FILES['PS_LOGO']['tmp_name']) { if ($error = checkImage($_FILES['PS_LOGO'], 300000)) { $this->_errors[] = $error; } if (!($tmpName = tempnam(_PS_TMP_IMG_DIR_, 'PS')) or !move_uploaded_file($_FILES['PS_LOGO']['tmp_name'], $tmpName)) { return false; } elseif (!@imageResize($tmpName, _PS_IMG_DIR_ . 'logo.jpg')) { $this->_errors[] = 'an error occured during logo copy'; } unlink($tmpName); } $this->uploadIco('PS_FAVICON', _PS_IMG_DIR_ . 'favicon.ico'); } /* Update settings in database */ if (!sizeof($this->_errors)) { foreach ($fields as $field => $values) { unset($val); if ($values['type'] == 'textLang') { foreach ($languages as $language) { $val[$language['id_lang']] = isset($values['cast']) ? $values['cast'](Tools::getValue($field . '_' . $language['id_lang'])) : Tools::getValue($field . '_' . $language['id_lang']); } } else { $val = isset($values['cast']) ? $values['cast'](Tools::getValue($field)) : Tools::getValue($field); } Configuration::updateValue($field, $val); } Tools::redirectAdmin($currentIndex . '&conf=6' . '&token=' . $this->token); } } }
public function postProcess() { /* PrestaShop demo mode */ if (_PS_MODE_DEMO_) { $this->errors[] = $this->trans('This functionality has been disabled.', array(), 'Admin.Notifications.Error'); return; } Hook::exec('action' . get_class($this) . ucfirst($this->action) . 'Before', array('controller' => $this)); if (Tools::isSubmit('submitAddServer')) { if ($this->access('add')) { if (!Tools::getValue('memcachedIp')) { $this->errors[] = $this->trans('The Memcached IP is missing.', array(), 'Admin.Parameters.Notification'); } if (!Tools::getValue('memcachedPort')) { $this->errors[] = $this->trans('The Memcached port is missing.', array(), 'Admin.Parameters.Notification'); } if (!Tools::getValue('memcachedWeight')) { $this->errors[] = $this->trans('The Memcached weight is missing.', array(), 'Admin.Parameters.Notification'); } if (!count($this->errors)) { if (CacheMemcache::addServer(pSQL(Tools::getValue('memcachedIp')), (int) Tools::getValue('memcachedPort'), (int) Tools::getValue('memcachedWeight'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = $this->trans('The Memcached server cannot be added.', array(), 'Admin.Parameters.Notification'); } } } else { $this->errors[] = $this->trans('You do not have permission to add this.', array(), 'Admin.Notifications.Error'); } } if (Tools::getValue('deleteMemcachedServer')) { if ($this->access('add')) { if (CacheMemcache::deleteServer((int) Tools::getValue('deleteMemcachedServer'))) { Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } else { $this->errors[] = $this->trans('There was an error when attempting to delete the Memcached server.', array(), 'Admin.Parameters.Notification'); } } else { $this->errors[] = $this->trans('You do not have permission to delete this.', array(), 'Admin.Notifications.Error'); } } $redirectAdmin = false; if ((bool) Tools::getValue('smarty_up')) { if ($this->access('edit')) { Configuration::updateValue('PS_SMARTY_FORCE_COMPILE', Tools::getValue('smarty_force_compile', _PS_SMARTY_NO_COMPILE_)); if (Configuration::get('PS_SMARTY_CACHE') != Tools::getValue('smarty_cache')) { Tools::clearSmartyCache(); } Configuration::updateValue('PS_SMARTY_CACHE', Tools::getValue('smarty_cache', 0)); Configuration::updateValue('PS_SMARTY_CLEAR_CACHE', Tools::getValue('smarty_clear_cache')); Configuration::updateValue('PS_SMARTY_LOCAL', Tools::getValue('smarty_local', 0)); $redirectAdmin = true; } else { $this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error'); } } if ((bool) Tools::getValue('features_detachables_up')) { if ($this->access('edit')) { if (Tools::isSubmit('combination')) { if ((!Tools::getValue('combination') && Combination::isCurrentlyUsed()) === false) { Configuration::updateValue('PS_COMBINATION_FEATURE_ACTIVE', (bool) Tools::getValue('combination')); } } if (Tools::isSubmit('customer_group')) { if ((!Tools::getValue('customer_group') && Group::isCurrentlyUsed()) === false) { Configuration::updateValue('PS_GROUP_FEATURE_ACTIVE', (bool) Tools::getValue('customer_group')); } } Configuration::updateValue('PS_FEATURE_FEATURE_ACTIVE', (bool) Tools::getValue('feature')); $redirectAdmin = true; } else { $this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error'); } } if ((bool) Tools::getValue('ccc_up')) { if ($this->access('edit')) { $theme_cache_directory = _PS_ALL_THEMES_DIR_ . $this->context->shop->theme_directory . '/cache/'; @mkdir($theme_cache_directory, 0777, true); if (((bool) Tools::getValue('PS_CSS_THEME_CACHE') || (bool) Tools::getValue('PS_JS_THEME_CACHE')) && !is_writable($theme_cache_directory)) { $this->errors[] = $this->trans('To use Smart Cache, the directory %directorypath% must be writable.', array('%directorypath%' => realpath($theme_cache_directory)), 'Admin.Parameters.Notification'); } if ($tmp = (int) Tools::getValue('PS_CSS_THEME_CACHE')) { $version = (int) Configuration::get('PS_CCCCSS_VERSION'); if (Configuration::get('PS_CSS_THEME_CACHE') != $tmp) { Configuration::updateValue('PS_CCCCSS_VERSION', ++$version); } } if ($tmp = (int) Tools::getValue('PS_JS_THEME_CACHE')) { $version = (int) Configuration::get('PS_CCCJS_VERSION'); if (Configuration::get('PS_JS_THEME_CACHE') != $tmp) { Configuration::updateValue('PS_CCCJS_VERSION', ++$version); } } if (!Configuration::updateValue('PS_CSS_THEME_CACHE', (int) Tools::getValue('PS_CSS_THEME_CACHE')) || !Configuration::updateValue('PS_JS_THEME_CACHE', (int) Tools::getValue('PS_JS_THEME_CACHE')) || !Configuration::updateValue('PS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_JS_HTML_THEME_COMPRESSION', (int) Tools::getValue('PS_JS_HTML_THEME_COMPRESSION')) || !Configuration::updateValue('PS_JS_DEFER', (int) Tools::getValue('PS_JS_DEFER')) || !Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', (int) Tools::getValue('PS_HTACCESS_CACHE_CONTROL'))) { $this->errors[] = $this->trans('Unknown error.', array(), 'Admin.Notifications.Error'); } else { $redirectAdmin = true; if (Configuration::get('PS_HTACCESS_CACHE_CONTROL')) { if (is_writable(_PS_ROOT_DIR_ . '/.htaccess')) { Tools::generateHtaccess(); } else { $message = $this->l('Before being able to use this tool, you need to:'); $message .= '<br />- ' . $this->l('Create a blank .htaccess in your root directory.'); $message .= '<br />- ' . $this->l('Give it write permissions (CHMOD 666 on Unix system).'); $this->errors[] = Tools::displayError($message, false); Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', false); } } } } else { $this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error'); } } if ((bool) Tools::getValue('media_server_up') && !defined('_PS_HOST_MODE_')) { if ($this->access('edit')) { if (Tools::getValue('_MEDIA_SERVER_1_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_1_'))) { $this->errors[] = $this->trans('Media server #1 is invalid', array(), 'Admin.Parameters.Notification'); } if (Tools::getValue('_MEDIA_SERVER_2_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_2_'))) { $this->errors[] = $this->trans('Media server #2 is invalid', array(), 'Admin.Parameters.Notification'); } if (Tools::getValue('_MEDIA_SERVER_3_') != null && !Validate::isFileName(Tools::getValue('_MEDIA_SERVER_3_'))) { $this->errors[] = $this->trans('Media server #3 is invalid', array(), 'Admin.Parameters.Notification'); } if (!count($this->errors)) { $base_urls = array(); $base_urls['_MEDIA_SERVER_1_'] = Tools::getValue('_MEDIA_SERVER_1_'); $base_urls['_MEDIA_SERVER_2_'] = Tools::getValue('_MEDIA_SERVER_2_'); $base_urls['_MEDIA_SERVER_3_'] = Tools::getValue('_MEDIA_SERVER_3_'); if ($base_urls['_MEDIA_SERVER_1_'] || $base_urls['_MEDIA_SERVER_2_'] || $base_urls['_MEDIA_SERVER_3_']) { Configuration::updateValue('PS_MEDIA_SERVERS', 1); } else { Configuration::updateValue('PS_MEDIA_SERVERS', 0); } rewriteSettingsFile($base_urls, null, null); Configuration::updateValue('PS_MEDIA_SERVER_1', Tools::getValue('_MEDIA_SERVER_1_')); Configuration::updateValue('PS_MEDIA_SERVER_2', Tools::getValue('_MEDIA_SERVER_2_')); Configuration::updateValue('PS_MEDIA_SERVER_3', Tools::getValue('_MEDIA_SERVER_3_')); Tools::clearSmartyCache(); Media::clearCache(); if (is_writable(_PS_ROOT_DIR_ . '/.htaccess')) { Tools::generateHtaccess(null, null, null, '', null, array($base_urls['_MEDIA_SERVER_1_'], $base_urls['_MEDIA_SERVER_2_'], $base_urls['_MEDIA_SERVER_3_'])); unset($this->_fieldsGeneral['_MEDIA_SERVER_1_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_2_']); unset($this->_fieldsGeneral['_MEDIA_SERVER_3_']); $redirectAdmin = true; } else { $message = $this->l('Before being able to use this tool, you need to:'); $message .= '<br />- ' . $this->l('Create a blank .htaccess in your root directory.'); $message .= '<br />- ' . $this->l('Give it write permissions (CHMOD 666 on Unix system).'); $this->errors[] = Tools::displayError($message, false); Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', false); } } } else { $this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error'); } } if ((bool) Tools::getValue('cache_up')) { if ($this->access('edit')) { $config = Yaml::parse(_PS_ROOT_DIR_ . '/app/config/parameters.yml'); $cache_active = (bool) Tools::getValue('cache_active'); if ($caching_system = preg_replace('[^a-zA-Z0-9]', '', Tools::getValue('caching_system'))) { $config['parameters']['ps_caching'] = $caching_system; } else { $cache_active = false; $this->errors[] = $this->trans('The caching system is missing.', array(), 'Admin.Parameters.Notification'); } if ($cache_active) { if ($caching_system == 'CacheMemcache' && !extension_loaded('memcache')) { $this->errors[] = $this->trans('To use Memcached, you must install the Memcache PECL extension on your server.', array(), 'Admin.Parameters.Notification') . ' <a href="http://www.php.net/manual/en/memcache.installation.php">http://www.php.net/manual/en/memcache.installation.php</a>'; } elseif ($caching_system == 'CacheMemcached' && !extension_loaded('memcached')) { $this->errors[] = $this->trans('To use Memcached, you must install the Memcached PECL extension on your server.', array(), 'Admin.Parameters.Notification') . ' <a href="http://www.php.net/manual/en/memcached.installation.php">http://www.php.net/manual/en/memcached.installation.php</a>'; } elseif ($caching_system == 'CacheApc' && !extension_loaded('apc') && !extension_loaded('apcu')) { $this->errors[] = $this->trans('To use APC cache, you must install the APC PECL extension on your server.', array(), 'Admin.Parameters.Notification') . ' <a href="http://fr.php.net/manual/fr/apc.installation.php">http://fr.php.net/manual/fr/apc.installation.php</a>'; } elseif ($caching_system == 'CacheXcache' && !extension_loaded('xcache')) { $this->errors[] = $this->trans('To use Xcache, you must install the Xcache extension on your server.', array(), 'Admin.Parameters.Notification') . ' <a href="http://xcache.lighttpd.net">http://xcache.lighttpd.net</a>'; } elseif ($caching_system == 'CacheXcache' && !ini_get('xcache.var_size')) { $this->errors[] = $this->trans('To use Xcache, you must configure "xcache.var_size" for the Xcache extension (recommended value 16M to 64M).', array(), 'Admin.Parameters.Notification') . ' <a href="http://xcache.lighttpd.net/wiki/XcacheIni">http://xcache.lighttpd.net/wiki/XcacheIni</a>'; } elseif ($caching_system == 'CacheFs') { if (!is_dir(_PS_CACHEFS_DIRECTORY_)) { @mkdir(_PS_CACHEFS_DIRECTORY_, 0777, true); } elseif (!is_writable(_PS_CACHEFS_DIRECTORY_)) { $this->errors[] = $this->trans('To use CacheFS, the directory %directorypath% must be writable.', array('%directorypath%' => realpath(_PS_CACHEFS_DIRECTORY_)), 'Admin.Parameters.Notification'); } } if ($caching_system == 'CacheFs') { if (!($depth = Tools::getValue('ps_cache_fs_directory_depth'))) { $this->errors[] = $this->trans('Please set a directory depth.', array(), 'Admin.Parameters.Notification'); } if (!count($this->errors)) { CacheFs::deleteCacheDirectory(); CacheFs::createCacheDirectories((int) $depth); Configuration::updateValue('PS_CACHEFS_DIRECTORY_DEPTH', (int) $depth); } } elseif ($caching_system == 'CacheMemcache' && !_PS_CACHE_ENABLED_ && _PS_CACHING_SYSTEM_ == 'CacheMemcache') { Cache::getInstance()->flush(); } elseif ($caching_system == 'CacheMemcached' && !_PS_CACHE_ENABLED_ && _PS_CACHING_SYSTEM_ == 'CacheMemcached') { Cache::getInstance()->flush(); } } if (!count($this->errors)) { $config['parameters']['ps_cache_enable'] = $cache_active; // If there is not settings file modification or if the backup and replacement of the settings file worked if (file_put_contents(_PS_ROOT_DIR_ . '/app/config/parameters.yml', Yaml::dump($config))) { if (function_exists('opcache_invalidate')) { opcache_invalidate(_PS_ROOT_DIR_ . '/app/config/parameters.yml'); } $redirectAdmin = true; } else { $this->errors[] = $this->trans('The settings file cannot be overwritten.', array(), 'Admin.Parameters.Notification'); } } } else { $this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error'); } } if ((bool) Tools::getValue('empty_smarty_cache')) { $redirectAdmin = true; Tools::clearSmartyCache(); Tools::clearXMLCache(); Media::clearCache(); Tools::generateIndex(); } if ((bool) Tools::getValue('empty_sf2_cache')) { $redirectAdmin = true; $sf2Refresh = new \PrestaShopBundle\Service\Cache\Refresh(); $sf2Refresh->addCacheClear(_PS_MODE_DEV_ ? 'dev' : 'prod'); $sf2Refresh->execute(); } if (Tools::isSubmit('submitAddconfiguration')) { Configuration::updateGlobalValue('PS_DISABLE_NON_NATIVE_MODULE', (int) Tools::getValue('native_module')); Configuration::updateGlobalValue('PS_DISABLE_OVERRIDES', (int) Tools::getValue('overrides')); if (Tools::isSubmit('debug_mode') && (bool) Tools::getValue('debug_mode')) { $debug_mode_status = $this->enableDebugMode(); } else { $debug_mode_status = $this->disableDebugMode(); } if (!empty($debug_mode_status)) { switch ($debug_mode_status) { case self::DEBUG_MODE_ERROR_COULD_NOT_BACKUP: $this->errors[] = Tools::displayError(sprintf($this->l('Error: could not write to file. Make sure that the correct permissions are set on the file %s'), _PS_ROOT_DIR_ . '/config/defines.old.php')); break; case self::DEBUG_MODE_ERROR_NO_DEFINITION_FOUND: $this->errors[] = Tools::displayError(sprintf($this->l('Error: could not find whether debug mode is enabled. Make sure that the correct permissions are set on the file %s'), _PS_ROOT_DIR_ . '/config/defines.inc.php')); break; case self::DEBUG_MODE_ERROR_NO_WRITE_ACCESS: $this->errors[] = Tools::displayError(sprintf($this->l('Error: could not write to file. Make sure that the correct permissions are set on the file %s'), _PS_ROOT_DIR_ . '/config/defines.inc.php')); break; case self::DEBUG_MODE_ERROR_NO_WRITE_ACCESS_CUSTOM: $this->errors[] = Tools::displayError(sprintf($this->l('Error: could not write to file. Make sure that the correct permissions are set on the file %s'), _PS_ROOT_DIR_ . '/config/defines_custom.inc.php')); break; case self::DEBUG_MODE_ERROR_NO_READ_ACCESS: $this->errors[] = Tools::displayError(sprintf($this->l('Error: could not read file. Make sure that the correct permissions are set on the file %s'), _PS_ROOT_DIR_ . '/config/defines.inc.php')); break; default: break; } } Tools::generateIndex(); } if ($redirectAdmin && (!isset($this->errors) || !count($this->errors))) { Hook::exec('action' . get_class($this) . ucfirst($this->action) . 'After', array('controller' => $this, 'return' => '')); Tools::redirectAdmin(self::$currentIndex . '&token=' . Tools::getValue('token') . '&conf=4'); } }