diff --git a/controllers/admin/AdminGeneratorController.php b/controllers/admin/AdminGeneratorController.php index dc75ce801..53a4911c8 100644 --- a/controllers/admin/AdminGeneratorController.php +++ b/controllers/admin/AdminGeneratorController.php @@ -1,6 +1,6 @@ _htFile = dirname(__FILE__).'/../../.htaccess'; - $this->_rbFile = dirname(__FILE__).'/../../robots.txt'; - $this->_smFile = dirname(__FILE__).'/../../sitemap.xml'; - $this->_rbData = $this->_getRobotsContent(); + $this->ht_file = dirname(__FILE__).'/../../.htaccess'; + $this->rb_file = dirname(__FILE__).'/../../robots.txt'; + $this->sm_file = dirname(__FILE__).'/../../sitemap.xml'; + $this->rb_data = $this->getRobotsContent(); + return parent::__construct(); } @@ -42,8 +43,8 @@ class AdminGeneratorControllerCore extends AdminController { $languages = Language::getLanguages(false); - $this->tpl_option_vars['checkConfiguration_ht'] = $this->_checkConfiguration($this->_htFile); - $this->tpl_option_vars['checkConfiguration_rb'] = $this->_checkConfiguration($this->_rbFile); + $this->tpl_option_vars['checkConfiguration_ht'] = $this->checkConfiguration($this->ht_file); + $this->tpl_option_vars['checkConfiguration_rb'] = $this->checkConfiguration($this->rb_file); $this->tpl_option_vars['ps_htaccess_cache_control'] = Configuration::get('PS_HTACCESS_CACHE_CONTROL'); $this->tpl_option_vars['ps_rewriting_settings'] = Configuration::get('PS_REWRITING_SETTINGS'); $this->tpl_option_vars['ps_htaccess_disable_multiviews'] = Configuration::get('PS_HTACCESS_DISABLE_MULTIVIEWS'); @@ -51,25 +52,29 @@ class AdminGeneratorControllerCore extends AdminController parent::initContent(); } - public function _checkConfiguration($file) + public function checkConfiguration($file) { if (file_exists($file)) return is_writable($file); return is_writable(dirname($file)); } - function postProcess() + public function postProcess() { if (Tools::isSubmit('submitHtaccess')) { if ($this->tabAccess['edit'] === '1') - { + { Configuration::updateValue('PS_HTACCESS_CACHE_CONTROL', (int)Tools::getValue('PS_HTACCESS_CACHE_CONTROL')); Configuration::updateValue('PS_REWRITING_SETTINGS', (int)Tools::getValue('PS_REWRITING_SETTINGS')); Configuration::updateValue('PS_HTACCESS_DISABLE_MULTIVIEWS', (int)Tools::getValue('PS_HTACCESS_DISABLE_MULTIVIEWS')); - if (Tools::generateHtaccess($this->_htFile, Configuration::get('PS_REWRITING_SETTINGS'), Configuration::get('PS_HTACCESS_CACHE_CONTROL'), '', Tools::getValue('PS_HTACCESS_DISABLE_MULTIVIEWS'))) + if (Tools::generateHtaccess( + $this->ht_file, + Configuration::get('PS_REWRITING_SETTINGS'), + Configuration::get('PS_HTACCESS_CACHE_CONTROL'), '', + Tools::getValue('PS_HTACCESS_DISABLE_MULTIVIEWS'))) Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token); - $this->_errors[] = $this->l('Cannot write into file:').' '.$this->_htFile.'
'.$this->l('Please check write permissions.'); + $this->_errors[] = $this->l('Cannot write into file:').' '.$this->ht_file.'
'.$this->l('Please check write permissions.'); } else $this->_errors[] = Tools::displayError('You do not have permission to edit here.'); @@ -79,48 +84,51 @@ class AdminGeneratorControllerCore extends AdminController { if ($this->tabAccess['edit'] === '1') { - if (!$writeFd = @fopen($this->_rbFile, 'w')) - die ($this->l('Cannot write into file:').' '.$this->_rbFile.'
'.$this->l('Please check write permissions.')); + if (!$write_fd = @fopen($this->rb_file, 'w')) + $this->_errors[] = sprintf(Tools::displayError('Cannot write into file: %s. Please check write permissions.'), $this->rb_file); else { // PS Comments - fwrite($writeFd, "# robots.txt automaticaly generated by PrestaShop e-commerce open-source solution\n"); - fwrite($writeFd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n"); - fwrite($writeFd, "# This file is to prevent the crawling and indexing of certain parts\n"); - fwrite($writeFd, "# of your site by web crawlers and spiders run by sites like Yahoo!\n"); - fwrite($writeFd, "# and Google. By telling these \"robots\" where not to go on your site,\n"); - fwrite($writeFd, "# you save bandwidth and server resources.\n"); - fwrite($writeFd, "# For more information about the robots.txt standard, see:\n"); - fwrite($writeFd, "# http://www.robotstxt.org/wc/robots.html\n"); + fwrite($write_fd, "# robots.txt automaticaly generated by PrestaShop e-commerce open-source solution\n"); + fwrite($write_fd, "# http://www.prestashop.com - http://www.prestashop.com/forums\n"); + fwrite($write_fd, "# This file is to prevent the crawling and indexing of certain parts\n"); + fwrite($write_fd, "# of your site by web crawlers and spiders run by sites like Yahoo!\n"); + fwrite($write_fd, "# and Google. By telling these \"robots\" where not to go on your site,\n"); + fwrite($write_fd, "# you save bandwidth and server resources.\n"); + fwrite($write_fd, "# For more information about the robots.txt standard, see:\n"); + fwrite($write_fd, "# http://www.robotstxt.org/wc/robots.html\n"); //GoogleBot specific - fwrite($writeFd, "# GoogleBot specific\n"); - fwrite($writeFd, "User-agent: Googlebot\n"); - foreach ($this->_rbData['GB'] as $GB) - fwrite($writeFd, 'Disallow: '.__PS_BASE_URI__.$GB."\n"); - + fwrite($write_fd, "# GoogleBot specific\n"); + fwrite($write_fd, "User-agent: Googlebot\n"); + foreach ($this->rb_data['GB'] as $gb) + fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$gb."\n"); + // User-Agent - fwrite($writeFd, "# All bots\n"); - fwrite($writeFd, "User-agent: *\n"); + fwrite($write_fd, "# All bots\n"); + fwrite($write_fd, "User-agent: *\n"); // Directories - fwrite($writeFd, "# Directories\n"); - foreach ($this->_rbData['Directories'] as $dir) - fwrite($writeFd, 'Disallow: '.__PS_BASE_URI__.$dir."\n"); + fwrite($write_fd, "# Directories\n"); + foreach ($this->rb_data['Directories'] as $dir) + fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$dir."\n"); // Files - fwrite($writeFd, "# Files\n"); - foreach ($this->_rbData['Files'] as $file) - fwrite($writeFd, 'Disallow: '.__PS_BASE_URI__.$file."\n"); + fwrite($write_fd, "# Files\n"); + foreach ($this->rb_data['Files'] as $file) + fwrite($write_fd, 'Disallow: '.__PS_BASE_URI__.$file."\n"); // Sitemap - fwrite($writeFd, "# Sitemap\n"); - if (file_exists($this->_smFile)) - if (filesize($this->_smFile)) - fwrite($writeFd, 'Sitemap: '.(Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'sitemap.xml'."\n"); - fwrite($writeFd, "\n"); + fwrite($write_fd, "# Sitemap\n"); + if (file_exists($this->sm_file)) + if (filesize($this->sm_file)) + fwrite( + $write_fd, + 'Sitemap: '.(Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').$_SERVER['SERVER_NAME'].__PS_BASE_URI__.'sitemap.xml'."\n" + ); + fwrite($write_fd, "\n"); - fclose($writeFd); + fclose($write_fd); Tools::redirectAdmin(self::$currentIndex.'&conf=4&token='.$this->token); } } else @@ -128,7 +136,7 @@ class AdminGeneratorControllerCore extends AdminController } } - public function _getRobotsContent() + public function getRobotsContent() { $tab = array(); diff --git a/controllers/admin/AdminInformationController.php b/controllers/admin/AdminInformationController.php index 685727e11..c0b7a4a84 100644 --- a/controllers/admin/AdminInformationController.php +++ b/controllers/admin/AdminInformationController.php @@ -54,9 +54,9 @@ class AdminInformationControllerCore extends AdminController 'encryption' => Configuration::get('PS_MAIL_SMTP_ENCRYPTION'), 'port' => Configuration::get('PS_MAIL_SMTP_PORT'), ), - 'user_agent' => $_SERVER["HTTP_USER_AGENT"], + 'user_agent' => $_SERVER['HTTP_USER_AGENT'], )); - + $this->context->smarty->assign($this->getTestResult()); } @@ -72,7 +72,7 @@ class AdminInformationControllerCore extends AdminController $tests = ConfigurationTest::getDefaultTests(); $tests_op = ConfigurationTest::getDefaultTestsOp(); - $testsErrors = array( + $tests_errors = array( 'phpversion' => $this->l('Update your PHP version'), 'upload' => $this->l('Configure your server to allow the upload file'), 'system' => $this->l('Configure your server to allow the creation of directories and write to files'), @@ -93,15 +93,15 @@ class AdminInformationControllerCore extends AdminController 'gz' => $this->l('Enable GZIP compression on your server') ); - $paramsRequiredResults = ConfigurationTest::check($tests); - $paramsOptionalResults = ConfigurationTest::check($tests_op); + $params_required_results = ConfigurationTest::check($tests); + $params_optional_results = ConfigurationTest::check($tests_op); return array( - 'failRequired' => in_array('fail', $paramsRequiredResults), - 'failOptional' => in_array('fail', $paramsOptionalResults), - 'testsErrors' => $testsErrors, - 'testsRequired' => $paramsRequiredResults, - 'testsOptional' => $paramsOptionalResults, + 'failRequired' => in_array('fail', $params_required_results), + 'failOptional' => in_array('fail', $params_optional_results), + 'testsErrors' => $tests_errors, + 'testsRequired' => $params_required_results, + 'testsOptional' => $params_optional_results, ); } } diff --git a/controllers/admin/AdminLocalizationController.php b/controllers/admin/AdminLocalizationController.php index 94b148f76..f701a4219 100644 --- a/controllers/admin/AdminLocalizationController.php +++ b/controllers/admin/AdminLocalizationController.php @@ -40,10 +40,34 @@ class AdminLocalizationControllerCore extends AdminController 'width' => 'width2', 'icon' => 'localization', 'fields' => array( - 'PS_WEIGHT_UNIT' => array('title' => $this->l('Weight unit:'), 'desc' => $this->l('The weight unit of your shop (eg. kg or lbs)'), 'validation' => 'isWeightUnit', 'required' => true, 'type' => 'text'), - 'PS_DISTANCE_UNIT' => array('title' => $this->l('Distance unit:'), 'desc' => $this->l('The distance unit of your shop (eg. km or mi)'), 'validation' => 'isDistanceUnit', 'required' => true, 'type' => 'text'), - 'PS_VOLUME_UNIT' => array('title' => $this->l('Volume unit:'), 'desc' => $this->l('The volume unit of your shop'), 'validation' => 'isWeightUnit', 'required' => true, 'type' => 'text'), - 'PS_DIMENSION_UNIT' => array('title' => $this->l('Dimension unit:'), 'desc' => $this->l('The dimension unit of your shop (eg. cm or in)'), 'validation' => 'isDistanceUnit', 'required' => true, 'type' => 'text'), + 'PS_WEIGHT_UNIT' => array( + 'title' => $this->l('Weight unit:'), + 'desc' => $this->l('The weight unit of your shop (eg. kg or lbs)'), + 'validation' => 'isWeightUnit', + 'required' => true, + 'type' => 'text' + ), + 'PS_DISTANCE_UNIT' => array( + 'title' => $this->l('Distance unit:'), + 'desc' => $this->l('The distance unit of your shop (eg. km or mi)'), + 'validation' => 'isDistanceUnit', + 'required' => true, + 'type' => 'text' + ), + 'PS_VOLUME_UNIT' => array( + 'title' => $this->l('Volume unit:'), + 'desc' => $this->l('The volume unit of your shop'), + 'validation' => 'isWeightUnit', + 'required' => true, + 'type' => 'text' + ), + 'PS_DIMENSION_UNIT' => array( + 'title' => $this->l('Dimension unit:'), + 'desc' => $this->l('The dimension unit of your shop (eg. cm or in)'), + 'validation' => 'isDistanceUnit', + 'required' => true, + 'type' => 'text' + ) ), 'submit' => array('title' => $this->l(' Save '), 'class' => 'button') ), @@ -52,8 +76,20 @@ class AdminLocalizationControllerCore extends AdminController 'width' => 'width2', 'icon' => 'localization', 'fields' => array( - 'PS_LOCALE_LANGUAGE' => array('title' => $this->l('Language locale:'), 'desc' => $this->l('Your server\'s language locale.'), 'validation' => 'isLanguageIsoCode', 'type' => 'text', 'visibility' => Shop::CONTEXT_ALL), - 'PS_LOCALE_COUNTRY' => array('title' => $this->l('Country locale:'), 'desc' => $this->l('Your server\'s country locale.'), 'validation' => 'isLanguageIsoCode', 'type' => 'text', 'visibility' => Shop::CONTEXT_ALL) + 'PS_LOCALE_LANGUAGE' => array( + 'title' => $this->l('Language locale:'), + 'desc' => $this->l('Your server\'s language locale.'), + 'validation' => 'isLanguageIsoCode', + 'type' => 'text', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_LOCALE_COUNTRY' => array( + 'title' => $this->l('Country locale:'), + 'desc' => $this->l('Your server\'s country locale.'), + 'validation' => 'isLanguageIsoCode', + 'type' => 'text', + 'visibility' => Shop::CONTEXT_ALL + ) ), 'submit' => array('title' => $this->l(' Save '), 'class' => 'button') ), @@ -64,21 +100,22 @@ class AdminLocalizationControllerCore extends AdminController { if (Tools::isSubmit('submitLocalizationPack')) { - if (!$pack = @Tools::file_get_contents('http://www.prestashop.com/download/localization/'.Tools::getValue('iso_localization_pack').'.xml') AND !$pack = @Tools::file_get_contents(dirname(__FILE__).'/../../localization/'.Tools::getValue('iso_localization_pack').'.xml')) + if (!$pack = @Tools::file_get_contents('http://www.prestashop.com/download/localization/'.Tools::getValue('iso_localization_pack').'.xml') && + !$pack = @Tools::file_get_contents(dirname(__FILE__).'/../../localization/'.Tools::getValue('iso_localization_pack').'.xml')) $this->_errors[] = Tools::displayError('Cannot load localization pack (from prestashop.com and from your local folder "localization")'); - elseif (!$selection = Tools::getValue('selection')) + else if (!$selection = Tools::getValue('selection')) $this->_errors[] = Tools::displayError('Please select at least one content item to import.'); else { - foreach ($selection AS $selected) + foreach ($selection as $selected) if (!Validate::isLocalizationPackSelection($selected)) { $this->_errors[] = Tools::displayError('Invalid selection'); - return ; + return; } - $localizationPack = new LocalizationPack(); - if (!$localizationPack->loadLocalisationPack($pack, $selection)) - $this->_errors = array_merge($this->_errors, $localizationPack->getErrors()); + $localization_pack = new LocalizationPack(); + if (!$localization_pack->loadLocalisationPack($pack, $selection)) + $this->_errors = array_merge($this->_errors, $localization_pack->getErrors()); else Tools::redirectAdmin(self::$currentIndex.'&conf=23&token='.$this->token); } @@ -89,19 +126,19 @@ class AdminLocalizationControllerCore extends AdminController public function initContent() { - $localizations_pack = false; + $localizations_pack = false; $this->tpl_option_vars['options_content'] = $this->initOptions(); $xml_localization = Tools::simplexml_load_file('http://www.prestashop.com/rss/localization.xml'); if (!$xml_localization) { - $localizationFile = dirname(__FILE__).'/../../localization/localization.xml'; - if (file_exists($localizationFile)) - $xml_localization = simplexml_load_file($localizationFile); + $localization_file = dirname(__FILE__).'/../../localization/localization.xml'; + if (file_exists($localization_file)) + $xml_localization = simplexml_load_file($localization_file); } if ($xml_localization) - foreach($xml_localization->pack as $pack) + foreach ($xml_localization->pack as $pack) $localizations_pack[(string)$pack->iso] = (string)$pack->name; $this->tpl_option_vars['localizations_pack'] = $localizations_pack; diff --git a/controllers/admin/AdminPreferencesController.php b/controllers/admin/AdminPreferencesController.php index 61cdc2481..b1b8e96fe 100644 --- a/controllers/admin/AdminPreferencesController.php +++ b/controllers/admin/AdminPreferencesController.php @@ -89,42 +89,234 @@ class AdminPreferencesControllerCore extends AdminController $cms_tab[] = array('id' => $cms_file['id_cms'], 'name' => $cms_file['meta_title']); $fields = array( - 'PS_SHOP_ENABLE' => array('title' => $this->l('Enable Shop'), 'desc' => $this->l('Activate or deactivate your shop. Deactivate your shop while you perform maintenance on it. Please note that the webservice will not be disabled'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_MAINTENANCE_IP' => array('title' => $this->l('Maintenance IP'), 'desc' => $this->l('IP addresses allowed to access the Front Office even if shop is disabled. Use a comma to separate them (e.g., 42.24.4.2,127.0.0.1,99.98.97.96)'), 'validation' => 'isGenericName', 'type' => 'maintenance_ip', 'size' => 30, 'default' => ''), - 'PS_SSL_ENABLED' => array('title' => $this->l('Enable SSL'), 'desc' => $this->l('If your hosting provider allows SSL, you can activate SSL encryption (https://) for customer account identification and order processing'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'default' => '0'), - 'PS_COOKIE_CHECKIP' => array('title' => $this->l('Check IP on the cookie'), 'desc' => $this->l('Check the IP address of the cookie in order to avoid your cookie being stolen'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'default' => '0', 'visibility' => Shop::CONTEXT_ALL), - 'PS_TOKEN_ENABLE' => array('title' => $this->l('Increase Front Office security'), 'desc' => $this->l('Enable or disable token on the Front Office in order to improve PrestaShop security'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'default' => '0', 'visibility' => Shop::CONTEXT_ALL), - 'PS_HELPBOX' => array('title' => $this->l('Back Office help boxes'), 'desc' => $this->l('Enable yellow help boxes which are displayed under form fields in the Back Office'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'visibility' => Shop::CONTEXT_ALL), - 'PS_COOKIE_LIFETIME_FO' => array('title' => $this->l('Lifetime of the Front Office cookie'), 'desc' => $this->l('Indicate the number of hours'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'text', 'default' => '480', 'visibility' => Shop::CONTEXT_ALL), - 'PS_COOKIE_LIFETIME_BO' => array('title' => $this->l('Lifetime of the Back Office cookie'), 'desc' => $this->l('Indicate the number of hours'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'text', 'default' => '480', 'visibility' => Shop::CONTEXT_ALL), - 'PS_ORDER_PROCESS_TYPE' => array('title' => $this->l('Order process type'), 'desc' => $this->l('You can choose the order process type as either standard (5 steps) or One Page Checkout'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'select', 'list' => $order_process_type, 'identifier' => 'value'), - 'PS_REGISTRATION_PROCESS_TYPE' => array('title' => $this->l('Registration process type'), 'desc' => $this->l('The "Only account creation" step register process allows the customer to register faster, and create his address later.'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'select', 'list' => $registration_process_type, 'identifier' => 'value'), - 'PS_GUEST_CHECKOUT_ENABLED' => array('title' => $this->l('Enable guest checkout'), 'desc' => $this->l('Your guest can make an order without registering'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_CONDITIONS' => array('title' => $this->l('Terms of service'), 'desc' => $this->l('Require customers to accept or decline terms of service before processing the order'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'js' => array('on' => 'onchange="changeCMSActivationAuthorization()"', 'off' => 'onchange="changeCMSActivationAuthorization()"')), - 'PS_CONDITIONS_CMS_ID' => array('title' => $this->l('Conditions of use CMS page'), 'desc' => $this->l('Choose the Conditions of use CMS page'), 'validation' => 'isInt', 'type' => 'select', 'list' => $cms_tab, 'identifier' => 'id', 'cast' => 'intval'), - 'PS_GIFT_WRAPPING' => array('title' => $this->l('Offer gift-wrapping'), 'desc' => $this->l('Suggest gift-wrapping to customer and possibility of leaving a message'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_GIFT_WRAPPING_PRICE' => array('title' => $this->l('Gift-wrapping price'), 'desc' => $this->l('Set a price for gift-wrapping'), 'validation' => 'isPrice', 'cast' => 'floatval', 'type' => 'price'), - 'PS_GIFT_WRAPPING_TAX' => array('title' => $this->l('Gift-wrapping tax'), 'desc' => $this->l('Set a tax for gift-wrapping'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'select', 'list' => $taxes, 'identifier' => 'id'), - 'PS_ATTACHMENT_MAXIMUM_SIZE' => array('title' => $this->l('Attachment maximum size'), 'desc' => $this->l('Set the maximum size of attachment files (in MegaBytes).').' '.$this->l('Maximum:').' '.((int)str_replace('M', '', ini_get('post_max_size')) > (int)str_replace('M', '', ini_get('upload_max_filesize')) ? ini_get('upload_max_filesize') : ini_get('post_max_size')), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'text', 'default' => '2'), - 'PS_RECYCLABLE_PACK' => array('title' => $this->l('Offer recycled packaging'), 'desc' => $this->l('Suggest recycled packaging to customer'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_CART_FOLLOWING' => array('title' => $this->l('Cart re-display at login'), 'desc' => $this->l('After customer logs in, recall and display contents of his/her last shopping cart'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_PRICE_ROUND_MODE' => array('title' => $this->l('Round mode'), 'desc' => $this->l('You can choose how to round prices: always round superior; always round inferior, or classic rounding'), 'validation' => 'isInt', 'cast' => 'intval', 'type' => 'select', 'list' => $round_mode, 'identifier' => 'value'), - 'PRESTASTORE_LIVE' => array('title' => $this->l('Automatically check for module updates'), 'desc' => $this->l('New modules and updates are displayed on the modules page'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool', 'visibility' => Shop::CONTEXT_ALL), - 'PS_HIDE_OPTIMIZATION_TIPS' => array('title' => $this->l('Hide optimization tips'), 'desc' => $this->l('Hide optimization tips on the back office homepage'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_DISPLAY_SUPPLIERS' => array('title' => $this->l('Display suppliers and manufacturers'), 'desc' => $this->l('Display manufacturers and suppliers list even if corresponding blocks are disabled'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_SHOW_NEW_ORDERS' => array('title' => $this->l('Show notifications for new orders'), 'desc' => $this->l('This will display notifications when new orders will be made on your shop'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_SHOW_NEW_CUSTOMERS' => array('title' => $this->l('Show notifications for new customers'), 'desc' => $this->l('This will display notifications when new customers will register on your shop'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), - 'PS_SHOW_NEW_MESSAGES' => array('title' => $this->l('Show notifications for new messages'), 'desc' => $this->l('This will display notifications when new messages will be posted on your shop'), 'validation' => 'isBool', 'cast' => 'intval', 'type' => 'bool'), + 'PS_SHOP_ENABLE' => array( + 'title' => $this->l('Enable Shop'), + 'desc' => $this->l('Activate or deactivate your shop. Deactivate your shop while you perform maintenance on it. Please note that the webservice will not be disabled'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_MAINTENANCE_IP' => array( + 'title' => $this->l('Maintenance IP'), + 'desc' => $this->l('IP addresses allowed to access the Front Office even if shop is disabled. Use a comma to separate them (e.g., 42.24.4.2,127.0.0.1,99.98.97.96)'), + 'validation' => 'isGenericName', + 'type' => 'maintenance_ip', + 'size' => 30, + 'default' => '' + ), + 'PS_SSL_ENABLED' => array( + 'title' => $this->l('Enable SSL'), + 'desc' => $this->l('If your hosting provider allows SSL, you can activate SSL encryption (https://) for customer account identification and order processing'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'default' => '0' + ), + 'PS_COOKIE_CHECKIP' => array( + 'title' => $this->l('Check IP on the cookie'), + 'desc' => $this->l('Check the IP address of the cookie in order to avoid your cookie being stolen'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'default' => '0', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_TOKEN_ENABLE' => array( + 'title' => $this->l('Increase Front Office security'), + 'desc' => $this->l('Enable or disable token on the Front Office in order to improve PrestaShop security'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'default' => '0', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_HELPBOX' => array( + 'title' => $this->l('Back Office help boxes'), + 'desc' => $this->l('Enable yellow help boxes which are displayed under form fields in the Back Office'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_COOKIE_LIFETIME_FO' => array( + 'title' => $this->l('Lifetime of the Front Office cookie'), + 'desc' => $this->l('Indicate the number of hours'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'text', + 'default' => '480', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_COOKIE_LIFETIME_BO' => array( + 'title' => $this->l('Lifetime of the Back Office cookie'), + 'desc' => $this->l('Indicate the number of hours'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'text', + 'default' => '480', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_ORDER_PROCESS_TYPE' => array( + 'title' => $this->l('Order process type'), + 'desc' => $this->l('You can choose the order process type as either standard (5 steps) or One Page Checkout'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'select', + 'list' => $order_process_type, + 'identifier' => 'value' + ), + 'PS_REGISTRATION_PROCESS_TYPE' => array( + 'title' => $this->l('Registration process type'), + 'desc' => $this->l('The "Only account creation" step register process allows the customer to register faster, and create his address later.'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'select', + 'list' => $registration_process_type, + 'identifier' => 'value' + ), + 'PS_GUEST_CHECKOUT_ENABLED' => array( + 'title' => $this->l('Enable guest checkout'), + 'desc' => $this->l('Your guest can make an order without registering'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_CONDITIONS' => array( + 'title' => $this->l('Terms of service'), + 'desc' => $this->l('Require customers to accept or decline terms of service before processing the order'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'js' => array( + 'on' => 'onchange="changeCMSActivationAuthorization()"', + 'off' => 'onchange="changeCMSActivationAuthorization()"' + ) + ), + 'PS_CONDITIONS_CMS_ID' => array( + 'title' => $this->l('Conditions of use CMS page'), + 'desc' => $this->l('Choose the Conditions of use CMS page'), + 'validation' => 'isInt', + 'type' => 'select', + 'list' => $cms_tab, + 'identifier' => 'id', + 'cast' => 'intval' + ), + 'PS_GIFT_WRAPPING' => array( + 'title' => $this->l('Offer gift-wrapping'), + 'desc' => $this->l('Suggest gift-wrapping to customer and possibility of leaving a message'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_GIFT_WRAPPING_PRICE' => array( + 'title' => $this->l('Gift-wrapping price'), + 'desc' => $this->l('Set a price for gift-wrapping'), + 'validation' => 'isPrice', + 'cast' => 'floatval', + 'type' => 'price' + ), + 'PS_GIFT_WRAPPING_TAX' => array( + 'title' => $this->l('Gift-wrapping tax'), + 'desc' => $this->l('Set a tax for gift-wrapping'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'select', + 'list' => $taxes, + 'identifier' => 'id' + ), + 'PS_ATTACHMENT_MAXIMUM_SIZE' => array( + 'title' => $this->l('Attachment maximum size'), + 'desc' => $this->l('Set the maximum size of attachment files (in MegaBytes).').' '.$this->l('Maximum:').' '. + ((int)str_replace('M', '', ini_get('post_max_size')) > (int)str_replace('M', '', ini_get('upload_max_filesize')) ? ini_get('upload_max_filesize') : ini_get('post_max_size')), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'text', + 'default' => '2' + ), + 'PS_RECYCLABLE_PACK' => array( + 'title' => $this->l('Offer recycled packaging'), + 'desc' => $this->l('Suggest recycled packaging to customer'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_CART_FOLLOWING' => array( + 'title' => $this->l('Cart re-display at login'), + 'desc' => $this->l('After customer logs in, recall and display contents of his/her last shopping cart'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_PRICE_ROUND_MODE' => array( + 'title' => $this->l('Round mode'), + 'desc' => $this->l('You can choose how to round prices: always round superior; always round inferior, or classic rounding'), + 'validation' => 'isInt', + 'cast' => 'intval', + 'type' => 'select', + 'list' => $round_mode, + 'identifier' => 'value' + ), + 'PRESTASTORE_LIVE' => array( + 'title' => $this->l('Automatically check for module updates'), + 'desc' => $this->l('New modules and updates are displayed on the modules page'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool', + 'visibility' => Shop::CONTEXT_ALL + ), + 'PS_HIDE_OPTIMIZATION_TIPS' => array( + 'title' => $this->l('Hide optimization tips'), + 'desc' => $this->l('Hide optimization tips on the back office homepage'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_DISPLAY_SUPPLIERS' => array( + 'title' => $this->l('Display suppliers and manufacturers'), + 'desc' => $this->l('Display manufacturers and suppliers list even if corresponding blocks are disabled'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_SHOW_NEW_ORDERS' => array( + 'title' => $this->l('Show notifications for new orders'), + 'desc' => $this->l('This will display notifications when new orders will be made on your shop'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_SHOW_NEW_CUSTOMERS' => array( + 'title' => $this->l('Show notifications for new customers'), + 'desc' => $this->l('This will display notifications when new customers will register on your shop'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ), + 'PS_SHOW_NEW_MESSAGES' => array( + 'title' => $this->l('Show notifications for new messages'), + 'desc' => $this->l('This will display notifications when new messages will be posted on your shop'), + 'validation' => 'isBool', + 'cast' => 'intval', + 'type' => 'bool' + ) ); if (function_exists('date_default_timezone_set')) - $fields['PS_TIMEZONE'] = array('title' => $this->l('Time Zone:'), 'validation' => 'isAnything', 'type' => 'select', 'list' => $timezones, 'identifier' => 'name', 'visibility' => Shop::CONTEXT_ALL); + $fields['PS_TIMEZONE'] = array( + 'title' => $this->l('Time Zone:'), + 'validation' => 'isAnything', + 'type' => 'select', + 'list' => $timezones, + 'identifier' => 'name', + 'visibility' => Shop::CONTEXT_ALL + ); // No HTTPS activation if you haven't already. if (!Tools::usingSecureMode()) { $fields['PS_SSL_ENABLED']['type'] = 'disabled'; - $fields['PS_SSL_ENABLED']['disabled'] = ''.$this->l('Please click here to use HTTPS protocol before enabling SSL.').''; + $fields['PS_SSL_ENABLED']['disabled'] = ''. + $this->l('Please click here to use HTTPS protocol before enabling SSL.').''; } $this->options = array( diff --git a/controllers/admin/AdminTagsController.php b/controllers/admin/AdminTagsController.php index 9b0164be7..57dfda37a 100644 --- a/controllers/admin/AdminTagsController.php +++ b/controllers/admin/AdminTagsController.php @@ -31,32 +31,58 @@ class AdminTagsControllerCore extends AdminController { $this->table = 'tag'; $this->className = 'Tag'; - $this->addRowAction('edit'); - $this->addRowAction('delete'); - $this->bulk_actions = array( - 'delete' => array('text' => $this->l('Delete selected'), - 'confirm' => $this->l('Delete selected items?')) - ); $this->fieldsDisplay = array( - 'id_tag' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25, 'filter_key' => 'a!id_seller_message'), - 'lang' => array('title' => $this->l('Language'), 'filter_key' => 'l!name'), - 'name' => array('title' => $this->l('Name'), 'width' => 200, 'filter_key' => 'a!name'), - 'products' => array('title' => $this->l('Products'), 'align' => 'right', 'havingFilter' => true)); - - $this->_select = 'l.name as lang, COUNT(pt.id_product) as products'; - $this->_join = ' - LEFT JOIN `'._DB_PREFIX_.'product_tag` pt ON (a.`id_tag` = pt.`id_tag`) - LEFT JOIN `'._DB_PREFIX_.'lang` l ON (l.`id_lang` = a.`id_lang`)'; - $this->_group = 'GROUP BY a.name, a.id_lang'; + 'id_tag' => array( + 'title' => $this->l('ID'), + 'align' => 'center', + 'width' => 25, + 'filter_key' => 'a!id_seller_message' + ), + 'lang' => array( + 'title' => $this->l('Language'), + 'filter_key' => 'l!name' + ), + 'name' => array( + 'title' => $this->l('Name'), + 'width' => 200, + 'filter_key' => 'a!name' + ), + 'products' => array( + 'title' => $this->l('Products'), + 'align' => 'right', + 'havingFilter' => true + ) + ); parent::__construct(); } + public function initList() + { + $this->addRowAction('edit'); + $this->addRowAction('delete'); + + $this->bulk_actions = array( + 'delete' => array('text' => $this->l('Delete selected'), + 'confirm' => $this->l('Delete selected items?')) + ); + + $this->_select = 'l.name as lang, COUNT(pt.id_product) as products'; + $this->_join = ' + LEFT JOIN `'._DB_PREFIX_.'product_tag` pt + ON (a.`id_tag` = pt.`id_tag`) + LEFT JOIN `'._DB_PREFIX_.'lang` l + ON (l.`id_lang` = a.`id_lang`)'; + $this->_group = 'GROUP BY a.name, a.id_lang'; + + return parent::initList(); + } + public function postProcess() { - if ($this->tabAccess['edit'] === '1' AND Tools::getValue('submitAdd'.$this->table)) - if ($id = (int)(Tools::getValue($this->identifier)) AND $obj = new $this->className($id) AND Validate::isLoadedObject($obj)) + if ($this->tabAccess['edit'] === '1' && Tools::getValue('submitAdd'.$this->table)) + if ($id = (int)Tools::getValue($this->identifier) && $obj = new $this->className($id) && Validate::isLoadedObject($obj)) $obj->setProducts($_POST['products']); return parent::postProcess(); }