From 714c65de5670560a5edf65b0c0bd0eb7de5d0e85 Mon Sep 17 00:00:00 2001 From: rMalie Date: Wed, 7 Sep 2011 16:23:13 +0000 Subject: [PATCH] // Merg// Merge -> revision 8395 --- admin-dev/tabs/AdminAttributesGroups.php | 1 + admin-dev/tabs/AdminFeatures.php | 1 + admin-dev/tabs/AdminModules.php | 8 +- admin-dev/tabs/AdminUpgrade.php | 1989 ++++++++++++++++++++++ classes/AttributeGroup.php | 16 +- classes/Feature.php | 10 +- classes/Upgrader.php | 21 +- controllers/CategoryController.php | 2 +- install-dev/sql/db_settings_lite.sql | 385 +++-- install-dev/sql/upgrade/1.4.4.0.sql | 3 +- install-dev/sql/upgrade/1.4.5.0.sql | 11 +- modules/autoupgrade/AdminSelfUpgrade.php | 31 +- modules/autoupgrade/Upgrader.php | 77 +- modules/autoupgrade/autoupgrade.php | 25 +- modules/autoupgrade/fr.php | 300 ++-- modules/blocklayered/blocklayered.js | 26 +- modules/blocklayered/blocklayered.php | 359 +++- modules/blocklayered/blocklayered.tpl | 24 +- modules/blocklayered/fr.php | 4 - modules/ebay/config.xml | 6 +- modules/ebay/eBayRequest.php | 4 +- modules/ebay/ebay.php | 91 +- modules/ebay/fr.php | 5 +- modules/mailalerts/fr.php | 2 +- modules/mondialrelay/fr.php | 5 +- modules/shopimporter/fr.php | 8 - modules/uspscarrier/fr.php | 4 +- 27 files changed, 2801 insertions(+), 617 deletions(-) diff --git a/admin-dev/tabs/AdminAttributesGroups.php b/admin-dev/tabs/AdminAttributesGroups.php index 97d11749d..611a4b493 100644 --- a/admin-dev/tabs/AdminAttributesGroups.php +++ b/admin-dev/tabs/AdminAttributesGroups.php @@ -227,6 +227,7 @@ class AdminAttributesGroups extends AdminTab echo ''; } echo ' + '.Module::hookExec('attributeGroupForm', array('id_attribute_group' => $obj->id)).'
diff --git a/admin-dev/tabs/AdminFeatures.php b/admin-dev/tabs/AdminFeatures.php index 089bdb3cb..9e4852df8 100644 --- a/admin-dev/tabs/AdminFeatures.php +++ b/admin-dev/tabs/AdminFeatures.php @@ -170,6 +170,7 @@ class AdminFeatures extends AdminTab echo ''; } echo ' + '.Module::hookExec('featureForm', array('id_attribute_group' => $obj->id)).'
diff --git a/admin-dev/tabs/AdminModules.php b/admin-dev/tabs/AdminModules.php index 06ec4e213..1a10c38a7 100644 --- a/admin-dev/tabs/AdminModules.php +++ b/admin-dev/tabs/AdminModules.php @@ -948,14 +948,12 @@ class AdminModules extends AdminTab public function displayOptions($module) { $return = ''; - $href = self::$currentIndex.'&token='.$this->token.'&module_name='. - urlencode($module->name).'&tab_module='.$module->tab; - + $href = self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&tab_module='.$module->tab; if ($module->id) - $return .= 'active && method_exists($module, 'onclickOption')? 'onclick="'.$module->onclickOption('desactive', $href).'"' : '').' href="'.self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&'.($module->active ? 'enable=0' : 'enable=1').'&tab_module='.$module->tab.'&module_name='.urlencode($module->name).'" '.((Shop::isMultiShopActivated()) ? 'title="'.htmlspecialchars($module->active ? $this->l('Disable this module') : $this->l('Enable this module for all shops')).'"' : '').'>'.($module->active ? $this->l('Disable') : $this->l('Enable')).'  '; + $return .= 'active && method_exists($module, 'onclickOption')? 'onclick="'.$module->onclickOption('desactive', $href).'"' : '').' href="'.self::$currentIndex.'&token='.$this->token.'&module_name='.urlencode($module->name).'&'.($module->active ? 'enable=0' : 'enable=1').'&tab_module='.$module->tab.'" '.((Shop::isMultiShopActivated()) ? 'title="'.htmlspecialchars($module->active ? $this->l('Disable this module') : $this->l('Enable this module for all shops')).'"' : '').'>'.($module->active ? $this->l('Disable') : $this->l('Enable')).'  '; if ($module->id AND $module->active) - $return .= ''.$this->l('Reset').'  '; + $return .= ''.$this->l('Reset').'  '; if ($module->id AND (method_exists($module, 'getContent') OR (isset($module->is_configurable) AND $module->is_configurable) OR Shop::isMultiShopActivated())) $return .= ''.$this->l('Configure').'  '; diff --git a/admin-dev/tabs/AdminUpgrade.php b/admin-dev/tabs/AdminUpgrade.php index dc8042784..77ed6fc3b 100755 --- a/admin-dev/tabs/AdminUpgrade.php +++ b/admin-dev/tabs/AdminUpgrade.php @@ -29,6 +29,1539 @@ require_once(_PS_ADMIN_DIR_.'/tabs/AdminPreferences.php'); class AdminUpgrade extends AdminPreferences { + public $ajax = false; + public $nextResponseType = 'json'; // json, xml + public $next = 'N/A'; + public $isModule = false; + + /** + * set to false if the current step is a loop + * + * @var boolean + */ + public $stepDone = true; + public $status = true; + public $error ='0'; + public $nextDesc = '.'; + public $nextParams = array(); + public $nextQuickInfo = array(); + public $currentParams = array(); + /** + * @var array theses values will be automatically added in "nextParams" + * if their properties exists + */ + public $ajaxParams = array( + // autoupgrade options + 'dontBackupImages', + 'keepDefaultTheme', + 'keepTrad', + 'manualMode', + 'desactivateCustomModule', + + // + 'backupDbFilename', + 'backupFilesFilename', + + + ); + public $autoupgradePath = null; + /** + * autoupgradeDir + * + * @var string directory relative to admin dir + */ + public $autoupgradeDir = 'autoupgrade'; + public $latestRootDir = ''; + public $prodRootDir = ''; + public $adminDir = ''; + public $rootWritable = false; + public $svnDir = 'svn'; + public $destDownloadFilename = 'prestashop.zip'; + public $toUpgradeFileList = array(); + public $backupFileList = array(); + public $sampleFileList = array(); + private $backupIgnoreFiles = array(); + private $backupIgnoreAbsoluteFiles = array(); + private $excludeFilesFromUpgrade = array(); + private $excludeAbsoluteFilesFromUpgrade = array(); + + private $backupFilesFilename = ''; + private $backupDbFilename = ''; + +/** + * int loopBackupFiles : if your server has a low memory size, lower this value + * @TODO remove the static, add a const, and use it like this : min(AdminUpgrade::DEFAULT_LOOP_ADD_FILE_TO_ZIP,Configuration::get('LOOP_ADD_FILE_TO_ZIP'); + */ + public static $loopBackupFiles = 1000; +/** + * int loopUpgradeFiles : if your server has a low memory size, lower this value + */ + public static $loopUpgradeFiles = 1000; +/** + * intloopRemoveSamples : if your server has a low memory size, lower this value + */ + public static $loopRemoveSamples = 1000; + +// public static $skipAction = array('unzip'=>'listSampleFiles'); + public static $skipAction; + public $useSvn; + + protected $_includeContainer = false; + + public function encrypt($string) + { + return md5(_COOKIE_KEY_.$string); + } + public function checkToken() + { + // simple checkToken in ajax-mode, to be free of Cookie class (and no Tools::encrypt() too ) + if ($this->ajax) + return ($_COOKIE['autoupgrade'] == $this->encrypt($_COOKIE['id_employee'])); + else + return parent::checkToken(); + } + + /** + * create cookies id_employee, id_tab and autoupgrade (token) + */ + public function createCustomToken() + { + // ajax-mode for autoupgrade, we can't use the classic authentication + // so, we'll create a cookie in admin dir, based on cookie key + global $cookie; + $id_employee = $cookie->id_employee; + + $cookiePath = __PS_BASE_URI__.str_replace($this->prodRootDir,'',trim($this->adminDir,'/')); + setcookie('id_employee', $id_employee, time()+3600, $cookiePath); + setcookie('id_tab', $this->id, time()+3600, $cookiePath); + setcookie('autoupgrade', $this->encrypt($id_employee), time()+3600, $cookiePath); + return false; + } + + + + public function viewAccess($disable = false){ + if ($this->ajax) + return true; + else + { + // simple access : we'll allow only admin + global $cookie; + if ($cookie->profile == 1) + return true; + } + return false; + } + + public function __construct() + { + @set_time_limit(0); + @ini_set('max_execution_time', '0'); + + $this->init(); + // retrocompatibility when used in module : Tab can't work, + // but we saved the tab id in a cookie. + if(class_exists('Tab',false)) + parent::__construct(); + else + $this->id = $_COOKIE['id_tab']; + } + + protected function l($string, $class = 'AdminTab', $addslashes = FALSE, $htmlentities = TRUE) + { + if($this->isModule) + { + $currentClass = get_class($this); + // need to be called in order to populate $classInModule + return SelfModule::findTranslation('autoupgrade', $string, 'AdminSelfUpgrade'); + } + else + return parent::l($string, $class, $addslashes, $htmlentities); + } + + /** + * _setFields function to set fields (only when we need it). + * + * @return void + */ + private function _setFields() + { + $this->_fieldsAutoUpgrade['PS_AUTOUP_DONT_SAVE_IMAGES'] = array( + 'title' => $this->l('Don\'t save images'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc'=>$this->l('You can exclude the image directory from backup if you already saved it by another method (not recommended)'), + ); + + $this->_fieldsAutoUpgrade['PS_AUTOUP_KEEP_DEFAULT_THEME'] = array( + 'title' => $this->l('Keep theme "prestashop"'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc'=>$this->l('If you have customized PrestaShop default theme, you can protect it from upgrade (not recommended)'), + ); + + $this->_fieldsAutoUpgrade['PS_AUTOUP_KEEP_TRAD'] = array( + 'title' => $this->l('Keep translations'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc'=>$this->l('If set too yes, you will keep all your translations'), + ); + + $this->_fieldsAutoUpgrade['PS_AUTOUP_CUSTOM_MOD_DESACT'] = array( + 'title' => $this->l('Desactivate custom modules'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc'=>$this->l('If you don\'t desactivate your modules, you can have some compatibility problem and the Modules page might not load correctly.'), + ); + // allow manual mode only for dev + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) + $this->_fieldsAutoUpgrade['PS_AUTOUP_MANUAL_MODE'] = array( + 'title' => $this->l('Manual mode'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc'=>$this->l('Check this if you want to stop after each step'), + ); + + if (defined('_PS_ALLOW_UPGRADE_UNSTABLE_') AND _PS_ALLOW_UPGRADE_UNSTABLE_ AND function_exists('svn_checkout')) + { + $this->_fieldsAutoUpgrade['PS_AUTOUP_USE_SVN'] = array( + 'title' => $this->l('Use Subversion'), 'cast' => 'intval', 'validation' => 'isBool', + 'type' => 'bool', 'desc' => $this->l('check this if you want to use unstable svn instead of official release'), + ); + } + } + + public function configOk() + { + $allowed = (ConfigurationTest::test_fopen() && $this->rootWritable); + $allowed &= !Configuration::get('PS_SHOP_ENABLE'); + + return $allowed; + } + /** + * isUpgradeAllowed checks if all server configuration is valid for upgrade + * + * @return void + */ + public function isUpgradeAllowed() + { + $allowed = (ConfigurationTest::test_fopen() && $this->rootWritable); + + if (!defined('_PS_MODE_DEV_') OR !_PS_MODE_DEV_) + $allowed &= $this->upgrader->autoupgrade; + + return $allowed; + } + + /** + * init to build informations we need + * + * @return void + */ + public function init() + { + // For later use, let's set up prodRootDir and adminDir + // This way it will be easier to upgrade a different path if needed + $this->prodRootDir = _PS_ROOT_DIR_; + $this->adminDir = _PS_ADMIN_DIR_; + + // test writable recursively + if ($this->isModule) + { + require_once('ConfigurationTest.php'); + if(!class_exists('ConfigurationTest', false) AND class_exists('ConfigurationTestCore')) + eval('class ConfigurationTest extends ConfigurationTestCore{}'); + } + if (ConfigurationTest::test_dir($this->prodRootDir,true)) + $this->rootWritable = true; + + // checkPSVersion will be not + $this->upgrader = new Upgrader(true); + $this->upgrader->checkPSVersion(); + // If you have defined this somewhere, you know what you do + if (defined('_PS_ALLOW_UPGRADE_UNSTABLE_') AND _PS_ALLOW_UPGRADE_UNSTABLE_ AND function_exists('svn_checkout')) + { + if (!$this->isModule OR class_exists('Configuration',false)) + $this->useSvn = Configuration::get('PS_AUTOUP_USE_SVN'); + } + else + $this->useSvn = false; + + // from $_POST or $_GET + $this->action = empty($_REQUEST['action'])?null:$_REQUEST['action']; + $this->currentParams = empty($_REQUEST['params'])?null:$_REQUEST['params']; + + // If not exists in this sessions, "create" + // session handling : from current to next params + if (isset($this->currentParams['removeList'])) + $this->nextParams['removeList'] = $this->currentParams['removeList']; + + if (isset($this->currentParams['filesToUpgrade'])) + $this->nextParams['filesToUpgrade'] = $this->currentParams['filesToUpgrade']; + + if (class_exists('Configuration',false)) + { + $time = time(); + $this->backupDbFilename = Configuration::get('UPGRADER_BACKUPDB_FILENAME'); + if(!file_exists($this->backupDbFilename)) + { + // If not exists, the filename is generated by Backup.php + $this->backupDbFilename = ''; + Configuration::updateValue('UPGRADER_BACKUPDB_FILENAME', $this->backupDbFilename); + } + + $this->backupFilesFilename = Configuration::get('UPGRADER_BACKUPFILES_FILENAME'); + if(!file_exists($this->backupFilesFilename)) + { + $this->backupFilesFilename = $this->autoupgradePath . DIRECTORY_SEPARATOR . 'backupfile-'.date('Y-m-d').'-'.$time.'.zip'; + Configuration::updateValue('UPGRADER_BACKUPFILES_FILENAME', $this->backupFilesFilename); + } + } + else{ + // backupDbFilename should never be empty + $this->backupDbFilename = $this->currentParams['backupDbFilename']; + // backupFilesFilename should never etc. + $this->backupFilesFilename = $this->currentParams['backupFilesFilename']; + } + $this->autoupgradePath = $this->adminDir.DIRECTORY_SEPARATOR.$this->autoupgradeDir; + + if (!file_exists($this->autoupgradePath)) + if (!@mkdir($this->autoupgradePath,0777)) + $this->_errors[] = Tools::displayError(sprintf($this->l('unable to create directory %s'),$this->autoupgradePath)); + + $latest = $this->autoupgradePath.DIRECTORY_SEPARATOR.'latest'; + if (!file_exists($latest)) + if (!@mkdir($latest,0777)) + $this->_errors[] = Tools::displayError(sprintf($this->l('unable to create directory %s'),$latest)); + + $this->latestRootDir = $latest.DIRECTORY_SEPARATOR.'prestashop'; + $this->adminDir = str_replace($this->prodRootDir,'',$this->adminDir); + // @TODO future option + // $this->testRootDir = $this->autoupgradePath.DIRECTORY_SEPARATOR.'test'; + + /* option */ + if (class_exists('Configuration',false)) + { + $this->dontBackupImages = Configuration::get('PS_AUTOUP_DONT_SAVE_IMAGES'); + $this->keepDefaultTheme = Configuration::get('PS_AUTOUP_KEEP_DEFAULT_THEME'); + $this->keepTrad = Configuration::get('PS_AUTOUP_KEEP_TRAD'); + $this->manualMode = Configuration::get('PS_AUTOUP_MANUAL_MODE'); + $this->desactivateCustomModule = Configuration::get('PS_AUTOUP_CUSTOM_MOD_DESACT'); + } + else + { + $this->dontBackupImages = $this->currentParams['dontBackupImages']; + $this->keepDefaultTheme = $this->currentParams['keepDefaultTheme']; + $this->keepTrad = $this->currentParams['keepTrad']; + $this->manualMode = $this->currentParams['manualMode']; + $this->desactivateCustomModule = $this->current['desactivateCustomModule']; + } + // We can add any file or directory in the exclude dir : theses files will be not removed or overwritten + // @TODO cache should be ignored recursively, but we have to reconstruct it after upgrade + // - compiled from smarty + // - .svn + $this->backupIgnoreAbsoluteFiles[] = "/tools/smarty_v2/compile"; + $this->backupIgnoreAbsoluteFiles[] = "/tools/smarty_v2/cache"; + $this->backupIgnoreAbsoluteFiles[] = "/tools/smarty/compile"; + $this->backupIgnoreAbsoluteFiles[] = "/tools/smarty/cache"; + + $this->excludeFilesFromUpgrade[] = '.'; + $this->excludeFilesFromUpgrade[] = '..'; + $this->excludeFilesFromUpgrade[] = '.svn'; + $this->excludeFilesFromUpgrade[] = 'install'; + $this->excludeFilesFromUpgrade[] = 'settings.inc.php'; + $this->excludeFilesFromUpgrade[] = 'autoupgrade'; + $this->backupIgnoreFiles[] = '.'; + $this->backupIgnoreFiles[] = '..'; + $this->backupIgnoreFiles[] = '.svn'; + $this->backupIgnoreFiles[] = 'autoupgrade'; + + if ($this->dontBackupImages) + $this->backupIgnoreAbsoluteFiles[] = "/img"; + + + if ($this->keepDefaultTheme) + $this->excludeAbsoluteFilesFromUpgrade[] = "/themes/prestashop"; + + if ($this->keepTrad) + $this->excludeFilesFromUpgrade[] = "translations"; + } + + /** + * getFilePath return the path to the zipfile containing prestashop. + * + * @return void + */ + private function getFilePath() + { + return $this->autoupgradePath.DIRECTORY_SEPARATOR.$this->destDownloadFilename; + } + + public function postProcess() + { + $this->_setFields(); + + if (sizeof($_POST)>0) + { + $this->_postConfig($this->_fieldsAutoUpgrade); + } + } + + public function ajaxProcessUpgradeComplete() + { + $this->nextDesc = $this->l('Upgrade process done. Congratulations ! You can now reactive your shop.'); + $this->next = ''; + } + + public function ajaxProcessUpgradeNow() + { + $this->nextDesc = $this->l('Starting upgrade ...'); + + if ($this->useSvn) + { + $this->next = 'svnCheckout'; + $this->nextDesc = $this->l('switching to svn checkout (useSvn set to true)'); + } + else + { + $this->next = 'download'; + $this->nextDesc = $this->l('Shop desactivated. Now downloading (this can takes some times )...'); + } + } + + public function ajaxProcessSvnExport() + { + if ($this->useSvn) + { + // first of all, delete the content of the latest root dir just in case + if (is_dir($this->latestRootDir)) + Tools::deleteDirectory($this->latestRootDir, false); + + if (!file_exists($this->latestRootDir)) + { + @mkdir($this->latestRootDir); + } + + if (svn_export($this->autoupgradePath . DIRECTORY_SEPARATOR . $this->svnDir, $this->latestRootDir)) + { + + // export means svn means install-dev and admin-dev. + // let's rename admin to the correct admin dir + // and rename install-dev to install + $adminDir = str_replace($this->prodRootDir, '', $this->adminDir); + rename($this->latestRootDir.DIRECTORY_SEPARATOR.'install-dev', $this->latestRootDir.DIRECTORY_SEPARATOR.'install'); + rename($this->latestRootDir.DIRECTORY_SEPARATOR.'admin-dev', $this->latestRootDir.DIRECTORY_SEPARATOR.$adminDir); + + // Unsetting to force listing + unset($this->nextParams['removeList']); + $this->next = "removeSamples"; + $this->nextDesc = $this->l('Export svn complete. removing sample files...'); + return true; + } + else + { + $this->next = 'error'; + $this->nextDesc = $this->l('error when svn export '); + } + } + } + + public function ajaxProcessUnzip(){ + if ($this->isModule AND !class_exists('Tools',false)) + require_once('Tools.php'); + + $filepath = $this->getFilePath(); + $destExtract = $this->autoupgradePath.DIRECTORY_SEPARATOR.'latest'; + if (file_exists($destExtract)) + Tools::deletedirectory($destExtract); + + if (Tools::ZipExtract($filepath,$destExtract)) + { + $adminDir = str_replace($this->prodRootDir, '', $this->adminDir); + rename($this->latestRootDir.DIRECTORY_SEPARATOR.'admin', $this->latestRootDir.DIRECTORY_SEPARATOR.$adminDir); + // Unsetting to force listing + unset($this->nextParams['removeList']); + $this->next = "removeSamples"; + $this->nextDesc = $this->l('Extract complete. removing sample files...'); + return true; + } + else{ + $this->next = "error"; + $this->nextDesc = sprintf($this->l('unable to extract %1$s into %2$s ...'),$filepath,$destExtract); + return true; + } + } + + + /** + * _listSampleFiles will make a recursive call to scandir() function + * and list all file which match to the $fileext suffixe (this can be an extension or whole filename) + * + * @TODO maybe $regex instead of $fileext ? + * @param string $dir directory to look in + * @param string $fileext suffixe filename + * @return void + */ + private function _listSampleFiles($dir, $fileext = '.jpg'){ + $res = true; + $dir = rtrim($dir,'/').DIRECTORY_SEPARATOR; + + $toDel = scandir($dir); + // copied (and kind of) adapted from AdminImages.php + foreach ($toDel AS $file) + { + if ($file!='.' AND $file != '..' AND $file != '.svn') + { + + if (preg_match('#'.preg_quote($fileext,'#').'$#i',$file)) + { + $this->sampleFileList[] = $dir.$file; + } + else if (is_dir($dir.$file)) + { + $res &= $this->_listSampleFiles($dir.$file); + } + } + } + return $res; + } + + public function _listBackupFiles($dir) + { + $allFiles = scandir($dir); + foreach ($allFiles as $file) + { + $fullPath = $dir.DIRECTORY_SEPARATOR.$file; + + if (!$this->_skipFile($file, $fullPath,'backup')) + { + if (is_dir($fullPath)) + $this->_listBackupFiles($fullPath); + else + $this->backupFileList[] = $fullPath; + } + else + $this->backupIgnoreFiles[] = $fullPath; + + } + } + + public function _listFilesToUpgrade($dir) + { + $allFiles = scandir($dir); + foreach ($allFiles as $file) + { + $fullPath = $dir.DIRECTORY_SEPARATOR.$file; + + if (!$this->_skipFile($file, $fullPath, "upgrade")) + { + if (is_dir($fullPath)) + { + // if is_dir, we will create it :)e it :) + $this->toUpgradeFileList[] = $fullPath; + if (strpos($dir.DIRECTORY_SEPARATOR.$file, 'install') === false) + { + $this->_listFilesToUpgrade($fullPath); + } + } + else + $this->toUpgradeFileList[] = $fullPath; + } + } + + $this->nextParams['filesToUpgrade'] = $this->toUpgradeFileList; + } + + + public function ajaxProcessUpgradeFiles(){ + // @TODO : + $this->nextParams = $this->currentParams; + if (!isset($this->nextParams['filesToUpgrade'])) + $this->_listFilesToUpgrade($this->latestRootDir); + + // later we could choose between _PS_ROOT_DIR_ or _PS_TEST_DIR_ + $this->destUpgradePath = $this->prodRootDir; + + // upgrade files one by one like for the backup + // with a 1000 loop because it's funny + // @TODO : + // foreach files in latest, copy + $this->next = 'upgradeFiles'; + if (!is_array($this->nextParams['filesToUpgrade'])) + { + error($this->nextParams); + $this->next = 'error'; + $this->nextDesc = $this->l('filesToUpgrade is not an array'); + $this->nextQuickInfo[] = $this->l('filesToUpgrade is not an array'); + return false; + } + + // @TODO : does not upgrade files in modules, translations if they have not a correct md5 (or crc32, or whatever) from previous version + for ($i=0;$inextParams['filesToUpgrade'])<=0) + { + $this->next = 'upgradeDb'; + $this->nextDesc = $this->l('All files upgraded. Now upgrading database'); + $this->nextResponseType = 'xml'; + break; + } + + //$file = array_shift($this->nextParams['filesToUpgrade']); + $file = array_shift($this->nextParams['filesToUpgrade']); + if (!$this->upgradeThisFile($file)) + { + // put the file back to the begin of the list + $totalFiles = array_unshift($this->nextParams['filesToUpgrade'],$file); + $this->next = 'error'; + $this->nextQuickInfo[] = sprintf($this->l('error when trying to upgrade %s'),$file); + break; + } + else{ + // @TODO : maybe put several files at the same times ? + $this->nextDesc = sprintf($this->l('%2$s files left to upgrade.'),$file,sizeof($this->nextParams['filesToUpgrade'])); + } + } + } + + /** + * _modelDoUpgrade prepare the call to doUpgrade.php file (like model.php) + * + * @return void + */ + public function _modelDoUpgrade() + { + // a. set logger + // it will be used later + global $logger; + $logger = new FileLogger(); + if (function_exists('date_default_timezone_set')) + date_default_timezone_set('Europe/Paris'); + // use autoupgrade as log dir + $logger->setFilename($this->latestRootDir.'/'.date('Ymd').'_autoupgrade.log'); + + // init env. + @set_time_limit(0); + @ini_set('max_execution_time', '0'); + // setting the memory limit to 128M only if current is lower + $memory_limit = ini_get('memory_limit'); + if (substr($memory_limit,-1) != 'G' + AND ((substr($memory_limit,-1) == 'M' AND substr($memory_limit,0,-1) < 128) + OR is_numeric($memory_limit) AND (intval($memory_limit) < 131072)) + ){ + @ini_set('memory_limit','128M'); + } + + /* Redefine REQUEST_URI if empty (on some webservers...) */ + if (!isset($_SERVER['REQUEST_URI']) || $_SERVER['REQUEST_URI'] == '') + $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME']; + + if ($tmp = strpos($_SERVER['REQUEST_URI'], '?')) + $_SERVER['REQUEST_URI'] = substr($_SERVER['REQUEST_URI'], 0, $tmp); + + $_SERVER['REQUEST_URI'] = str_replace('//', '/', $_SERVER['REQUEST_URI']); + + /////////////////////// + // Copy from model.php + /////////////////////// + $upgrader = $this->upgrader; + $upgrader->checkPSVersion(true); + + define('INSTALL_VERSION', $upgrader->version_num); + // now the install dir to use is in a subdirectory of the admin dir + define('INSTALL_PATH', realpath($this->latestRootDir.DIRECTORY_SEPARATOR.'install')); + + define('PS_INSTALLATION_IN_PROGRESS', true); + // Note : we don't need ToolsInstall.php + // include_once(INSTALL_PATH.'/classes/ToolsInstall.php'); + + define('SETTINGS_FILE', $this->prodRootDir . '/config/settings.inc.php'); + define('DEFINES_FILE', $this->prodRootDir .'/config/defines.inc.php'); + define('INSTALLER__PS_BASE_URI', substr($_SERVER['REQUEST_URI'], 0, -1 * (strlen($_SERVER['REQUEST_URI']) - strrpos($_SERVER['REQUEST_URI'], '/')) - strlen(substr(dirname($_SERVER['REQUEST_URI']), strrpos(dirname($_SERVER['REQUEST_URI']), '/')+1)))); + + // Note : INSTALLER__PS_BASE_URI_ABSOLUTE is not used for upgrade + // define('INSTALLER__PS_BASE_URI_ABSOLUTE', 'http://'.ToolsInstall::getHttpHost(false, true).INSTALLER__PS_BASE_URI); + + // XML Header + header('Content-Type: text/xml'); + require_once(INSTALL_PATH.DIRECTORY_SEPARATOR.'xml'.DIRECTORY_SEPARATOR.'doUpgrade.php'); + + ////////////////////////////// + // End of copy from model.php + ////////////////////////////// + + } + + public function ajaxProcessUpgradeDb(){ + // @TODO : 1/2/3 have to be done at the beginning !!!!!!!!!!!!!!!!!!!!!! + + // use something like actual in install-dev + // Notice : xml used here ... + + // 1) confirm version is correct(DB) + // install/model.php?method=getVersionFromDb&language=0 + // later + + // 2) confirm config is correct (r/w rights) + // install/model.php?method=checkConfig&firsttime=0 + // later + + // 3) save current activated modules in nextParams, or don't desactivate them ? + // @TODO + // 4) upgrade + // install/model.php?_=1309193641470&method=doUpgrade&customModule=desactivate + if (!empty($this->currentParams['desactivateCustomModule'])) + $_GET['customModule'] = 'desactivate'; + + if (!$this->_modelDoUpgrade()) + { + $this->next = 'error'; + $this->nextDesc = $this->l('error during upgrade Db'); + } + + // 5) compare activated modules and reactivate them + // @TODO + + } + + + /** + * upgradeThisFile + * + * @param mixed $file + * @return void + */ + public function upgradeThisFile($file) + { + // @TODO : later, we could handle customization with some kind of diff functions + // for now, just copy $file in str_replace($this->latestRootDir,_PS_ROOT_DIR_) + // $file comes from scandir function, no need to lost time and memory with file_exists() + if ($this->_skipFile('', $file,'upgrade')) + { + $this->nextQuickInfo[] = $this->l('%s ignored'); + return true; + } + else + { + $dest = str_replace($this->latestRootDir, $this->destUpgradePath,$file); + + if (is_dir($file)) + { + if (!file_exists($dest)) + { + if (@mkdir($dest)) + { + $this->nextQuickInfo[] = sprintf($this->l('created dir %2$s. %3$s files left to upgrade.'),$file, $dest, sizeof($this->nextParams['filesToUpgrade'])); + return true; + } + else + { + $this->next = 'error'; + $this->nextQuickInfo[] = sprintf($this->l('error when creating directory %s'),$dest); + $this->nextDesc = sprintf($this->l('error when creating directory %s'),$dest); + return false; + } + } + else + { + // directory already exists + return true; + } + } + else + { + if (copy($file,$dest)) + { + $this->nextQuickInfo[] = sprintf($this->l('copied %1$s in %2$s. %3$s files left to upgrade.'),$file, $dest, sizeof($this->nextParams['filesToUpgrade'])); + return true; + } + else + { + $this->next = 'error'; + $this->nextQuickInfo[] = sprintf($this->l('error for copy %1$s in %2$s'),$file,$dest); + $this->nextDesc = sprintf($this->l('error for copy %1$s in %2$s'),$file,$dest); + return false; + } + } + } + + } + + public function ajaxProcessRollback() + { + // 1st, need to analyse what was wrong. + + $this->nextParams = $this->currentParams; + if (!empty($this->backupFilesFilename) AND file_exists($this->backupFilesFilename)) + { + $this->next = 'restoreFiles'; + $this->status = 'ok'; + $this->nextDesc = $this->l('Files restored, now restoring database.'); + } + else + { + if (!empty($this->backupDbFilename) AND file_exists($this->backupDbFilename)) + { + $this->next = 'restoreDb'; + $this->status = 'ok'; + $this->nextDesc = $this->l('Database restored'); + } + else + { + // 2nd case if upgradeFiles made an error + // 3rd case if no upgrade has been done + // all theses cases are handled by the method ajaxRequestRollback() + $this->next = ''; // next is empty : nothing next :) + $this->status = 'ok'; + $this->nextDesc = $this->l('All your site is restored... '); + } + } + } + + /** + * ajaxProcessRestoreFiles restore the previously saved files. + * + * @return boolean true if succeed + */ + public function ajaxProcessRestoreFiles() + { + // @TODO : workaround max_execution_time / ajax batch unzip + if (!empty($this->backupFilesFilename) AND file_exists($this->backupFilesFilename)) + { + // cleanup current PS tree + $list = $this->_listArchivedFiles(); + if (count($list) > 0) + { + $this->_cleanUp($this->prodRootDir.'/'); + $this->nextQuickInfo[] = $this->l('root directory cleaned.'); + + $filepath = $this->backupFilesFilename; + $destExtract = $this->prodRootDir; + + if (self::ZipExtract($filepath, $destExtract)) + { + // once it's restored, delete the file ! + unlink($this->backupFilesFilename); + Configuration::updateValue('UPGRADER_BACKUPFILES_FILENAME', ''); + if (!empty($this->backupDbFilename)) + { + $this->nextDesc = $this->l('Files restored. No database backup found. Restoration done.'); + $this->next = ''; + } + else + { + $this->nextDesc = $this->l('Files restored.'); + $this->next = 'rollback'; + } + return true; + } + else + { + $this->next = "error"; + $this->nextDesc = sprintf($this->l('unable to extract $1$s into %2$s .'), $filepath, $destExtract); + return false; + } + } + } + else + { + $this->next = 'error'; + $this->nextDesc = $this->l('no known backup. nothing to restore.'); + return false; + } + } + + /** + * try to restore db backup file + * @return type : hey , what you expect ? well mysql errors array ..... + * @TODO : maybe this could be in the Backup class + */ + public function ajaxProcessRestoreDb() + { + $exts = explode('.', $this->backupDbFilename); + $fileext = $exts[count($exts)-1]; + $requests = array(); + $errors = array(); + $content = ''; + switch ($fileext) + { + case 'bz': + case 'bz2': + if ($fp = bzopen($this->backupDbFilename, 'r')) + { + while(!feof($fp)) + $content .= bzread($fp, filesize($this->backupDbFilename)); + bzclose($fp); + } + break; + case 'gz': + if ($fp = gzopen($this->backupDbFilename, 'r')) + { + while(!feof($fp)) + $content = gzread($fp, filesize($this->backupDbFilename)); + gzclose($fp); + } + break; + // default means sql ? + default : + if ($fp = fopen($this->backupDbFilename, 'r')) + { + while(!feof($fp)) + $content = fread($fp, filesize($this->backupDbFilename)); + fclose($fp); + } + } + + if ($content=='') + return false; + + // preg_match_all is better than preg_split (what is used in doUpgrade.php) + // This way we avoid extra blank lines + // option s (PCRE_DOTALL) added + // @TODO need to check if a ";" in description could block that (I suppose it can at the end of a line) + preg_match_all('/.*;[\n]\+/s', $content, $requests); + /* @TODO maybe improve regex pattern ... */ + $db = Db::getInstance(); + if (count($requests)>0) + { + foreach ($requests as $request) + if (!empty($request)) + if (!$db->Execute($request)) + $this->nextQuickInfo[] = $db->getMsgError(); + + // once it's restored, delete the file ! + unlink($this->backupDbFilename); + Configuration::updateValue('UPGRADER_BACKUPDB_FILENAME',''); + } + else + $this->nextQuickInfo[] = $this->l('Nothing to restore (no request found)'); + + $this->next = 'rollback'; + $this->nextDesc = 'Database restore done.'; + } + + public function ajaxProcessBackupDb() + { + if(!class_exists('ObjectModel',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/ObjectModel.php'); + if(!class_exists('ObjectModel',false)) + eval('Class ObjectModel extends ObjectModelCore{}'); + } + + if(!class_exists('Language',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/Language.php'); + if(!class_exists('Language',false)) + eval('Class Language extends LanguageCore{}'); + } + if(!class_exists('Validate',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/Validate.php'); + if(!class_exists('Validate',false)) + eval('Class Validate extends ValidateCore{}'); + } + if(!class_exists('Db',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/Db.php'); + if(!class_exists('Db',false)) + eval('abstract Class Db extends DbCore{}'); + } + if(!class_exists('MySQL',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/MySQL.php'); + if(!class_exists('MySQL',false)) + eval('Class MySQL extends MySQLCore{}'); + } + if(!class_exists('Configuration',false)) + { + require_once(_PS_ROOT_DIR_.'/classes/Configuration.php'); + if(!class_exists('Configuration',false)) + eval('Class Configuration extends ConfigurationCore{}'); + } + if(!class_exists('Backup',false)) + { + require_once('Backup.php'); + if(!class_exists('ObjectModel',false)) + eval('Class ObjectModel extends ObjectModelCore{}'); + } + + if(!defined('_PS_MAGIC_QUOTES_GPC_')) + define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); + if(!defined('_PS_MYSQL_REAL_ESCAPE_STRING_')) + define('_PS_MYSQL_REAL_ESCAPE_STRING_', function_exists('mysql_real_escape_string')); + + $backup = new Backup(); + // for backup db, use autoupgrade directory + // @TODO : autoupgrade must not be static + $backup->setCustomBackupPath('autoupgrade'); + // maybe for big tables we should save them in more than one file ? + $res = $backup->add(); + if ($res) + { + $this->nextParams['backupDbFilename'] = $backup->id; + // We need to load configuration to use it ... + Configuration::loadConfiguration(); + Configuration::updateValue('UPGRADER_BACKUPDB_FILENAME', $backup->id); + + $this->next = 'upgradeFiles'; + $this->nextDesc = sprintf($this->l('Database backup done in %s. Now updating files'),$backup->id); + } + // if an error occur, we assume the file is not saved + } + + public function ajaxProcessBackupFiles() + { + $this->nextParams = $this->currentParams; + $this->stepDone = false; + ///////////////////// + + if (!isset($this->nextParams['filesForBackup'])) + { + $list = $this->_listBackupFiles($this->prodRootDir); + $this->nextQuickInfo[] = sprintf($this->l('%s Files to backup.'), sizeof($this->backupFileList)); + $this->nextParams['filesForBackup'] = $this->backupFileList; + + // delete old backup, create new + if (file_exists($this->backupFilesFilename)) + unlink($this->backupFilesFilename); + + $this->nextQuickInfo[] = sprintf($this->l('backup files initialized in %s'), $this->backupFilesFilename); + } + + ///////////////////// + $this->next = 'backupFiles'; + // @TODO : display % instead of this + $this->nextDesc = sprintf($this->l('Backup files in progress. %s files left'), sizeof($this->nextParams['filesForBackup'])); + if (is_array($this->nextParams['filesForBackup'])) + { + // @TODO later + // 1) calculate crc32 of next file + // 2) use the provided xml with crc32 calculated from previous versions ? + // or simply use the latest dir ? + //$current = crc32(file_get_contents($file)); + //$file = $this->nextParams['filesForBackup'][0]; + //$latestFile = str_replace(_PS_ROOT_DIR_,$this->latestRootDir,$file); + + // if (file_exists($latestFile)) + // $latest = crc32($latestFile); + // else + // $latest = ''; + + $zip = new ZipArchive(); + if ($zip->open($this->backupFilesFilename, ZIPARCHIVE::CREATE)) + { + $this->next = 'backupFiles'; + // @TODO all in one time will be probably too long + // 1000 ok during test, but 10 by 10 to be sure + $this->stepok = false; + // @TODO min(self::$loopBackupFiles, sizeof()) + for($i=0;$inextParams['filesForBackup'])<=0) + { + $this->stepok = true; + $this->status = 'ok'; + $this->next = 'backupDb'; + $this->nextDesc = $this->l('All files saved. Now backup Database'); + $this->nextQuickInfo[] = $this->l('all files have been added to archive.'); + break; + } + // filesForBackup already contains all the correct files + $file = array_shift($this->nextParams['filesForBackup']); + $archiveFilename = str_replace($this->prodRootDir,'',$file); + // @TODO : maybe put several files at the same times ? + if ($zip->addFile($file,$archiveFilename)) + $this->nextQuickInfo[] = sprintf($this->l('%1$s added to archive. %2$s left.'),$file, sizeof($this->nextParams['filesForBackup'])); + else + { + // if an error occur, it's more safe to delete the corrupted backup + if (file_exists($this->backupFilesFilename)) + unlink($this->backupFilesFilename); + $this->next = 'error'; + $this->nextDesc = sprintf($this->l('error when trying to add %1$s to archive %2$s.'),$file, $backupFilePath); + break; + } + } + $zip->close(); + return true; + } + else{ + $this->next = 'error'; + $this->nextDesc = $this->l('unable to open archive'); + return false; + } + } + else + { + $this->next = 'backupDb'; + $this->nextDesc = 'All files saved. Now backup Database'; + return true; + } + // 4) save for display. + } + + + private function _removeOneSample($removeList) + { + if (is_array($removeList) AND sizeof($removeList)>0) + { + if (file_exists($removeList[0]) AND unlink($removeList[0])) + { + $item = array_shift($removeList); + $this->next = 'removeSamples'; + $this->nextParams['removeList'] = $removeList; + $this->nextQuickInfo[] = sprintf($this->l('%1$s removed. %2$s items left'), $item, sizeof($removeList)); + } + else + { + $this->next = 'error'; + $this->nextParams['removeList'] = $removeList; + $this->nextQuickInfo[] = sprintf($this->l('error when removing %1$s, %2$s items left'), $removeList[0], sizeof($removeList)); + return false; + } + } + return true; + } + + public function ajaxProcessRemoveSamples(){ + $this->stepDone = false; + // @TODO : list exaustive list of files to remove : + // all images from img dir exept admin ? + // all images like logo, favicon, ?. + // all custom image from modules ? + // all custom image from theme ? + if (!isset($this->currentParams['removeList'])) + { + $this->_listSampleFiles($this->autoupgradePath.'/latest/prestashop/img', 'jpg'); + $this->_listSampleFiles($this->autoupgradePath.'/latest/prestashop/modules/editorial/', 'homepage_logo.jpg'); + // @TODO handle this bad thing + $this->nextQuickInfo[] = sprintf($this->l('Starting to remove %1$s sample files'), sizeof($this->sampleFileList)); + $this->nextParams['removeList'] = $this->sampleFileList; + } + + + // @TODO : removing @, adding if file_exists +// @unlink(_PS_ROOT_DIR_.'modules'.DIRECTORY_SEPARATOR.'editorial'.DIRECTORY_SEPARATOR.'editorial.xml'); +// @unlink(_PS_ROOT_DIR_.'modules'.DIRECTORY_SEPARATOR.'editorial'.DIRECTORY_SEPARATOR.'homepage_logo.jpg'); // homepage custom ? +// @unlink(_PS_ROOT_DIR_.'img'.DIRECTORY_SEPARATOR.'logo.jpg'); +// @unlink(_PS_ROOT_DIR_.'img'.DIRECTORY_SEPARATOR.'favicon.ico'); + $resRemove = true; + for($i=0;$inextParams['removeList']) <= 0 ) + { + $this->stepDone = true; + $this->next = 'backupFiles'; + $this->nextDesc = $this->l('All sample files removed. Now backup files.'); + // break the loop, all sample already removed + return true; + } + $resRemove &= $this->_removeOneSample($this->nextParams['removeList']); + if (!$resRemove) + break; + } + + return $resRemove; + } + + public function ajaxProcessSvnCheckout() + { + $this->nextParams = $this->currentParams; + if ($this->useSvn){ + $svnLink = 'http://svn.prestashop.com/trunk'; + $dest = $this->autoupgradePath . DIRECTORY_SEPARATOR . $this->svnDir; + + $svnStatus = svn_status($dest); + if (is_array($svnStatus)) + { + if (sizeof($svnStatus) == 0) + { + $this->next = 'svnExport'; + $this->nextDesc = sprintf($this->l('working copy already %s up-to-date. now exporting it into latest dir'),$dest); + } + else + { + // we assume no modification has been done + // @TODO a svn revert ? + if ($svnUpdate = svn_update($dest)) + { + $this->next = 'svnExport'; + $this->nextDesc = sprintf($this->l('SVN Update done for working copy %s . now exporting it into latest...'),$dest); + } + } + } + else + { + // no valid status found + // @TODO : is 0777 good idea ? + if (!file_exists($dest)) + if (!@mkdir($dest,0777)) + { + $this->next = 'error'; + $this->nextDesc = sprintf($this->l('unable to create directory %s'),$dest); + return false; + } + + if (svn_checkout($svnLink, $dest)) + { + $this->next = 'svnExport'; + $this->nextDesc = sprintf($this->l('SVN Checkout done from %s . now exporting it into latest...'),$svnLink); + return true; + } + else + { + $this->next = 'error'; + $this->nextDesc = $this->l('SVN Checkout error...'); + } + } + } + else + { + $this->next = 'error'; + $this->nextDesc = $this->l('not allowed to use svn'); + } + } + + public function ajaxProcessDownload() + { + if (@ini_get('allow_url_fopen')) + { + $res = $this->upgrader->downloadLast($this->autoupgradePath,$this->destDownloadFilename); + if ($res){ + $this->next = 'unzip'; + $this->nextDesc = $this->l('Download complete. Now extracting'); + } + else + { + $this->next = 'error'; + $this->nextDesc = $this->l('Error during download'); + } + } + else + { + // @TODO : ftp mode + $this->next = 'error'; + $this->nextDesc = sprintf($this->l('you need allow_url_fopen for automatic download. You can also manually upload it in %s'),$this->autoupgradePath.$this->destDownloadFilename); + } + } + + public function buildAjaxResult() + { + $return['error'] = $this->error; + $return['stepDone'] = $this->stepDone; + $return['next'] = $this->next; + $return['status'] = $this->next == 'error' ? 'error' : 'ok'; + $return['nextDesc'] = $this->nextDesc; + + foreach($this->ajaxParams as $v) + if(property_exists($this,$v)) + $this->nextParams[$v] = $this->$v; + + $return['nextParams'] = $this->nextParams; + + $return['nextParams']['typeResult'] = $this->nextResponseType; + + $return['nextQuickInfo'] = $this->nextQuickInfo; + return Tools::jsonEncode($return); + } + + /** + * displayConf + * + * @return void + */ + public function displayConf() + { + if(!$this->isModule) + { + if (version_compare(_PS_VERSION_,'1.4.4.0','<') AND false) + $this->_errors[] = Tools::displayError('This class depends of several files modified in 1.4.4.0 version and should not be used in an older version'); + } + parent::displayConf(); + + } + + public function ajaxPreProcess() + { + if (!empty($_POST['responseType']) AND $_POST['responseType'] == 'json') + header('Content-Type: application/json'); + + if(!empty($_POST['action'])) + { + $action = $_POST['action']; + if (isset(self::$skipAction[strtolower($action)])) + { + $this->next = self::$skipAction[$action]; + $this->nextDesc = sprintf($this->l('action %s skipped'),$action); + $this->nextQuickInfo[] = sprintf($this->l('action %s skipped'),$action); + unset($_POST['action']); + } + else if (!method_exists(get_class($this), 'ajaxProcess'.$action)) + { + $this->nextDesc = sprintf($this->l('action "%1$s" not found'), $action); + $this->next = 'error'; + $this->error = '1'; + } + } + + if ($this->apacheModExists('mod_evasive')) + sleep(1); + } + /** + * apacheModExists return true if the apache module $name is loaded + * @TODO move this method in class Information (when it will exist) + * + * @param string $name module name + * @return boolean true if exists + */ + function apacheModExists($name) + { + if(function_exists('apache_get_modules')) + { + static $apacheModuleList = null; + + if (!is_array($apacheModuleList)) + $apacheModuleList = apache_get_modules(); + + // we need strpos (example can be evasive20 + foreach($apacheModuleList as $module) + if (strpos($name, $module)!==false) + return true; + } + else{ + // If apache_get_modules does not exists, + // one solution should be parsing httpd.conf, + // but we could simple parse phpinfo(INFO_MODULES) return string + ob_start(); + phpinfo(INFO_MODULES); + $phpinfo = ob_get_contents(); + ob_end_clean(); + if (strpos($phpinfo, $module) !== false) + return true; + } + + return false; + } + + private function _getJsErrorMsgs() + { + $INSTALL_VERSION = $this->upgrader->version_num; + $ret = ' +var txtError = new Array(); +txtError[0] = "'.$this->l('Required field').'"; +txtError[1] = "'.$this->l('Too long!').'"; +txtError[2] = "'.$this->l('Fields are different!').'"; +txtError[3] = "'.$this->l('This email adress is wrong!').'"; +txtError[4] = "'.$this->l('Impossible to send the email!').'"; +txtError[5] = "'.$this->l('Can\'t create settings file, if /config/settings.inc.php exists, please give the public write permissions to this file, else please create a file named settings.inc.php in config directory.').'"; +txtError[6] = "'.$this->l('Can\'t write settings file, please create a file named settings.inc.php in config directory.').'"; +txtError[7] = "'.$this->l('Impossible to upload the file!').'"; +txtError[8] = "'.$this->l('Data integrity is not valided. Hack attempt?').'"; +txtError[9] = "'.$this->l('Impossible to read the content of a MySQL content file.').'"; +txtError[10] = "'.$this->l('Impossible the access the a MySQL content file.').'"; +txtError[11] = "'.$this->l('Error while inserting data in the database:').'"; +txtError[12] = "'.$this->l('The password is incorrect (alphanumeric string at least 8 characters).').'"; +txtError[14] = "'.$this->l('A Prestashop database already exists, please drop it or change the prefix.').'"; +txtError[15] = "'.$this->l('This is not a valid file name.').'"; +txtError[16] = "'.$this->l('This is not a valid image file.').'"; +txtError[17] = "'.$this->l('Error while creating the /config/settings.inc.php file.').'"; +txtError[18] = "'.$this->l('Error:').'"; +txtError[19] = "'.$this->l('This PrestaShop database already exists. Please revalidate your authentication informations to the database.').'"; +txtError[22] = "'.$this->l('An error occurred while resizing the picture.').'"; +txtError[23] = "'.$this->l('Database connection is available!').'"; +txtError[24] = "'.$this->l('Database Server is available but database is not found').'"; +txtError[25] = "'.$this->l('Database Server is not found. Please verify the login, password and server fields.').'"; +txtError[26] = "'.$this->l('An error occurred while sending email, please verify your parameters.').'"; +txtError[37] = "'.$this->l('Impossible to write the image /img/logo.jpg. If this image already exists, please delete it.').'"; +txtError[38] = "'.$this->l('The uploaded file exceeds the upload_max_filesize directive in php.ini').'"; +txtError[39] = "'.$this->l('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form').'"; +txtError[40] = "'.$this->l('The uploaded file was only partially uploaded').'"; +txtError[41] = "'.$this->l('No file was uploaded.').'"; +txtError[42] = "'.$this->l('Missing a temporary folder').'"; +txtError[43] = "'.$this->l('Failed to write file to disk').'"; +txtError[44] = "'.$this->l('File upload stopped by extension').'"; +txtError[45] = "'.$this->l('Cannot convert your database\'s data to utf-8.').'"; +txtError[46] = "'.$this->l('Invalid shop name').'"; +txtError[47] = "'.$this->l('Your firstname contains some invalid characters').'"; +txtError[48] = "'.$this->l('Your lastname contains some invalid characters').'"; +txtError[49] = "'.$this->l('Your database server does not support the utf-8 charset.').'"; +txtError[50] = "'.$this->l('Your MySQL server doesn\'t support this engine, please use another one like MyISAM').'"; +txtError[51] = "'.$this->l('The file /img/logo.jpg is not writable, please CHMOD 755 this file or CHMOD 777').'"; +txtError[52] = "'.$this->l('Invalid catalog mode').'"; +txtError[999] = "'.$this->l('No error code available').'"; +//upgrader +txtError[27] = "'.$this->l('This installer is too old.').'"; +txtError[28] = "'.sprintf($this->l('You already have the %s version.'),$INSTALL_VERSION).'"; +txtError[29] = "'.$this->l('There is no older version. Did you delete or rename the config/settings.inc.php file?').'"; +txtError[30] = "'.$this->l('The config/settings.inc.php file was not found. Did you delete or rename this file?').'"; +txtError[31] = "'.$this->l('Can\'t find the sql upgrade files. Please verify that the /install/sql/upgrade folder is not empty)').'"; +txtError[32] = "'.$this->l('No upgrade is possible.').'"; +txtError[33] = "'.$this->l('Error while loading sql upgrade file.').'"; +txtError[34] = "'.$this->l('Error while inserting content into the database').'"; +txtError[35] = "'.$this->l('Unfortunately,').'"; +txtError[36] = "'.$this->l('SQL errors have occurred.').'"; +txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where did you move it?').'";'; + return $ret; + } + + public function displayAjax(){ + echo $this->buildAjaxResult(); + } + + private function _displayRollbackForm() + { + echo '
'.$this->l('Rollback').' +
'; + if (empty($this->backupFilesFilename) AND empty($this->backupDbFilename)) + echo $this->l('No rollback available'); + else if (!empty($this->backupFilesFilename) OR !empty($this->backupDbFilename)) + { + echo '
'; + } + if (!empty($this->backupFilesFilename) AND file_exists($this->backupFilesFilename)) + echo '
restoreFiles '.sprintf($this->l('click to restore %s'),$this->backupFilesFilename).'

'; + if (!empty($this->backupDbFilename) AND file_exists($this->backupDbFilename)) + echo '
restoreDb '.sprintf($this->l('click to restore %s'), $this->backupDbFilename).'

'; + + echo '
'; + } + + private function _displayUpgraderForm() + { + global $cookie; + $pleaseUpdate = $this->upgrader->checkPSVersion(); + + echo '
'; + echo ''.$this->l('Your current configuration').''; + echo ''.$this->l('Root directory').' : '.$this->prodRootDir.'

'; + + if ($this->rootWritable) + $srcRootWritable = '../img/admin/enabled.gif'; + else + $srcRootWritable = '../img/admin/disabled.gif'; + echo ''.$this->l('Root directory status').' : '.' '.($this->rootWritable?$this->l('fully writable'):$this->l('not writable recursively')).'

'; + + if ($this->upgrader->needUpgrade) + { + if ($this->upgrader->autoupgrade) + $srcAutoupgrade = '../img/admin/enabled.gif'; + else + $srcAutoupgrade = '../img/admin/disabled.gif'; + echo ''.$this->l('Autoupgrade allowed').' : '.' '.($this->upgrader->autoupgrade?$this->l('This release allow autoupgrade.'):$this->l('This release does not allow autoupgrade')).'.

'; + } + + if (Configuration::get('PS_SHOP_ENABLE')) + { + $srcShopStatus = '../img/admin/disabled.gif'; + $label = $this->l('No'); + } + else + { + $srcShopStatus = '../img/admin/enabled.gif'; + $label = $this->l('Yes'); + } + echo ''.$this->l('Shop desactivated').' : '.''.$label.'

'; + + $max_exec_time = ini_get('max_execution_time'); + if ($max_exec_time == 0) + $srcExecTime = '../img/admin/enabled.gif'; + else + $srcExecTime = '../img/admin/warning.gif'; + echo ''.$this->l('PHP time limit').' : '.''.($max_exec_time == 0?$this->l('disabled'):$max_exec_time.' '.$this->l('seconds')).'

'; + + if ($this->rootWritable) + $srcRootWritable = '../img/admin/enabled.gif'; + else + $srcRootWritable = '../img/admin/disabled.gif'; + echo ''.$this->l('Root directory').' : '.' '.($this->rootWritable?$this->l('writable recursively'):$this->l('not writable recursively')).'.

'; + + echo ''.$this->l('Modify your options').''; + echo '
'; + + echo '
'; + + echo '
'.$this->l('Update').''; + + + echo '
+

'.sprintf($this->l('Your current prestashop version : %s '),_PS_VERSION_).'

'; + echo '

'.sprintf($this->l('Last version is %1$s (%2$s) '), $this->upgrader->version_name, $this->upgrader->version_num).'

'; + + // @TODO : this should be checked when init() + if ($this->isUpgradeAllowed()) { + if ($pleaseUpdate) { + echo '
  • information '.$this->l('Latest Prestashop version available is:').' '.$pleaseUpdate['name'].'
  • '; + } +// echo ''; +// echo ''; + echo '
    '; + if ($this->upgrader->needUpgrade) + { + if($this->configOk()) + echo ''.$this->l('Upgrade PrestaShop now !').''; + else + echo $this->displayWarning('Your current configuration does not allow upgrade.'); + } + else + { + echo ''.$this->l('Your shop is already up to date.').' '; + } + echo ''.sprintf($this->l('last datetime check : %s '),date('Y-m-d H:i:s',Configuration::get('PS_LAST_VERSION_CHECK'))).' + '.$this->l('Please click to refresh').' + '; + + echo'
    + '; + + echo '
    '; + + + echo '
    '; + + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) + { + echo '
    '.$this->l('Step').''; + echo '

    '.$this->l('Upgrade steps').'

    '; + echo '
    '; + echo 'download'; + echo 'unzip'; // unzip in autoupgrade/latest + echo 'removeSamples'; // remove samples (iWheel images) + echo 'backupFiles'; // backup files + echo 'backupDb'; + echo 'upgradeFiles'; + echo 'upgradeDb'; + echo '
    '; + + if (defined('_PS_ALLOW_UPGRADE_UNSTABLE_') AND _PS_ALLOW_UPGRADE_UNSTABLE_ ) + { + echo '

    Development tools

    '; + } + } + + echo '
    '; + echo'
    quick info
    '; + // for upgradeDb + echo '

    '; + echo '

    '; + } + else + echo '

    '.$this->l('Your current configuration does not allow upgrade.').'

    '; + + echo '
    '; +/* echo '
    + Error +
    no error yet
    +
    '; + * + */ + // information to keep will be in #infoStep + // temporary infoUpdate will be in #tmpInformation + echo ''; + } public function display() { @@ -84,5 +1617,461 @@ class AdminUpgrade extends AdminPreferences echo ''; } + private function _getJsInit() + { + global $currentIndex; + $js = ''; + $js .= ' +function ucFirst(str) { + if (str.length > 0) { + return str[0].toUpperCase() + str.substring(1); +} + else { + return str; + } +} + +function cleanInfo(){ + $("#infoStep").html("reset
    "); +} + +function updateInfoStep(msg){ + if (msg) + { + $("#infoStep").html(msg); + $("#infoStep").attr({ scrollTop: $("#infoStep").attr("scrollHeight") }); + } +} + +function addError(msg){ + if (msg) + $("#errorWindow").html(msg); +} + +function addQuickInfo(arrQuickInfo){ + if (arrQuickInfo) + { + $("#quickInfo").show(); + for(i=0;i"); + + $("#quickInfo").attr({ scrollTop: $("#quickInfo").attr("scrollHeight") }); + } +}'; + + if ($this->manualMode) + $js .= 'var manualMode = true;'; + else + $js .= 'var manualMode = false;'; + + $js .= ' +var firstTimeParams = '.$this->buildAjaxResult().'; +firstTimeParams = firstTimeParams.nextParams; + +$(document).ready(function(){ + $(".upgradestep").click(function(e) + { + e.preventDefault(); + // $.scrollTo("#options") + }); + + // more convenient to have that param for handling success and error + var requestParams; + + // set timeout to 5 minutes (download can be long)? + $.ajaxSetup({timeout:300000}); + + + // prepare available button here, without params ? + prepareNextButton("#upgradeNow",firstTimeParams); + prepareNextButton("#rollback",firstTimeParams); + prepareNextButton("#restoreDb",firstTimeParams); + prepareNextButton("#restoreFiles",firstTimeParams); + +}); + +/** + * parseXMLResult is used to handle the return value of the doUpgrade method + * + */ +function parseXMLResult(xmlRet) +{ + ret = $(xmlRet); + ret = ret.find("action")[0]; + if (ret.getAttribute("result") == "ok") + { + $("#dbResultCheck") + .addClass("ok") + .removeClass("fail") + .html("

    '.$this->l('upgrade complete. Please check your front-office (try to make an order, check theme)').'

    ") + .show("slow"); + $("#dbCreateResultCheck") + .hide("slow"); + + // difference with the original function + ret = {next:"upgradeComplete",nextParams:{typeResult:"json"},status:"ok"}; + + } + else + { + $("#dbResultCheck") + .addClass("fail") + .removeClass("ok") + .html(txtError[parseInt(ret.getAttribute("error"))]) + .show("slow"); + $("#dbCreateResultCheck") + .hide("slow"); + + // propose rollback if there is an error + if (confirm(txtError[parseInt(ret.getAttribute("error"))]+"\r\n\r\n'.$this->l('Do you want to rollback ?').'")) + ret = {next:"rollback",nextParams:{typeResult:"json"},status:"error"}; + } + + return ret +}; + +function afterUpgradeComplete() +{ + $("#pleaseWait").hide(); + $("#infoStep").html("

    '.$this->l('Upgrade Complete ! ').'

    "); +} +/** + * afterBackupDb display the button + * + */ +function afterBackupDb() +{ + $("#restoreDbContainer").html("restoreDb '.$this->l('click to restore database').'"); + prepareNextButton("#restoreDb",{}); +} + +function afterRestoreDb() +{ + $("#restoreDbContainer").html(""); +} + +function afterRestoreFiles() +{ + $("#restoreFilesContainer").html(""); +} + +function afterBackupFiles() +{ + $("#restoreFilesContainer").html("
    restoreFiles '.$this->l('click to restore files').'"); + prepareNextButton("#restoreFiles",{}); + +} + +function doAjaxRequest(action, nextParams){ + req = $.ajax({ + type:"POST", + url : "'.($this->isModule? __PS_BASE_URI__ . trim($this->adminDir,'/').'/autoupgrade/ajax-upgradetab.php' : str_replace('index','ajax-tab',$currentIndex)).'", + async: true, + data : { + dir:"'.trim($this->adminDir,'/').'", + ajaxMode : "1", + token : "'.$this->token.'", + tab : "'.get_class($this).'", + action : action, + params : nextParams + }, + success : function(res,textStatus,jqXHR) + { + if(eval("typeof nextParams") == "undefined") + { + nextParams = {typeResult : "json"}; + } + + if (nextParams.typeResult == "xml") + { + xmlRes = parseXMLResult(res); + res = {}; + res.next = xmlRes.next; + // if xml, we keep the next params + nextParams = myNext; + res.status = xmlRes.status; + } + else + { + try{ + res = $.parseJSON(res); + nextParams = res.nextParams; + } + catch(e){ + res = {status : "error"}; + alert("error during "+action); + /* + nextParams = { + error:"0", + next:"cancelUpgrade", + nextDesc:"Error detected during ["+action+"] step, reverting...", + nextQuickInfo:[], + status:"ok", + "stepDone":true + } + */ + } + } + + if (res.status == "ok") + { + $("#"+action).addClass("done"); + if (res.stepDone) + $("#"+action).addClass("stepok"); + + // if a function "after[action name]" exists, it should be called. + // This is used for enabling restore buttons for example + funcName = "after"+ucFirst(action); + if (typeof funcName == "string" && + eval("typeof " + funcName) == "function") { + + eval(funcName+"()"); + } + + handleSuccess(res,nextParams.typeResult); + } + else + { + // display progression + $("#"+action).addClass("done"); + $("#"+action).addClass("steperror"); + handleError(res); + } + }, + error: function(res,textStatus,jqXHR) + { + if (textStatus == "timeout" && action == "download") + { + updateInfoStep("'.$this->l('Your server can\'t download the file. Please upload it first by ftp in your admin/autoupgrade directory').'"); + } + else + { + //console.log(res); + //console.log(jqXHR); + updateInfoStep("[Server Error] Status message : " + textStatus); + } + } + }); + }; + +/** + * prepareNextButton make the button button_selector available, and update the nextParams values + * + * @param button_selector $button_selector + * @param nextParams $nextParams + * @return void + */ +function prepareNextButton(button_selector, nextParams) +{ +// myNext; + myNext = nextParams; + $(button_selector).unbind(); + $(button_selector).click(function(e){ + e.preventDefault(); + $("#currentlyProcessing").show(); +'; + if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) + $js .= 'addQuickInfo(["[DEV] request : "+$(this).attr("id")]);'; + $js .= ' + action = button_selector.substr(1); + res = doAjaxRequest(action, nextParams); + }); +} + +/** + * handleSuccess + * res = {error:, next:, nextDesc:, nextParams:, nextQuickInfo:,status:"ok"} + * @param res $res + * @return void + */ +function handleSuccess(res) +{ + updateInfoStep(res.nextDesc); + if (res.next != "") + { + addQuickInfo(res.nextQuickInfo); + + $("#"+res.next).addClass("nextStep"); + if (manualMode) + { + prepareNextButton("#"+res.next,res.nextParams); + alert("manually go to "+res.next+" button "); + } + else + { + // @TODO : + // 1) instead of click(), call a function. + doAjaxRequest(res.next,res.nextParams); + // 2) remove all step link (or show them only in dev mode) + // 3) when steps link displayed, they should change color when passed + } + } + else + { + // Way To Go, end of upgrade process + addQuickInfo(["End of upgrade process"]); + } +} + +// res = {nextParams, NextDesc} +function handleError(res) +{ + // display error message in the main process thing + updateInfoStep(res.nextDesc); + addQuickInfo(res.nextQuickInfo); + // In case the rollback button has been desactivated, just re-enable it + prepareNextButton("#rollback",res.nextParams); + // ask if you want to rollback + // TODO : be sure there is useful infos + addQuickInfo(res); + if (confirm(res+"\r\r'.$this->l('Do you want to rollback ?').'")) + { + if (manualMode) + alert("'.$this->l('Please go manually go to rollback button').'"); + else + { + $("#rollback").click(); + } + + } +} +'; + return $js; + } + private function _cleanUp($path) + { + // as we need theses files for restore operation, we can't remove them. + // They will be overwritten + $skipDirs = array('backups', 'pclzip', 'autoupgrade', '.', '..', '.svn'); + $skipFiles = array('autoload.php', 'init.php', 'settings.inc.php', 'config.inc.php', 'Tools.php', 'AdminUpgrade.php'); + $skipFiles[] = $this->isModule?'ajax-upgradetab.php':'ajax-tab.php'; + if (is_dir($path)) + { + $fp = opendir($path); + while ($file = readdir($fp)) + { + if (!in_array($file, $skipDirs) AND !$this->_skipFile('', $path.$file, 'backup')) + { + $fullpath = $path.$file; + if (is_dir($fullpath)) + $this->_cleanUp($fullpath.'/'); + else + { + if (!in_array($file, $skipFiles)) + { + unlink($fullpath); + } + } + } + } + closedir($fp); + /* fortunately not empty dir won't be removed by the following */ + @rmdir($path); + } + else + if (!$this->_skipFile($file, '', 'backup')) unlink($path); + + return true; + } + + /** + * @desc extract a zip file to the given directory + * @return bool success + * we need a copy of it to be able to restore without keeping Tools and Autoload stuff + */ + private static function ZipExtract($fromFile, $toDir) + { + if (!file_exists($toDir)) + if (!@mkdir($toDir,0777)) + { + $this->next = 'error'; + $this->nextDesc = sprintf($this->l('unable to create directory %s'),$toDir); + return false; + } + + if (class_exists('ZipArchive', false)) + { + $zip = new ZipArchive(); + if ($zip->open($fromFile) === true AND $zip->extractTo($toDir) AND $zip->close()) + return true; + return false; + } + else + { + + if (!class_exists('PclZip',false)) + require_once($this->prodRootDir.'/tools/pclzip/pclzip.lib.php'); + + $zip = new PclZip($fromFile); + $list = $zip->extract(PCLZIP_OPT_PATH, $toDir); + foreach ($list as $extractedFile) + if ($extractedFile['status'] != 'ok') + return false; + + return true; + } + } + + private function _listArchivedFiles() + { + if (!empty($this->nextParams['backupFilesFilepath'])) + { + if (class_exists('ZipArchive', false)) + { + $files=array(); + if ($zip = zip_open($this->currentParams['backupFilesFilepath'])) + { + while ($entry=zip_read($zip)) + $files[] = zip_entry_name($entry); + + zip_close($zip); + } + } + else + { + require_once($this->prodRootDir.'/tools/pclzip/pclzip.lib.php'); + if ($zip = new PclZip($this->currentParams['backupFilesFilepath'])) + return $zip->listContent(); + } + } + return false; + } + + /** + * bool _skipFile : check whether a file is in backup or restore skip list + * + * @param type $file : current file or directory name eg:'.svn' , 'settings.inc.php' + * @param type $fullpath : current file or directory fullpath eg:'/home/web/www/prestashop/img' + * @param type $way : 'backup' , 'upgrade' + */ + private function _skipFile($file,$fullpath,$way='backup') + { + $fullpath = str_replace('\\','/', $fullpath); // wamp compliant + $rootpath = str_replace('\\','/', $this->prodRootDir); + switch ($way) + { + case 'backup': + if (in_array($file, $this->backupIgnoreFiles)) + return true; + + foreach($this->backupIgnoreAbsoluteFiles as $path) + if ($file == 'img') + if (strpos($fullpath, $rootpath.$path) !== false) + return true; + break; + + case 'upgrade': + if (in_array($file, $this->excludeFilesFromUpgrade)) + return true; + + foreach ($this->excludeAbsoluteFilesFromUpgrade as $path) + if (strpos($fullpath, $rootpath.$path) !== false) + return true; + break; + // default : if it's not a backup or an upgrade, juste skip the file + default: + return false; + } + } } diff --git a/classes/AttributeGroup.php b/classes/AttributeGroup.php index 6f058c9ed..e990b0205 100644 --- a/classes/AttributeGroup.php +++ b/classes/AttributeGroup.php @@ -67,7 +67,16 @@ class AttributeGroupCore extends ObjectModel public function add($autodate = true, $nullValues = false) { - return parent::add($autodate, true); + $return = parent::add($autodate, true); + Module::hookExec('afterSaveAttributeGroup', array('id_attribute_group' => $this->id)); + return $return; + } + + public function update($nullValues = false) + { + $return = parent::update($nullValues); + Module::hookExec('afterSaveAttributeGroup', array('id_attribute_group' => $this->id)); + return $return; } /** @@ -111,7 +120,10 @@ class AttributeGroupCore extends ObjectModel /* Also delete related attributes */ if (Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'attribute_lang` WHERE `id_attribute` IN (SELECT id_attribute FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute_group` = '.(int)($this->id).')') === false OR Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'attribute` WHERE `id_attribute_group` = '.(int)($this->id)) === false) return false; - return parent::delete(); + $return = parent::delete(); + if($return) + Module::hookExec('afterDeleteAttributeGroup', array('id_attribute_group' => $this->id)); + return $return; } /** diff --git a/classes/Feature.php b/classes/Feature.php index 90bc5216e..cec22af96 100644 --- a/classes/Feature.php +++ b/classes/Feature.php @@ -111,7 +111,9 @@ class FeatureCore extends ObjectModel public function add($autodate = true, $nullValues = false) { - return parent::add($autodate, true); + $return = parent::add($autodate, true); + Module::hookExec('afterSaveFeature', array('id_feature' => $this->id)); + return $return; } public function delete() @@ -121,7 +123,10 @@ class FeatureCore extends ObjectModel Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_value` WHERE `id_feature` = '.(int)($this->id)); /* Also delete related products */ Db::getInstance()->Execute('DELETE FROM `'._DB_PREFIX_.'feature_product` WHERE `id_feature` = '.(int)($this->id)); - return parent::delete(); + $return = parent::delete(); + if($return) + Module::hookExec('afterDeleteFeature', array('id_feature' => $this->id)); + return $return; } public function update($nullValues = false) @@ -144,6 +149,7 @@ class FeatureCore extends ObjectModel Db::getInstance()->AutoExecute(_DB_PREFIX_.$this->table.'_lang', $field, 'UPDATE', '`'. pSQL($this->identifier).'` = '.(int)$this->id.' AND `id_lang` = '.(int)$field['id_lang']); } + Module::hookExec('afterSaveFeature', array('id_feature' => $this->id)); return $result; } diff --git a/classes/Upgrader.php b/classes/Upgrader.php index aa1e07877..b56637d1e 100644 --- a/classes/Upgrader.php +++ b/classes/Upgrader.php @@ -27,7 +27,7 @@ class UpgraderCore{ const DEFAULT_CHECK_VERSION_DELAY_HOURS = 24; - private static $rss_version_link = 'http://www.prestashop.com/xml/version.xml'; + public $rss_version_link = 'http://www.prestashop.com/xml/version.xml'; /** * link contains hte url where to download the file * @@ -40,6 +40,8 @@ class UpgraderCore{ public $version_num; public $link; public $autoupgrade; + public $changelog; + public $md5; public function __get($var) { @@ -96,20 +98,26 @@ class UpgraderCore{ $lastCheck = Configuration::get('PS_LAST_VERSION_CHECK'); // if we use the autoupgrade process, we will never refresh it // except if no check has been done before - if (!($this->autoUpgrade AND $lastCheck) AND ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS))) ) + if ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS)) ) { libxml_set_streams_context(stream_context_create(array('http' => array('timeout' => 3)))); - if ($feed = @simplexml_load_file(self::$rss_version_link)) + if ($feed = @simplexml_load_file($this->rss_version_link)) { $this->version_name = (string)$feed->version->name; $this->version_num = (string)$feed->version->num; $this->link = (string)$feed->download->link; + $this->md5 = (string)$feed->download->md5; + $this->changelog = (string)$feed->download->changelog; $this->autoupgrade = (int)$feed->autoupgrade; + $this->desc = (string)$feed->desc ; $configLastVersion = array( 'name' => $this->version_name, 'num' => $this->version_num, 'link' => $this->link, - 'autoupgrade' => $this->autoupgrade + 'md5' => $this->md5, + 'autoupgrade' => $this->autoupgrade, + 'changelog' => $this->changelog, + 'desc' => $this->desc ); Configuration::updateValue('PS_LAST_VERSION',serialize($configLastVersion)); Configuration::updateValue('PS_LAST_VERSION_CHECK',time()); @@ -117,11 +125,14 @@ class UpgraderCore{ } else { - $lastVersionCheck = unserialize(Configuration::get('PS_LAST_VERSION')); + $lastVersionCheck = @unserialize(Configuration::get('PS_LAST_VERSION')); $this->version_name = $lastVersionCheck['name']; $this->version_num = $lastVersionCheck['num']; $this->link = $lastVersionCheck['link']; $this->autoupgrade = $lastVersionCheck['autoupgrade']; + $this->md5 = $lastVersionCheck['md5']; + $this->desc = $lastVersionCheck['desc']; + $this->changelog = $lastVersionCheck['changelog']; } } // retro-compatibility : diff --git a/controllers/CategoryController.php b/controllers/CategoryController.php index 47fddc463..4a50c2571 100644 --- a/controllers/CategoryController.php +++ b/controllers/CategoryController.php @@ -51,7 +51,7 @@ class CategoryControllerCore extends FrontController public function canonicalRedirection() { - if (Configuration::get('PS_CANONICAL_REDIRECT')) + if (Configuration::get('PS_CANONICAL_REDIRECT') && !Tools::getValue('noredirect')) { // Automatically redirect to the canonical URL if the current in is the right one // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain diff --git a/install-dev/sql/db_settings_lite.sql b/install-dev/sql/db_settings_lite.sql index 6aa6b1dac..e3e4b10b3 100644 --- a/install-dev/sql/db_settings_lite.sql +++ b/install-dev/sql/db_settings_lite.sql @@ -67,7 +67,14 @@ INSERT INTO `PREFIX_hook` (`id_hook`, `name`, `title`, `description`, `position` (64, 'paymentTop', 'Top of payment page', 'Top of payment page', 0, 0), (65, 'afterCreateHtaccess', 'After htaccess creation', 'After htaccess creation', 0, 0), (66, 'afterSaveAdminMeta', 'After save configuration in AdminMeta', 'After save configuration in AdminMeta', 0, 0), -(67, 'taxManager', 'Tax Manager Factory', '' , 0, 0); +(67, 'attributeGroupForm', 'Add fileds to the form "attribute group"', 'Add fileds to the form "attribute group"', 0, 0), +(68, 'afterSaveAttributeGroup', 'On saving attribute group', 'On saving attribute group', 0, 0), +(69, 'afterDeleteAttributeGroup', 'On deleting attribute group', 'On deleting attribute group', 0, 0), +(70, 'featureForm', 'Add fileds to the form "feature"', 'Add fileds to the form "feature"', 0, 0), +(71, 'afterSaveFeature', 'On saving attribute feature', 'On saving attribute feature', 0, 0), +(72, 'afterDeleteFeature', 'On deleting attribute feature', 'On deleting attribute feature', 0, 0), +(73, 'taxManager', 'Tax Manager Factory', '' , 0, 0); + INSERT INTO `PREFIX_configuration` (`id_configuration`, `name`, `value`, `date_add`, `date_upd`) VALUES (1, 'PS_LANG_DEFAULT', '1', NOW(), NOW()), @@ -217,12 +224,12 @@ INSERT INTO `PREFIX_configuration_lang` (`id_configuration`, `id_lang`, `value`, (68, 1, 0, NOW()),(68, 2, 0, NOW()),(68, 3, 0, NOW()),(68, 4, 0, NOW()),(68, 5, 0, NOW()), (74, 1, 'Dear Customer,\r\n\r\nRegards,\r\nCustomer service', NOW()), (74, 2, 'Cher client,\r\n\r\nCordialement,\r\nLe service client', NOW()), -(74, 3, 'Estimado cliente,\r\n\r\nUn cordial saludo,\r\nAtención al cliente', NOW()), -(74, 4, 'Lieber Kunde,\r\n\r\nMit freundlichen Grüßen,\r\nIhr Kundenservice', NOW()), +(74, 3, 'Estimado cliente,\r\n\r\nUn cordial saludo,\r\nAtención al cliente', NOW()), +(74, 4, 'Lieber Kunde,\r\n\r\nMit freundlichen Grüßen,\r\nIhr Kundenservice', NOW()), (74, 5, 'Gentile Cliente,\r\n\r\nCordiali saluti,\r\nServizio Clienti', NOW()); INSERT INTO `PREFIX_lang` (`id_lang`, `name`, `active`, `iso_code`, `language_code`) VALUES -(1, 'English (English)', 1, 'en', 'en-us'),(2, 'Français (French)', 1, 'fr', 'fr'),(3, 'Español (Spanish)', 1, 'es', 'es'),(4, 'Deutsch (German)', 1, 'de', 'de'),(5, 'Italiano (Italian)', 1, 'it', 'it'); +(1, 'English (English)', 1, 'en', 'en-us'),(2, 'Français (French)', 1, 'fr', 'fr'),(3, 'Español (Spanish)', 1, 'es', 'es'),(4, 'Deutsch (German)', 1, 'de', 'de'),(5, 'Italiano (Italian)', 1, 'it', 'it'); INSERT INTO `PREFIX_lang_shop` (`id_lang`, `id_shop`) VALUES (1,1), (2,1), (3,1), (4,1), (5,1); @@ -247,27 +254,27 @@ INSERT INTO `PREFIX_order_state_lang` (`id_order_state`, `id_lang`, `name`, `tem (10, 1, 'Awaiting bank wire payment', 'bankwire'), (11, 1, 'Awaiting PayPal payment', ''), (12, 1, 'Payment remotely accepted', ''), -(1, 2, 'En attente du paiement par chèque', 'cheque'), -(2, 2, 'Paiement accepté', 'payment'), -(3, 2, 'Préparation en cours', 'preparation'), +(1, 2, 'En attente du paiement par chèque', 'cheque'), +(2, 2, 'Paiement accepté', 'payment'), +(3, 2, 'Préparation en cours', 'preparation'), (4, 2, 'En cours de livraison', 'shipped'), -(5, 2, 'Livré', ''), -(6, 2, 'Annulé', 'order_canceled'), -(7, 2, 'Remboursé', 'refund'), +(5, 2, 'Livré', ''), +(6, 2, 'Annulé', 'order_canceled'), +(7, 2, 'Remboursé', 'refund'), (8, 2, 'Erreur de paiement', 'payment_error'), -(9, 2, 'En attente de réapprovisionnement', 'outofstock'), +(9, 2, 'En attente de réapprovisionnement', 'outofstock'), (10, 2, 'En attente du paiement par virement bancaire', 'bankwire'), (11, 2, 'En attente du paiement par PayPal', ''), -(12, 2, 'Paiement à distance accepté', ''), +(12, 2, 'Paiement à distance accepté', ''), (1, 3, 'En espera de pago por cheque', 'cheque'), (2, 3, 'Pago aceptamos', 'payment'), -(3, 3, 'Preparación en curso', 'preparation'), +(3, 3, 'Preparación en curso', 'preparation'), (4, 3, 'Enviado', 'shipped'), (5, 3, 'Entregado', ''), (6, 3, 'Cancelada', 'order_canceled'), (7, 3, 'Reembolsado', 'refund'), (8, 3, 'Error de pago', 'payment_error'), -(9, 3, 'Productos fuera de línea', 'outofstock'), +(9, 3, 'Productos fuera de línea', 'outofstock'), (10, 3, 'En espera de pago por transferencia bancaria', 'bankwire'), (11, 3, 'En espera de pago por PayPal', ''), (12, 3, 'Payment remotely accepted', ''), @@ -356,106 +363,106 @@ INSERT INTO `PREFIX_country` (`id_country`, `id_zone`, `iso_code`, `call_prefix` INSERT INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) VALUES (1, 1, 'Germany'),(1, 2, 'Allemagne'),(1, 3, 'Alemania'),(2, 1, 'Austria'),(2, 2, 'Autriche'),(2, 3, 'Austria'), -(3, 1, 'Belgium'),(3, 2, 'Belgique'),(3, 3, 'Bélgica'),(4, 1, 'Canada'),(4, 2, 'Canada'),(4, 3, 'Canadá'),(5, 1, 'China'), -(5, 2, 'Chine'),(5, 3, 'Porcelana'),(6, 1, 'Spain'),(6, 2, 'Espagne'),(6, 3, 'España'),(7, 1, 'Finland'),(7, 2, 'Finlande'), -(7, 3, 'Finlandia'),(8, 1, 'France'),(8, 2, 'France'),(8, 3, 'Francia'),(9, 1, 'Greece'),(9, 2, 'Grèce'),(9, 3, 'Grecia'), -(10, 1, 'Italy'),(10, 2, 'Italie'),(10, 3, 'Italia'),(11, 1, 'Japan'),(11, 2, 'Japon'),(11, 3, 'Japón'), -(12, 1, 'Luxemburg'),(12, 2, 'Luxembourg'),(12, 3, 'Luxemburgo'),(13, 1, 'Netherlands'),(13, 2, 'Pays-bas'),(13, 3, 'Países Bajos'), +(3, 1, 'Belgium'),(3, 2, 'Belgique'),(3, 3, 'Bélgica'),(4, 1, 'Canada'),(4, 2, 'Canada'),(4, 3, 'Canadá'),(5, 1, 'China'), +(5, 2, 'Chine'),(5, 3, 'Porcelana'),(6, 1, 'Spain'),(6, 2, 'Espagne'),(6, 3, 'España'),(7, 1, 'Finland'),(7, 2, 'Finlande'), +(7, 3, 'Finlandia'),(8, 1, 'France'),(8, 2, 'France'),(8, 3, 'Francia'),(9, 1, 'Greece'),(9, 2, 'Grèce'),(9, 3, 'Grecia'), +(10, 1, 'Italy'),(10, 2, 'Italie'),(10, 3, 'Italia'),(11, 1, 'Japan'),(11, 2, 'Japon'),(11, 3, 'Japón'), +(12, 1, 'Luxemburg'),(12, 2, 'Luxembourg'),(12, 3, 'Luxemburgo'),(13, 1, 'Netherlands'),(13, 2, 'Pays-bas'),(13, 3, 'Países Bajos'), (14, 1, 'Poland'),(14, 2, 'Pologne'),(14, 3, 'Polonia'),(15, 1, 'Portugal'),(15, 2, 'Portugal'),(15, 3, 'Portugal'), -(16, 1, 'Czech Republic'),(16, 2, 'République Tchèque'),(16, 3, 'República Checa'),(17, 1, 'United Kingdom'),(17, 2, 'Royaume-Uni'),(17, 3, 'Reino Unido'), -(18, 1, 'Sweden'),(18, 2, 'Suède'),(18, 3, 'Suecia'),(19, 1, 'Switzerland'),(19, 2, 'Suisse'),(19, 3, 'Suiza'),(20, 1, 'Denmark'), -(20, 2, 'Danemark'),(20, 3, 'Dinamarca'),(21, 1, 'United States'),(21, 2, 'États-Unis'),(21, 3, 'EE.UU.'),(22, 1, 'HongKong'),(22, 2, 'Hong-Kong'), -(22, 3, 'Hong Kong'),(23, 1, 'Norway'),(23, 2, 'Norvège'),(23, 3, 'Noruega'),(24, 1, 'Australia'),(24, 2, 'Australie'),(24, 3, 'Australia'), +(16, 1, 'Czech Republic'),(16, 2, 'République Tchèque'),(16, 3, 'República Checa'),(17, 1, 'United Kingdom'),(17, 2, 'Royaume-Uni'),(17, 3, 'Reino Unido'), +(18, 1, 'Sweden'),(18, 2, 'Suède'),(18, 3, 'Suecia'),(19, 1, 'Switzerland'),(19, 2, 'Suisse'),(19, 3, 'Suiza'),(20, 1, 'Denmark'), +(20, 2, 'Danemark'),(20, 3, 'Dinamarca'),(21, 1, 'United States'),(21, 2, 'États-Unis'),(21, 3, 'EE.UU.'),(22, 1, 'HongKong'),(22, 2, 'Hong-Kong'), +(22, 3, 'Hong Kong'),(23, 1, 'Norway'),(23, 2, 'Norvège'),(23, 3, 'Noruega'),(24, 1, 'Australia'),(24, 2, 'Australie'),(24, 3, 'Australia'), (25, 1, 'Singapore'),(25, 2, 'Singapour'),(25, 3, 'Singapur'),(26, 1, 'Ireland'),(26, 2, 'Eire'),(26, 3, 'Irlanda'),(27, 1, 'New Zealand'), -(27, 2, 'Nouvelle-Zélande'),(27, 3, 'Nueva Zelanda'),(28, 1, 'South Korea'),(28, 2, 'Corée du Sud'),(28, 3, 'Corea del Sur'),(29, 1, 'Israel'), -(29, 2, 'Israël'),(29, 3, 'Israel'),(30, 1, 'South Africa'),(30, 2, 'Afrique du Sud'),(30, 3, 'Sudáfrica'),(31, 1, 'Nigeria'),(31, 2, 'Nigeria'), -(31, 3, 'Nigeria'),(32, 1, 'Ivory Coast'),(32, 2, 'Côte d''Ivoire'),(32, 3, 'Costa de Marfil'),(33, 1, 'Togo'),(33, 2, 'Togo'),(33, 3, 'Togo'), +(27, 2, 'Nouvelle-Zélande'),(27, 3, 'Nueva Zelanda'),(28, 1, 'South Korea'),(28, 2, 'Corée du Sud'),(28, 3, 'Corea del Sur'),(29, 1, 'Israel'), +(29, 2, 'Israël'),(29, 3, 'Israel'),(30, 1, 'South Africa'),(30, 2, 'Afrique du Sud'),(30, 3, 'Sudáfrica'),(31, 1, 'Nigeria'),(31, 2, 'Nigeria'), +(31, 3, 'Nigeria'),(32, 1, 'Ivory Coast'),(32, 2, 'Côte d''Ivoire'),(32, 3, 'Costa de Marfil'),(33, 1, 'Togo'),(33, 2, 'Togo'),(33, 3, 'Togo'), (34, 1, 'Bolivia'),(34, 2, 'Bolivie'),(34, 3, 'Bolivia'),(35, 1, 'Mauritius'),(35, 2, 'Ile Maurice'),(35, 3, 'Mauricio'),(36, 1, 'Romania'), -(36, 2, 'Roumanie'),(36, 3, 'Rumania'),(37, 1, 'Slovakia'),(37, 2, 'Slovaquie'),(37, 3, 'Eslovaquia'),(38, 1, 'Algeria'),(38, 2, 'Algérie'), -(38, 3, 'Argelia'),(39, 1, 'American Samoa'),(39, 2, 'Samoa Américaines'),(39, 3, 'Samoa Americana'),(40, 1, 'Andorra'),(40, 2, 'Andorre'),(40, 3, 'Andorra'), +(36, 2, 'Roumanie'),(36, 3, 'Rumania'),(37, 1, 'Slovakia'),(37, 2, 'Slovaquie'),(37, 3, 'Eslovaquia'),(38, 1, 'Algeria'),(38, 2, 'Algérie'), +(38, 3, 'Argelia'),(39, 1, 'American Samoa'),(39, 2, 'Samoa Américaines'),(39, 3, 'Samoa Americana'),(40, 1, 'Andorra'),(40, 2, 'Andorre'),(40, 3, 'Andorra'), (41, 1, 'Angola'),(41, 2, 'Angola'),(41, 3, 'Angola'),(42, 1, 'Anguilla'),(42, 2, 'Anguilla'),(42, 3, 'Anguila'),(43, 1, 'Antigua and Barbuda'), (43, 2, 'Antigua et Barbuda'),(43, 3, 'Antigua y Barbuda'),(44, 1, 'Argentina'),(44, 2, 'Argentine'),(44, 3, 'Argentina'),(45, 1, 'Armenia'), -(45, 2, 'Arménie'),(45, 3, 'Armenia'),(46, 1, 'Aruba'),(46, 2, 'Aruba'),(46, 3, 'Aruba'),(47, 1, 'Azerbaijan'),(47, 2, 'Azerbaïdjan'),(47, 3, 'Azerbaiyán'), -(48, 1, 'Bahamas'),(48, 2, 'Bahamas'),(48, 3, 'Bahamas'),(49, 1, 'Bahrain'),(49, 2, 'Bahreïn'),(49, 3, 'Bahrein'),(50, 1, 'Bangladesh'), -(50, 2, 'Bangladesh'),(50, 3, 'Bangladesh'),(51, 1, 'Barbados'),(51, 2, 'Barbade'),(51, 3, 'Barbados'),(52, 1, 'Belarus'),(52, 2, 'Bélarus'), -(52, 3, 'Belarús'),(53, 1, 'Belize'),(53, 2, 'Belize'),(53, 3, 'Belice'),(54, 1, 'Benin'),(54, 2, 'Bénin'),(54, 3, 'Benin'),(55, 1, 'Bermuda'), -(55, 2, 'Bermudes'),(55, 3, 'Bermudas'),(56, 1, 'Bhutan'),(56, 2, 'Bhoutan'),(56, 3, 'Bhután'),(57, 1, 'Botswana'),(57, 2, 'Botswana'),(57, 3, 'Botswana'), -(58, 1, 'Brazil'),(58, 2, 'Brésil'),(58, 3, 'Brasil'),(59, 1, 'Brunei'),(59, 2, 'Brunéi Darussalam'),(59, 3, 'Brunei'),(60, 1, 'Burkina Faso'), +(45, 2, 'Arménie'),(45, 3, 'Armenia'),(46, 1, 'Aruba'),(46, 2, 'Aruba'),(46, 3, 'Aruba'),(47, 1, 'Azerbaijan'),(47, 2, 'Azerbaïdjan'),(47, 3, 'Azerbaiyán'), +(48, 1, 'Bahamas'),(48, 2, 'Bahamas'),(48, 3, 'Bahamas'),(49, 1, 'Bahrain'),(49, 2, 'Bahreïn'),(49, 3, 'Bahrein'),(50, 1, 'Bangladesh'), +(50, 2, 'Bangladesh'),(50, 3, 'Bangladesh'),(51, 1, 'Barbados'),(51, 2, 'Barbade'),(51, 3, 'Barbados'),(52, 1, 'Belarus'),(52, 2, 'Bélarus'), +(52, 3, 'Belarús'),(53, 1, 'Belize'),(53, 2, 'Belize'),(53, 3, 'Belice'),(54, 1, 'Benin'),(54, 2, 'Bénin'),(54, 3, 'Benin'),(55, 1, 'Bermuda'), +(55, 2, 'Bermudes'),(55, 3, 'Bermudas'),(56, 1, 'Bhutan'),(56, 2, 'Bhoutan'),(56, 3, 'Bhután'),(57, 1, 'Botswana'),(57, 2, 'Botswana'),(57, 3, 'Botswana'), +(58, 1, 'Brazil'),(58, 2, 'Brésil'),(58, 3, 'Brasil'),(59, 1, 'Brunei'),(59, 2, 'Brunéi Darussalam'),(59, 3, 'Brunei'),(60, 1, 'Burkina Faso'), (60, 2, 'Burkina Faso'),(60, 3, 'Burkina Faso'),(61, 1, 'Burma (Myanmar)'),(61, 2, 'Burma (Myanmar)'),(61, 3, 'Birmania (Myanmar)'),(62, 1, 'Burundi'),(62, 2, 'Burundi'), -(62, 3, 'Burundi'),(63, 1, 'Cambodia'),(63, 2, 'Cambodge'),(63, 3, 'Camboya'),(64, 1, 'Cameroon'),(64, 2, 'Cameroun'),(64, 3, 'Camerún'),(65, 1, 'Cape Verde'),(65, 2, 'Cap-Vert'), -(65, 3, 'Cabo Verde'),(66, 1, 'Central African Republic'),(66, 2, 'Centrafricaine, République'),(66, 3, 'República Centroafricana'),(67, 1, 'Chad'),(67, 2, 'Tchad'),(67, 3, 'Chad'), +(62, 3, 'Burundi'),(63, 1, 'Cambodia'),(63, 2, 'Cambodge'),(63, 3, 'Camboya'),(64, 1, 'Cameroon'),(64, 2, 'Cameroun'),(64, 3, 'Camerún'),(65, 1, 'Cape Verde'),(65, 2, 'Cap-Vert'), +(65, 3, 'Cabo Verde'),(66, 1, 'Central African Republic'),(66, 2, 'Centrafricaine, République'),(66, 3, 'República Centroafricana'),(67, 1, 'Chad'),(67, 2, 'Tchad'),(67, 3, 'Chad'), (68, 1, 'Chile'),(68, 2, 'Chili'),(68, 3, 'Chile'),(69, 1, 'Colombia'),(69, 2, 'Colombie'),(69, 3, 'Colombia'),(70, 1, 'Comoros'),(70, 2, 'Comores'), -(70, 3, 'Comoras'),(71, 1, 'Congo, Dem. Republic'),(71, 2, 'Congo, Rép. Dém.'),(71, 3, 'Congo, Rep. Dem.'),(72, 1, 'Congo, Republic'),(72, 2, 'Congo, Rép.'),(72, 3, 'Congo, República'), +(70, 3, 'Comoras'),(71, 1, 'Congo, Dem. Republic'),(71, 2, 'Congo, Rép. Dém.'),(71, 3, 'Congo, Rep. Dem.'),(72, 1, 'Congo, Republic'),(72, 2, 'Congo, Rép.'),(72, 3, 'Congo, República'), (73, 1, 'Costa Rica'),(73, 2, 'Costa Rica'),(73, 3, 'Costa Rica'),(74, 1, 'Croatia'),(74, 2, 'Croatie'),(74, 3, 'Croacia'),(75, 1, 'Cuba'), (75, 2, 'Cuba'),(75, 3, 'Cuba'),(76, 1, 'Cyprus'),(76, 2, 'Chypre'),(76, 3, 'Chipre'),(77, 1, 'Djibouti'),(77, 2, 'Djibouti'),(77, 3, 'Djibouti'),(78, 1, 'Dominica'), -(78, 2, 'Dominica'),(78, 3, 'Dominica'),(79, 1, 'Dominican Republic'),(79, 2, 'République Dominicaine'),(79, 3, 'República Dominicana'),(80, 1, 'East Timor'),(80, 2, 'Timor oriental'), -(80, 3, 'Timor Oriental'),(81, 1, 'Ecuador'),(81, 2, 'Équateur'),(81, 3, 'Ecuador'),(82, 1, 'Egypt'),(82, 2, 'Égypte'),(82, 3, 'Egipto'),(83, 1, 'El Salvador'), -(83, 2, 'El Salvador'),(83, 3, 'El Salvador'),(84, 1, 'Equatorial Guinea'),(84, 2, 'Guinée Équatoriale'),(84, 3, 'Guinea Ecuatorial'),(85, 1, 'Eritrea'), -(85, 2, 'Érythrée'),(85, 3, 'Eritrea'),(86, 1, 'Estonia'),(86, 2, 'Estonie'),(86, 3, 'Estonia'),(87, 1, 'Ethiopia'),(87, 2, 'Éthiopie'),(87, 3, 'Etiopía'), -(88, 1, 'Falkland Islands'),(88, 2, 'Falkland, Îles'),(88, 3, 'Islas Malvinas'),(89, 1, 'Faroe Islands'),(89, 2, 'Féroé, Îles'),(89, 3, 'Islas Feroe'),(90, 1, 'Fiji'),(90, 2, 'Fidji'), -(90, 3, 'Fiji'),(91, 1, 'Gabon'),(91, 2, 'Gabon'),(91, 3, 'Gabón'),(92, 1, 'Gambia'),(92, 2, 'Gambie'),(92, 3, 'Gambia'),(93, 1, 'Georgia'), -(93, 2, 'Géorgie'),(93, 3, 'Georgia'),(94, 1, 'Ghana'),(94, 2, 'Ghana'),(94, 3, 'Ghana'),(95, 1, 'Grenada'),(95, 2, 'Grenade'),(95, 3, 'Granada'), +(78, 2, 'Dominica'),(78, 3, 'Dominica'),(79, 1, 'Dominican Republic'),(79, 2, 'République Dominicaine'),(79, 3, 'República Dominicana'),(80, 1, 'East Timor'),(80, 2, 'Timor oriental'), +(80, 3, 'Timor Oriental'),(81, 1, 'Ecuador'),(81, 2, 'Équateur'),(81, 3, 'Ecuador'),(82, 1, 'Egypt'),(82, 2, 'Égypte'),(82, 3, 'Egipto'),(83, 1, 'El Salvador'), +(83, 2, 'El Salvador'),(83, 3, 'El Salvador'),(84, 1, 'Equatorial Guinea'),(84, 2, 'Guinée Équatoriale'),(84, 3, 'Guinea Ecuatorial'),(85, 1, 'Eritrea'), +(85, 2, 'Érythrée'),(85, 3, 'Eritrea'),(86, 1, 'Estonia'),(86, 2, 'Estonie'),(86, 3, 'Estonia'),(87, 1, 'Ethiopia'),(87, 2, 'Éthiopie'),(87, 3, 'Etiopía'), +(88, 1, 'Falkland Islands'),(88, 2, 'Falkland, ÃŽles'),(88, 3, 'Islas Malvinas'),(89, 1, 'Faroe Islands'),(89, 2, 'Féroé, ÃŽles'),(89, 3, 'Islas Feroe'),(90, 1, 'Fiji'),(90, 2, 'Fidji'), +(90, 3, 'Fiji'),(91, 1, 'Gabon'),(91, 2, 'Gabon'),(91, 3, 'Gabón'),(92, 1, 'Gambia'),(92, 2, 'Gambie'),(92, 3, 'Gambia'),(93, 1, 'Georgia'), +(93, 2, 'Géorgie'),(93, 3, 'Georgia'),(94, 1, 'Ghana'),(94, 2, 'Ghana'),(94, 3, 'Ghana'),(95, 1, 'Grenada'),(95, 2, 'Grenade'),(95, 3, 'Granada'), (96, 1, 'Greenland'),(96, 2, 'Groenland'),(96, 3, 'Groenlandia'),(97, 1, 'Gibraltar'),(97, 2, 'Gibraltar'),(97, 3, 'Gibraltar'),(98, 1, 'Guadeloupe'),(98, 2, 'Guadeloupe'), (98, 3, 'Guadalupe'),(99, 1, 'Guam'),(99, 2, 'Guam'),(99, 3, 'Guam'),(100, 1, 'Guatemala'),(100, 2, 'Guatemala'),(100, 3, 'Guatemala'),(101, 1, 'Guernsey'), -(101, 2, 'Guernesey'),(101, 3, 'Guernsey'),(102, 1, 'Guinea'),(102, 2, 'Guinée'),(102, 3, 'Guinea'),(103, 1, 'Guinea-Bissau'),(103, 2, 'Guinée-Bissau'), -(103, 3, 'Guinea-Bissau'),(104, 1, 'Guyana'),(104, 2, 'Guyana'),(104, 3, 'Guyana'),(105, 1, 'Haiti'),(105, 2, 'Haîti'),(105, 3, 'Haití'),(106, 1, 'Heard Island and McDonald Islands'),(106, 2, 'Heard, Île et Mcdonald, Îles'), -(106, 3, 'Islas Heard y McDonald Islas'),(107, 1, 'Vatican City State'),(107, 2, 'Saint-Siege (État de la Cité du Vatican)'),(107, 3, 'Ciudad del Vaticano'),(108, 1, 'Honduras'),(108, 2, 'Honduras'),(108, 3, 'Honduras'),(109, 1, 'Iceland'), -(109, 2, 'Islande'),(109, 3, 'Islandia'),(110, 1, 'India'),(110, 2, 'Inde'),(110, 3, 'India'),(111, 1, 'Indonesia'),(111, 2, 'Indonésie'), -(111, 3, 'Indonesia'),(112, 1, 'Iran'),(112, 2, 'Iran'),(112, 3, 'Irán'),(113, 1, 'Iraq'),(113, 2, 'Iraq'),(113, 3, 'Iraq'),(114, 1, 'Man Island'), -(114, 2, 'Man, Île de'),(114, 3, 'Man, Isla'),(115, 1, 'Jamaica'),(115, 2, 'Jamaique'),(115, 3, 'Jamaica'),(116, 1, 'Jersey'),(116, 2, 'Jersey'), -(116, 3, 'Jersey'),(117, 1, 'Jordan'),(117, 2, 'Jordanie'),(117, 3, 'Jordania'),(118, 1, 'Kazakhstan'),(118, 2, 'Kazakhstan'),(118, 3, 'Kazajstán'),(119, 1, 'Kenya'), -(119, 2, 'Kenya'),(119, 3, 'Kenya'),(120, 1, 'Kiribati'),(120, 2, 'Kiribati'),(120, 3, 'Kiribati'),(121, 1, 'Korea, Dem. Republic of'),(121, 2, 'Corée, Rép. Populaire Dém. de'),(121, 3, 'KOREA, DEM. República de'), -(122, 1, 'Kuwait'),(122, 2, 'Koweït'),(122, 3, 'Kuwait'),(123, 1, 'Kyrgyzstan'),(123, 2, 'Kirghizistan'),(123, 3, 'Kirguistán'),(124, 1, 'Laos'),(124, 2, 'Laos'), -(124, 3, 'Laos'),(125, 1, 'Latvia'),(125, 2, 'Lettonie'),(125, 3, 'Letonia'),(126, 1, 'Lebanon'),(126, 2, 'Liban'),(126, 3, 'Líbano'),(127, 1, 'Lesotho'), -(127, 2, 'Lesotho'),(127, 3, 'Lesotho'),(128, 1, 'Liberia'),(128, 2, 'Libéria'),(128, 3, 'Liberia'),(129, 1, 'Libya'),(129, 2, 'Libyenne, Jamahiriya Arabe'),(129, 3, 'Libia'), +(101, 2, 'Guernesey'),(101, 3, 'Guernsey'),(102, 1, 'Guinea'),(102, 2, 'Guinée'),(102, 3, 'Guinea'),(103, 1, 'Guinea-Bissau'),(103, 2, 'Guinée-Bissau'), +(103, 3, 'Guinea-Bissau'),(104, 1, 'Guyana'),(104, 2, 'Guyana'),(104, 3, 'Guyana'),(105, 1, 'Haiti'),(105, 2, 'Haîti'),(105, 3, 'Haití'),(106, 1, 'Heard Island and McDonald Islands'),(106, 2, 'Heard, ÃŽle et Mcdonald, ÃŽles'), +(106, 3, 'Islas Heard y McDonald Islas'),(107, 1, 'Vatican City State'),(107, 2, 'Saint-Siege (État de la Cité du Vatican)'),(107, 3, 'Ciudad del Vaticano'),(108, 1, 'Honduras'),(108, 2, 'Honduras'),(108, 3, 'Honduras'),(109, 1, 'Iceland'), +(109, 2, 'Islande'),(109, 3, 'Islandia'),(110, 1, 'India'),(110, 2, 'Inde'),(110, 3, 'India'),(111, 1, 'Indonesia'),(111, 2, 'Indonésie'), +(111, 3, 'Indonesia'),(112, 1, 'Iran'),(112, 2, 'Iran'),(112, 3, 'Irán'),(113, 1, 'Iraq'),(113, 2, 'Iraq'),(113, 3, 'Iraq'),(114, 1, 'Man Island'), +(114, 2, 'Man, ÃŽle de'),(114, 3, 'Man, Isla'),(115, 1, 'Jamaica'),(115, 2, 'Jamaique'),(115, 3, 'Jamaica'),(116, 1, 'Jersey'),(116, 2, 'Jersey'), +(116, 3, 'Jersey'),(117, 1, 'Jordan'),(117, 2, 'Jordanie'),(117, 3, 'Jordania'),(118, 1, 'Kazakhstan'),(118, 2, 'Kazakhstan'),(118, 3, 'Kazajstán'),(119, 1, 'Kenya'), +(119, 2, 'Kenya'),(119, 3, 'Kenya'),(120, 1, 'Kiribati'),(120, 2, 'Kiribati'),(120, 3, 'Kiribati'),(121, 1, 'Korea, Dem. Republic of'),(121, 2, 'Corée, Rép. Populaire Dém. de'),(121, 3, 'KOREA, DEM. República de'), +(122, 1, 'Kuwait'),(122, 2, 'Koweït'),(122, 3, 'Kuwait'),(123, 1, 'Kyrgyzstan'),(123, 2, 'Kirghizistan'),(123, 3, 'Kirguistán'),(124, 1, 'Laos'),(124, 2, 'Laos'), +(124, 3, 'Laos'),(125, 1, 'Latvia'),(125, 2, 'Lettonie'),(125, 3, 'Letonia'),(126, 1, 'Lebanon'),(126, 2, 'Liban'),(126, 3, 'Líbano'),(127, 1, 'Lesotho'), +(127, 2, 'Lesotho'),(127, 3, 'Lesotho'),(128, 1, 'Liberia'),(128, 2, 'Libéria'),(128, 3, 'Liberia'),(129, 1, 'Libya'),(129, 2, 'Libyenne, Jamahiriya Arabe'),(129, 3, 'Libia'), (130, 1, 'Liechtenstein'),(130, 2, 'Liechtenstein'),(130, 3, 'Liechtenstein'),(131, 1, 'Lithuania'),(131, 2, 'Lituanie'),(131, 3, 'Lituania'),(132, 1, 'Macau'), -(132, 2, 'Macao'),(132, 3, 'Macao'),(133, 1, 'Macedonia'),(133, 2, 'Macédoine'),(133, 3, 'Macedonia'),(134, 1, 'Madagascar'),(134, 2, 'Madagascar'), +(132, 2, 'Macao'),(132, 3, 'Macao'),(133, 1, 'Macedonia'),(133, 2, 'Macédoine'),(133, 3, 'Macedonia'),(134, 1, 'Madagascar'),(134, 2, 'Madagascar'), (134, 3, 'Madagascar'),(135, 1, 'Malawi'),(135, 2, 'Malawi'),(135, 3, 'Malawi'),(136, 1, 'Malaysia'),(136, 2, 'Malaisie'),(136, 3, 'Malasia'), -(137, 1, 'Maldives'),(137, 2, 'Maldives'),(137, 3, 'Maldivas'),(138, 1, 'Mali'),(138, 2, 'Mali'),(138, 3, 'Malí'),(139, 1, 'Malta'),(139, 2, 'Malte'), -(139, 3, 'Malta'),(140, 1, 'Marshall Islands'),(140, 2, 'Marshall, Îles'),(140, 3, 'Marshall, Islas'),(141, 1, 'Martinique'),(141, 2, 'Martinique'), -(141, 3, 'Martinica'),(142, 1, 'Mauritania'),(142, 2, 'Mauritanie'),(142, 3, 'Mauritania'),(143, 1, 'Hungary'),(143, 2, 'Hongrie'),(143, 3, 'Hungría'), -(144, 1, 'Mayotte'),(144, 2, 'Mayotte'),(144, 3, 'Mayotte'),(145, 1, 'Mexico'),(145, 2, 'Mexique'),(145, 3, 'México'),(146, 1, 'Micronesia'),(146, 2, 'Micronésie'), -(146, 3, 'Micronesia'),(147, 1, 'Moldova'),(147, 2, 'Moldova'),(147, 3, 'Moldavia'),(148, 1, 'Monaco'),(148, 2, 'Monaco'),(148, 3, 'Mónaco'), -(149, 1, 'Mongolia'),(149, 2, 'Mongolie'),(149, 3, 'Mongolia'),(150, 1, 'Montenegro'),(150, 2, 'Monténégro'),(150, 3, 'Montenegro'),(151, 1, 'Montserrat'), +(137, 1, 'Maldives'),(137, 2, 'Maldives'),(137, 3, 'Maldivas'),(138, 1, 'Mali'),(138, 2, 'Mali'),(138, 3, 'Malí'),(139, 1, 'Malta'),(139, 2, 'Malte'), +(139, 3, 'Malta'),(140, 1, 'Marshall Islands'),(140, 2, 'Marshall, ÃŽles'),(140, 3, 'Marshall, Islas'),(141, 1, 'Martinique'),(141, 2, 'Martinique'), +(141, 3, 'Martinica'),(142, 1, 'Mauritania'),(142, 2, 'Mauritanie'),(142, 3, 'Mauritania'),(143, 1, 'Hungary'),(143, 2, 'Hongrie'),(143, 3, 'Hungría'), +(144, 1, 'Mayotte'),(144, 2, 'Mayotte'),(144, 3, 'Mayotte'),(145, 1, 'Mexico'),(145, 2, 'Mexique'),(145, 3, 'México'),(146, 1, 'Micronesia'),(146, 2, 'Micronésie'), +(146, 3, 'Micronesia'),(147, 1, 'Moldova'),(147, 2, 'Moldova'),(147, 3, 'Moldavia'),(148, 1, 'Monaco'),(148, 2, 'Monaco'),(148, 3, 'Mónaco'), +(149, 1, 'Mongolia'),(149, 2, 'Mongolie'),(149, 3, 'Mongolia'),(150, 1, 'Montenegro'),(150, 2, 'Monténégro'),(150, 3, 'Montenegro'),(151, 1, 'Montserrat'), (151, 2, 'Montserrat'),(151, 3, 'Montserrat'),(152, 1, 'Morocco'),(152, 2, 'Maroc'),(152, 3, 'Marruecos'),(153, 1, 'Mozambique'),(153, 2, 'Mozambique'),(153, 3, 'Mozambique'), -(154, 1, 'Namibia'),(154, 2, 'Namibie'),(154, 3, 'Namibia'),(155, 1, 'Nauru'),(155, 2, 'Nauru'),(155, 3, 'Nauru'),(156, 1, 'Nepal'),(156, 2, 'Népal'), -(156, 3, 'Nepal'),(157, 1, 'Netherlands Antilles'),(157, 2, 'Antilles Néerlandaises'),(157, 3, 'Antillas Neerlandesas'),(158, 1, 'New Caledonia'),(158, 2, 'Nouvelle-Calédonie'),(158, 3, 'Nueva Caledonia'), -(159, 1, 'Nicaragua'),(159, 2, 'Nicaragua'),(159, 3, 'Nicaragua'),(160, 1, 'Niger'),(160, 2, 'Niger'),(160, 3, 'Níger'),(161, 1, 'Niue'), -(161, 2, 'Niué'),(161, 3, 'Niue'),(162, 1, 'Norfolk Island'),(162, 2, 'Norfolk, Île'),(162, 3, 'Norfolk Island'),(163, 1, 'Northern Mariana Islands'),(163, 2, 'Mariannes du Nord, Îles'), -(163, 3, 'Islas Marianas del Norte'),(164, 1, 'Oman'),(164, 2, 'Oman'),(164, 3, 'Omán'),(165, 1, 'Pakistan'),(165, 2, 'Pakistan'),(165, 3, 'Pakistán'), -(166, 1, 'Palau'),(166, 2, 'Palaos'),(166, 3, 'Palau'),(167, 1, 'Palestinian Territories'),(167, 2, 'Palestinien Occupé, Territoire'),(167, 3, 'Territorios Palestinos'),(168, 1, 'Panama'), -(168, 2, 'Panama'),(168, 3, 'Panamá'),(169, 1, 'Papua New Guinea'),(169, 2, 'Papouasie-Nouvelle-Guinée'),(169, 3, 'Papua Nueva Guinea'),(170, 1, 'Paraguay'),(170, 2, 'Paraguay'), -(170, 3, 'Paraguay'),(171, 1, 'Peru'),(171, 2, 'Pérou'),(171, 3, 'Perú'),(172, 1, 'Philippines'),(172, 2, 'Philippines'),(172, 3, 'Filipinas'),(173, 1, 'Pitcairn'), +(154, 1, 'Namibia'),(154, 2, 'Namibie'),(154, 3, 'Namibia'),(155, 1, 'Nauru'),(155, 2, 'Nauru'),(155, 3, 'Nauru'),(156, 1, 'Nepal'),(156, 2, 'Népal'), +(156, 3, 'Nepal'),(157, 1, 'Netherlands Antilles'),(157, 2, 'Antilles Néerlandaises'),(157, 3, 'Antillas Neerlandesas'),(158, 1, 'New Caledonia'),(158, 2, 'Nouvelle-Calédonie'),(158, 3, 'Nueva Caledonia'), +(159, 1, 'Nicaragua'),(159, 2, 'Nicaragua'),(159, 3, 'Nicaragua'),(160, 1, 'Niger'),(160, 2, 'Niger'),(160, 3, 'Níger'),(161, 1, 'Niue'), +(161, 2, 'Niué'),(161, 3, 'Niue'),(162, 1, 'Norfolk Island'),(162, 2, 'Norfolk, ÃŽle'),(162, 3, 'Norfolk Island'),(163, 1, 'Northern Mariana Islands'),(163, 2, 'Mariannes du Nord, ÃŽles'), +(163, 3, 'Islas Marianas del Norte'),(164, 1, 'Oman'),(164, 2, 'Oman'),(164, 3, 'Omán'),(165, 1, 'Pakistan'),(165, 2, 'Pakistan'),(165, 3, 'Pakistán'), +(166, 1, 'Palau'),(166, 2, 'Palaos'),(166, 3, 'Palau'),(167, 1, 'Palestinian Territories'),(167, 2, 'Palestinien Occupé, Territoire'),(167, 3, 'Territorios Palestinos'),(168, 1, 'Panama'), +(168, 2, 'Panama'),(168, 3, 'Panamá'),(169, 1, 'Papua New Guinea'),(169, 2, 'Papouasie-Nouvelle-Guinée'),(169, 3, 'Papua Nueva Guinea'),(170, 1, 'Paraguay'),(170, 2, 'Paraguay'), +(170, 3, 'Paraguay'),(171, 1, 'Peru'),(171, 2, 'Pérou'),(171, 3, 'Perú'),(172, 1, 'Philippines'),(172, 2, 'Philippines'),(172, 3, 'Filipinas'),(173, 1, 'Pitcairn'), (173, 2, 'Pitcairn'),(173, 3, 'Pitcairn'),(174, 1, 'Puerto Rico'),(174, 2, 'Porto Rico'),(174, 3, 'Puerto Rico'),(175, 1, 'Qatar'),(175, 2, 'Qatar'),(175, 3, 'Qatar'), -(176, 1, 'Reunion Island'),(176, 2, 'Réunion, Île de la'),(176, 3, 'Reunión, Isla de la'),(177, 1, 'Russian Federation'),(177, 2, 'Russie, Fédération de'),(177, 3, 'Rusia, Federación de'),(178, 1, 'Rwanda'), -(178, 2, 'Rwanda'),(178, 3, 'Rwanda'),(179, 1, 'Saint Barthelemy'),(179, 2, 'Saint-Barthélemy'),(179, 3, 'San Bartolomé'),(180, 1, 'Saint Kitts and Nevis'),(180, 2, 'Saint-Kitts-et-Nevis'), -(180, 3, 'Saint Kitts y Nevis'),(181, 1, 'Saint Lucia'),(181, 2, 'Sainte-Lucie'),(181, 3, 'Santa Lucía'),(182, 1, 'Saint Martin'),(182, 2, 'Saint-Martin'),(182, 3, 'Saint Martin'), -(183, 1, 'Saint Pierre and Miquelon'),(183, 2, 'Saint-Pierre-et-Miquelon'),(183, 3, 'San Pedro y Miquelón'),(184, 1, 'Saint Vincent and the Grenadines'),(184, 2, 'Saint-Vincent-et-Les Grenadines'),(184, 3, 'San Vicente y las Granadinas'),(185, 1, 'Samoa'), -(185, 2, 'Samoa'),(185, 3, 'Samoa'),(186, 1, 'San Marino'),(186, 2, 'Saint-Marin'),(186, 3, 'San Marino'),(187, 1, 'São Tomé and Príncipe'),(187, 2, 'Sao Tomé-et-Principe'),(187, 3, 'Santo Tomé y Príncipe'), -(188, 1, 'Saudi Arabia'),(188, 2, 'Arabie Saoudite'),(188, 3, 'Arabia Saudita'),(189, 1, 'Senegal'),(189, 2, 'Sénégal'),(189, 3, 'Senegal'),(190, 1, 'Serbia'), +(176, 1, 'Reunion Island'),(176, 2, 'Réunion, ÃŽle de la'),(176, 3, 'Reunión, Isla de la'),(177, 1, 'Russian Federation'),(177, 2, 'Russie, Fédération de'),(177, 3, 'Rusia, Federación de'),(178, 1, 'Rwanda'), +(178, 2, 'Rwanda'),(178, 3, 'Rwanda'),(179, 1, 'Saint Barthelemy'),(179, 2, 'Saint-Barthélemy'),(179, 3, 'San Bartolomé'),(180, 1, 'Saint Kitts and Nevis'),(180, 2, 'Saint-Kitts-et-Nevis'), +(180, 3, 'Saint Kitts y Nevis'),(181, 1, 'Saint Lucia'),(181, 2, 'Sainte-Lucie'),(181, 3, 'Santa Lucía'),(182, 1, 'Saint Martin'),(182, 2, 'Saint-Martin'),(182, 3, 'Saint Martin'), +(183, 1, 'Saint Pierre and Miquelon'),(183, 2, 'Saint-Pierre-et-Miquelon'),(183, 3, 'San Pedro y Miquelón'),(184, 1, 'Saint Vincent and the Grenadines'),(184, 2, 'Saint-Vincent-et-Les Grenadines'),(184, 3, 'San Vicente y las Granadinas'),(185, 1, 'Samoa'), +(185, 2, 'Samoa'),(185, 3, 'Samoa'),(186, 1, 'San Marino'),(186, 2, 'Saint-Marin'),(186, 3, 'San Marino'),(187, 1, 'São Tomé and Príncipe'),(187, 2, 'Sao Tomé-et-Principe'),(187, 3, 'Santo Tomé y Príncipe'), +(188, 1, 'Saudi Arabia'),(188, 2, 'Arabie Saoudite'),(188, 3, 'Arabia Saudita'),(189, 1, 'Senegal'),(189, 2, 'Sénégal'),(189, 3, 'Senegal'),(190, 1, 'Serbia'), (190, 2, 'Serbie'),(190, 3, 'Serbia'),(191, 1, 'Seychelles'),(191, 2, 'Seychelles'),(191, 3, 'Seychelles'),(192, 1, 'Sierra Leone'),(192, 2, 'Sierra Leone'), -(192, 3, 'Sierra Leona'),(193, 1, 'Slovenia'),(193, 2, 'Slovénie'),(193, 3, 'Eslovenia'),(194, 1, 'Solomon Islands'),(194, 2, 'Salomon, Îles'),(194, 3, 'Salomón, Islas'),(195, 1, 'Somalia'), -(195, 2, 'Somalie'),(195, 3, 'Somalia'),(196, 1, 'South Georgia and the South Sandwich Islands'),(196, 2, 'Géorgie du Sud et les Îles Sandwich du Sud'),(196, 3, 'Georgia del Sur e Islas Sandwich del Sur'),(197, 1, 'Sri Lanka'),(197, 2, 'Sri Lanka'), -(197, 3, 'Sri Lanka'),(198, 1, 'Sudan'),(198, 2, 'Soudan'),(198, 3, 'Sudán'),(199, 1, 'Suriname'),(199, 2, 'Suriname'),(199, 3, 'Suriname'),(200, 1, 'Svalbard and Jan Mayen'), -(200, 2, 'Svalbard et Île Jan Mayen'),(200, 3, 'Svalbard y Jan Mayen'),(201, 1, 'Swaziland'),(201, 2, 'Swaziland'),(201, 3, 'Swazilandia'),(202, 1, 'Syria'),(202, 2, 'Syrienne'), -(202, 3, 'Siria'),(203, 1, 'Taiwan'),(203, 2, 'Taïwan'),(203, 3, 'Taiwán'),(204, 1, 'Tajikistan'),(204, 2, 'Tadjikistan'),(204, 3, 'Tayikistán'), -(205, 1, 'Tanzania'),(205, 2, 'Tanzanie'),(205, 3, 'Tanzania'),(206, 1, 'Thailand'),(206, 2, 'Thaïlande'),(206, 3, 'Tailandia'),(207, 1, 'Tokelau'), -(207, 2, 'Tokelau'),(207, 3, 'Tokelau'),(208, 1, 'Tonga'),(208, 2, 'Tonga'),(208, 3, 'Tonga'),(209, 1, 'Trinidad and Tobago'),(209, 2, 'Trinité-et-Tobago'),(209, 3, 'Trinidad y Tobago'), -(210, 1, 'Tunisia'),(210, 2, 'Tunisie'),(210, 3, 'Túnez'),(211, 1, 'Turkey'),(211, 2, 'Turquie'),(211, 3, 'Turquía'),(212, 1, 'Turkmenistan'),(212, 2, 'Turkménistan'), -(212, 3, 'Turkmenistán'),(213, 1, 'Turks and Caicos Islands'),(213, 2, 'Turks et Caiques, Îles'),(213, 3, 'Islas Turcas y Caicos'),(214, 1, 'Tuvalu'),(214, 2, 'Tuvalu'),(214, 3, 'Tuvalu'), +(192, 3, 'Sierra Leona'),(193, 1, 'Slovenia'),(193, 2, 'Slovénie'),(193, 3, 'Eslovenia'),(194, 1, 'Solomon Islands'),(194, 2, 'Salomon, ÃŽles'),(194, 3, 'Salomón, Islas'),(195, 1, 'Somalia'), +(195, 2, 'Somalie'),(195, 3, 'Somalia'),(196, 1, 'South Georgia and the South Sandwich Islands'),(196, 2, 'Géorgie du Sud et les ÃŽles Sandwich du Sud'),(196, 3, 'Georgia del Sur e Islas Sandwich del Sur'),(197, 1, 'Sri Lanka'),(197, 2, 'Sri Lanka'), +(197, 3, 'Sri Lanka'),(198, 1, 'Sudan'),(198, 2, 'Soudan'),(198, 3, 'Sudán'),(199, 1, 'Suriname'),(199, 2, 'Suriname'),(199, 3, 'Suriname'),(200, 1, 'Svalbard and Jan Mayen'), +(200, 2, 'Svalbard et ÃŽle Jan Mayen'),(200, 3, 'Svalbard y Jan Mayen'),(201, 1, 'Swaziland'),(201, 2, 'Swaziland'),(201, 3, 'Swazilandia'),(202, 1, 'Syria'),(202, 2, 'Syrienne'), +(202, 3, 'Siria'),(203, 1, 'Taiwan'),(203, 2, 'Taïwan'),(203, 3, 'Taiwán'),(204, 1, 'Tajikistan'),(204, 2, 'Tadjikistan'),(204, 3, 'Tayikistán'), +(205, 1, 'Tanzania'),(205, 2, 'Tanzanie'),(205, 3, 'Tanzania'),(206, 1, 'Thailand'),(206, 2, 'Thaïlande'),(206, 3, 'Tailandia'),(207, 1, 'Tokelau'), +(207, 2, 'Tokelau'),(207, 3, 'Tokelau'),(208, 1, 'Tonga'),(208, 2, 'Tonga'),(208, 3, 'Tonga'),(209, 1, 'Trinidad and Tobago'),(209, 2, 'Trinité-et-Tobago'),(209, 3, 'Trinidad y Tobago'), +(210, 1, 'Tunisia'),(210, 2, 'Tunisie'),(210, 3, 'Túnez'),(211, 1, 'Turkey'),(211, 2, 'Turquie'),(211, 3, 'Turquía'),(212, 1, 'Turkmenistan'),(212, 2, 'Turkménistan'), +(212, 3, 'Turkmenistán'),(213, 1, 'Turks and Caicos Islands'),(213, 2, 'Turks et Caiques, ÃŽles'),(213, 3, 'Islas Turcas y Caicos'),(214, 1, 'Tuvalu'),(214, 2, 'Tuvalu'),(214, 3, 'Tuvalu'), (215, 1, 'Uganda'),(215, 2, 'Ouganda'),(215, 3, 'Uganda'),(216, 1, 'Ukraine'),(216, 2, 'Ukraine'),(216, 3, 'Ucrania'),(217, 1, 'United Arab Emirates'), -(217, 2, 'Émirats Arabes Unis'),(217, 3, 'Emiratos Árabes Unidos'),(218, 1, 'Uruguay'),(218, 2, 'Uruguay'),(218, 3, 'Uruguay'),(219, 1, 'Uzbekistan'),(219, 2, 'Ouzbékistan'), -(219, 3, 'Uzbekistán'),(220, 1, 'Vanuatu'),(220, 2, 'Vanuatu'),(220, 3, 'Vanuatu'),(221, 1, 'Venezuela'),(221, 2, 'Venezuela'),(221, 3, 'Venezuela'), -(222, 1, 'Vietnam'),(222, 2, 'Vietnam'),(222, 3, 'Vietnam'),(223, 1, 'Virgin Islands (British)'),(223, 2, 'Îles Vierges Britanniques'),(223, 3, 'Islas Vírgenes (Británicas)'),(224, 1, 'Virgin Islands (U.S.)'), -(224, 2, 'Îles Vierges des États-Unis'),(224, 3, 'Islas Vírgenes (EE.UU.)'),(225, 1, 'Wallis and Futuna'),(225, 2, 'Wallis et Futuna'),(225, 3, 'Wallis y Futuna'),(226, 1, 'Western Sahara'),(226, 2, 'Sahara Occidental'), -(226, 3, 'Sáhara Occidental'),(227, 1, 'Yemen'),(227, 2, 'Yémen'),(227, 3, 'Yemen'),(228, 1, 'Zambia'),(228, 2, 'Zambie'),(228, 3, 'Zambia'),(229, 1, 'Zimbabwe'), -(229, 2, 'Zimbabwe'),(229, 3, 'Zimbabwe'),(230, 1, 'Albania'),(230, 2, 'Albanie'),(230, 3, 'Albania'),(231, 1, 'Afghanistan'),(231, 2, 'Afghanistan'),(231, 3, 'Afganistán'), -(232, 1, 'Antarctica'),(232, 2, 'Antarctique'),(232, 3, 'Antártida'),(233, 1, 'Bosnia and Herzegovina'),(233, 2, 'Bosnie-Herzégovine'),(233, 3, 'Bosnia y Herzegovina'),(234, 1, 'Bouvet Island'), -(234, 2, 'Bouvet, Île'),(234, 3, 'Isla Bouvet'),(235, 1, 'British Indian Ocean Territory'),(235, 2, 'Océan Indien, Territoire Britannique de L'''),(235, 3, 'British Indian Ocean Territory'),(236, 1, 'Bulgaria'),(236, 2, 'Bulgarie'), -(236, 3, 'Bulgaria'),(237, 1, 'Cayman Islands'),(237, 2, 'Caïmans, Îles'),(237, 3, 'Caimán, Islas'),(238, 1, 'Christmas Island'),(238, 2, 'Christmas, Île'),(238, 3, 'Navidad, Isla de'), -(239, 1, 'Cocos (Keeling) Islands'),(239, 2, 'Cocos (Keeling), Îles'),(239, 3, 'Cocos (Keeling), Islas'),(240, 1, 'Cook Islands'),(240, 2, 'Cook, Îles'),(240, 3, 'Cook, Islas'), -(241, 1, 'French Guiana'),(241, 2, 'Guyane Française'),(241, 3, 'Francés Guayana'),(242, 1, 'French Polynesia'),(242, 2, 'Polynésie Française'),(242, 3, 'Polinesia francés'),(243, 1, 'French Southern Territories'), -(243, 2, 'Terres Australes Françaises'),(243, 3, 'Territorios del sur francés'),(244, 1, 'Åland Islands'),(244, 2, 'Åland, Îles'),(244, 3, 'Islas Åland'); +(217, 2, 'Émirats Arabes Unis'),(217, 3, 'Emiratos Ã�rabes Unidos'),(218, 1, 'Uruguay'),(218, 2, 'Uruguay'),(218, 3, 'Uruguay'),(219, 1, 'Uzbekistan'),(219, 2, 'Ouzbékistan'), +(219, 3, 'Uzbekistán'),(220, 1, 'Vanuatu'),(220, 2, 'Vanuatu'),(220, 3, 'Vanuatu'),(221, 1, 'Venezuela'),(221, 2, 'Venezuela'),(221, 3, 'Venezuela'), +(222, 1, 'Vietnam'),(222, 2, 'Vietnam'),(222, 3, 'Vietnam'),(223, 1, 'Virgin Islands (British)'),(223, 2, 'ÃŽles Vierges Britanniques'),(223, 3, 'Islas Vírgenes (Británicas)'),(224, 1, 'Virgin Islands (U.S.)'), +(224, 2, 'ÃŽles Vierges des États-Unis'),(224, 3, 'Islas Vírgenes (EE.UU.)'),(225, 1, 'Wallis and Futuna'),(225, 2, 'Wallis et Futuna'),(225, 3, 'Wallis y Futuna'),(226, 1, 'Western Sahara'),(226, 2, 'Sahara Occidental'), +(226, 3, 'Sáhara Occidental'),(227, 1, 'Yemen'),(227, 2, 'Yémen'),(227, 3, 'Yemen'),(228, 1, 'Zambia'),(228, 2, 'Zambie'),(228, 3, 'Zambia'),(229, 1, 'Zimbabwe'), +(229, 2, 'Zimbabwe'),(229, 3, 'Zimbabwe'),(230, 1, 'Albania'),(230, 2, 'Albanie'),(230, 3, 'Albania'),(231, 1, 'Afghanistan'),(231, 2, 'Afghanistan'),(231, 3, 'Afganistán'), +(232, 1, 'Antarctica'),(232, 2, 'Antarctique'),(232, 3, 'Antártida'),(233, 1, 'Bosnia and Herzegovina'),(233, 2, 'Bosnie-Herzégovine'),(233, 3, 'Bosnia y Herzegovina'),(234, 1, 'Bouvet Island'), +(234, 2, 'Bouvet, ÃŽle'),(234, 3, 'Isla Bouvet'),(235, 1, 'British Indian Ocean Territory'),(235, 2, 'Océan Indien, Territoire Britannique de L'''),(235, 3, 'British Indian Ocean Territory'),(236, 1, 'Bulgaria'),(236, 2, 'Bulgarie'), +(236, 3, 'Bulgaria'),(237, 1, 'Cayman Islands'),(237, 2, 'Caïmans, ÃŽles'),(237, 3, 'Caimán, Islas'),(238, 1, 'Christmas Island'),(238, 2, 'Christmas, ÃŽle'),(238, 3, 'Navidad, Isla de'), +(239, 1, 'Cocos (Keeling) Islands'),(239, 2, 'Cocos (Keeling), ÃŽles'),(239, 3, 'Cocos (Keeling), Islas'),(240, 1, 'Cook Islands'),(240, 2, 'Cook, ÃŽles'),(240, 3, 'Cook, Islas'), +(241, 1, 'French Guiana'),(241, 2, 'Guyane Française'),(241, 3, 'Francés Guayana'),(242, 1, 'French Polynesia'),(242, 2, 'Polynésie Française'),(242, 3, 'Polinesia francés'),(243, 1, 'French Southern Territories'), +(243, 2, 'Terres Australes Françaises'),(243, 3, 'Territorios del sur francés'),(244, 1, 'Ã…land Islands'),(244, 2, 'Ã…land, ÃŽles'),(244, 3, 'Islas Ã…land'); INSERT IGNORE INTO `PREFIX_country_lang` (`id_country`, `id_lang`, `name`) (SELECT `id_country`, id_lang, (SELECT tl.`name` @@ -498,23 +505,23 @@ INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `tax_be (145, 2, 'Guerrero', 'GRO', 0, 1), (145, 2, 'Hidalgo', 'HID', 0, 1), (145, 2, 'Jalisco', 'JAL', 0, 1), -(145, 2, 'Estado de México', 'MEX', 0, 1), -(145, 2, 'Michoacán', 'MIC', 0, 1), +(145, 2, 'Estado de México', 'MEX', 0, 1), +(145, 2, 'Michoacán', 'MIC', 0, 1), (145, 2, 'Morelos', 'MOR', 0, 1), (145, 2, 'Nayarit', 'NAY', 0, 1), -(145, 2, 'Nuevo León', 'NLE', 0, 1), +(145, 2, 'Nuevo León', 'NLE', 0, 1), (145, 2, 'Oaxaca', 'OAX', 0, 1), (145, 2, 'Puebla', 'PUE', 0, 1), -(145, 2, 'Querétaro', 'QUE', 0, 1), +(145, 2, 'Querétaro', 'QUE', 0, 1), (145, 2, 'Quintana Roo', 'ROO', 0, 1), -(145, 2, 'San Luis Potosí', 'SLP', 0, 1), +(145, 2, 'San Luis Potosí', 'SLP', 0, 1), (145, 2, 'Sinaloa', 'SIN', 0, 1), (145, 2, 'Sonora', 'SON', 0, 1), (145, 2, 'Tabasco', 'TAB', 0, 1), (145, 2, 'Tamaulipas', 'TAM', 0, 1), (145, 2, 'Tlaxcala', 'TLA', 0, 1), (145, 2, 'Veracruz', 'VER', 0, 1), -(145, 2, 'Yucatán', 'YUC', 0, 1), +(145, 2, 'Yucatán', 'YUC', 0, 1), (145, 2, 'Zacatecas', 'ZAC', 0, 1); INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active`) VALUES @@ -538,17 +545,17 @@ INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active (44, 6, 'Chaco', 'H', 1), (44, 6, 'Chubut', 'U', 1), (44, 6, 'Ciudad de Buenos Aires', 'C', 1), -(44, 6, 'Córdoba', 'X', 1), +(44, 6, 'Córdoba', 'X', 1), (44, 6, 'Corrientes', 'W', 1), -(44, 6, 'Entre Ríos', 'E', 1), +(44, 6, 'Entre Ríos', 'E', 1), (44, 6, 'Formosa', 'P', 1), (44, 6, 'Jujuy', 'Y', 1), (44, 6, 'La Pampa', 'L', 1), (44, 6, 'La Rioja', 'F', 1), (44, 6, 'Mendoza', 'M', 1), (44, 6, 'Misiones', 'N', 1), -(44, 6, 'Neuquén', 'Q', 1), -(44, 6, 'Río Negro', 'R', 1), +(44, 6, 'Neuquén', 'Q', 1), +(44, 6, 'Río Negro', 'R', 1), (44, 6, 'Salta', 'A', 1), (44, 6, 'San Juan', 'J', 1), (44, 6, 'San Luis', 'D', 1), @@ -556,7 +563,7 @@ INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active (44, 6, 'Santa Fe', 'S', 1), (44, 6, 'Santiago del Estero', 'G', 1), (44, 6, 'Tierra del Fuego', 'V', 1), -(44, 6, 'Tucumán', 'T', 1); +(44, 6, 'Tucumán', 'T', 1); INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `tax_behavior`, `active`) VALUES (10, 1, 'Agrigento', 'AG', 0, 1), @@ -595,7 +602,7 @@ INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `tax_be (10, 1, 'Ferrara', 'FE', 0, 1), (10, 1, 'Firenze', 'FI', 0, 1), (10, 1, 'Foggia', 'FG', 0, 1), -(10, 1, 'Forlì-Cesena', 'FC', 0, 1), +(10, 1, 'Forlì-Cesena', 'FC', 0, 1), (10, 1, 'Frosinone', 'FR', 0, 1), (10, 1, 'Genova', 'GE', 0, 1), (10, 1, 'Gorizia', 'GO', 0, 1), @@ -755,18 +762,18 @@ INSERT INTO `PREFIX_state` (`id_country`, `id_zone`, `name`, `iso_code`, `active (11, 3, "Yamanashi", "19", 1); INSERT INTO `PREFIX_currency` (`name`, `iso_code`, `iso_code_num`, `sign`, `blank`, `conversion_rate`, `format`, `deleted`, `active`) VALUES -('Euro', 'EUR', '978', '€', 1, 1, 2, 0, 1), ('Dollar', 'USD', '840', '$', 0, 1.32, 1, 0, 1), ('Pound', 'GBP', '826', '£', 0, 0.8, 1, 0, 1); -/*('Yen', 'JPY', '392', '¥', 0, 113.14, 2, 0, 0), -('Lev', 'BGN', '975', 'лв', 1, 1.96, 2, 0, 0), ('Couronne', 'CZK', '203', 'Kč', 1, 24.58, 2, 0, 0), ('Couronne', 'DKK', '208', 'kr', 1, 7.45, 2, 0, 0), +('Euro', 'EUR', '978', '€', 1, 1, 2, 0, 1), ('Dollar', 'USD', '840', '$', 0, 1.32, 1, 0, 1), ('Pound', 'GBP', '826', '£', 0, 0.8, 1, 0, 1); +/*('Yen', 'JPY', '392', 'Â¥', 0, 113.14, 2, 0, 0), +('Lev', 'BGN', '975', 'лв', 1, 1.96, 2, 0, 0), ('Couronne', 'CZK', '203', 'KÄ�', 1, 24.58, 2, 0, 0), ('Couronne', 'DKK', '208', 'kr', 1, 7.45, 2, 0, 0), ('Couronne', 'EEK', '233', 'kr', 1, 15.65, 2, 0, 0), ('Forint', 'HUF', '348', 'Ft', 1, 279.65, 2, 0, 0), ('Litas', 'LTL', '440', 'Lt', 1, 3.45, 2, 0, 0), -('Lats letton', 'LVL', '428', 'Ls', 1, 0.71, 2, 0, 0), ('Zloty', 'PLN', '985', 'zł', 1, 3.94, 2, 0, 0), ('Leu', 'RON', '946', 'lei', 1, 4.26, 2, 0, 0), +('Lats letton', 'LVL', '428', 'Ls', 1, 0.71, 2, 0, 0), ('Zloty', 'PLN', '985', 'zÅ‚', 1, 3.94, 2, 0, 0), ('Leu', 'RON', '946', 'lei', 1, 4.26, 2, 0, 0), ('Couronne', 'SEK', '752', 'kr', 1, 9.13, 2, 0, 0), ('Franc Suisse', 'CHF', '756', 'CHF', 1, 1.32, 2, 0, 0), ('Couronne', 'NOK', '578', 'kr', 1, 7.90, 2, 0, 0), -('Kuna', 'HRK', '191', 'kn', 1, 7.28, 2, 0, 0), ('Rouble', 'RUB', '643', 'руб', 1, 41.46, 2, 0, 0), ('Livre', 'TRY', '949', 'TL', 1, 1.98, 2, 0, 0), -('Australian Dollar', 'AUD', '036', '$', 1, 1.40, 2, 0, 0), ('Réal', 'BRL', '986', 'R$', 1, 2.28, 2, 0, 0), ('Canadian Dollar', 'CAD', '124', '$', 1, 1.37, 2, 0, 0), -('Yuan renminbi', 'CNY', '156', '¥', 1, 8.96, 2, 0, 0), ('Hong Kong Dollar', 'HKD', '344', '$', 1, 10.37, 2, 0, 0), ('Rupiah', 'IDR', '360', 'Rp', 1, 11956.81, 2, 0, 0), -('Rupees', 'INR', '356', 'rupees', 1, 60.93, 2, 0, 0), ('Won', 'KRW', '410', '₩', 1, 1537.58, 2, 0, 0), ('Mexican Peso', 'MXN', '484', '$', 1, 16.96, 2, 0, 0), +('Kuna', 'HRK', '191', 'kn', 1, 7.28, 2, 0, 0), ('Rouble', 'RUB', '643', 'руб', 1, 41.46, 2, 0, 0), ('Livre', 'TRY', '949', 'TL', 1, 1.98, 2, 0, 0), +('Australian Dollar', 'AUD', '036', '$', 1, 1.40, 2, 0, 0), ('Réal', 'BRL', '986', 'R$', 1, 2.28, 2, 0, 0), ('Canadian Dollar', 'CAD', '124', '$', 1, 1.37, 2, 0, 0), +('Yuan renminbi', 'CNY', '156', 'Â¥', 1, 8.96, 2, 0, 0), ('Hong Kong Dollar', 'HKD', '344', '$', 1, 10.37, 2, 0, 0), ('Rupiah', 'IDR', '360', 'Rp', 1, 11956.81, 2, 0, 0), +('Rupees', 'INR', '356', 'rupees', 1, 60.93, 2, 0, 0), ('Won', 'KRW', '410', 'â‚©', 1, 1537.58, 2, 0, 0), ('Mexican Peso', 'MXN', '484', '$', 1, 16.96, 2, 0, 0), ('Ringgit', 'MYR', '458', 'RM', 1, 4.13, 2, 0, 0), ('New-Zeland Dollar', 'NZD', '554', '$', 1, 1.81, 2, 0, 0), ('Peso Phillipin', 'PHP', '608', 'Php', 1, 58.61, 2, 0, 0), -('Singapour Dollar', 'SGD', '702', '$', 1, 1.77, 2, 0, 0), ('Baht', 'THB', '764', '฿', 1, 40.96, 2, 0, 0), ('Rand', 'ZAR', '710', 'R', 1, 9.38, 2, 0, 0);*/ +('Singapour Dollar', 'SGD', '702', '$', 1, 1.77, 2, 0, 0), ('Baht', 'THB', '764', '฿', 1, 40.96, 2, 0, 0), ('Rand', 'ZAR', '710', 'R', 1, 9.38, 2, 0, 0);*/ INSERT INTO `PREFIX_currency_shop` (`id_currency`, `id_shop`) VALUES (1,1), (2,1), (3,1); INSERT INTO `PREFIX_image_type` (`id_image_type`, `name`, `width`, `height`, `products`, `categories`, `manufacturers`, `suppliers`, `scenes`, `stores`) VALUES @@ -783,12 +790,12 @@ INSERT INTO `PREFIX_contact_shop` (`id_contact`, `id_shop`) VALUES (1,1), (2,1); INSERT INTO `PREFIX_contact_lang` (`id_contact`, `id_lang`, `name`, `description`) VALUES (1, 1, 'Webmaster', 'If a technical problem occurs on this website'), -(1, 2, 'Webmaster', 'Si un problème technique survient sur le site'), -(1, 3, 'Webmaster', 'Si se produce un problema técnico en el sitio'), +(1, 2, 'Webmaster', 'Si un problème technique survient sur le site'), +(1, 3, 'Webmaster', 'Si se produce un problema técnico en el sitio'), (1, 4, 'Webmaster', 'Falls ein technisches Problem auf der Webseite auftritt'), (1, 5, 'Webmaster', 'Se nel sito interviene un problema tecnico'), (2, 1, 'Customer service', 'For any question about a product, an order'), -(2, 2, 'Service client', 'Pour toute question ou réclamation sur une commande'), +(2, 2, 'Service client', 'Pour toute question ou réclamation sur une commande'), (2, 3, 'Service client', 'Para cualquier pregunta o queja acerca de un pedido'), (2, 4, 'Kundenservice', 'Bei Fragen oder Reklamationen zu einer Bestellung'), (2, 5, 'Servizio clienti', 'Per qualsiasi domanda o reclamo riguardo ad un ordine'); @@ -796,10 +803,10 @@ INSERT INTO `PREFIX_contact_lang` (`id_contact`, `id_lang`, `name`, `description INSERT INTO `PREFIX_discount_type` (`id_discount_type`) VALUES (1),(2),(3); INSERT INTO `PREFIX_discount_type_lang` (`id_discount_type`, `id_lang`, `name`) VALUES (1, 1, 'Discount on order (%)'),(2, 1, 'Discount on order (amount)'),(3, 1, 'Free shipping'), -(1, 2, 'Réduction sur la commande (%)'),(2, 2, 'Réduction sur la commande (montant)'),(3, 2, 'Frais de port gratuits'), -(1, 3, 'Descuento orden (%)'),(2, 3, 'Descuento (el orden de cantidad)'),(3, 3, 'Gastos de envío gratis'), +(1, 2, 'Réduction sur la commande (%)'),(2, 2, 'Réduction sur la commande (montant)'),(3, 2, 'Frais de port gratuits'), +(1, 3, 'Descuento orden (%)'),(2, 3, 'Descuento (el orden de cantidad)'),(3, 3, 'Gastos de envío gratis'), (1, 4, 'Preisnachlass auf die Bestellung (%)'),(2, 4, 'Preisnachlass auf die Bestellung (Betrag)'),(3, 4, 'Versandkosten gratis'), -(1, 5, 'Sconto sull’ordine (%)'),(2, 5, 'Sconto sull’ordine (importo)'),(3, 5, 'Spese di porto gratuite'); +(1, 5, 'Sconto sull’ordine (%)'),(2, 5, 'Sconto sull’ordine (importo)'),(3, 5, 'Spese di porto gratuite'); INSERT INTO `PREFIX_profile` (`id_profile`) VALUES (1); INSERT INTO `PREFIX_profile_lang` (`id_profile`, `id_lang`, `name`) VALUES (1, 1, 'Administrator'),(1, 2, 'Administrateur'),(1, 3, 'Administrador'),(1, 4, 'Administrator'),(1, 5, 'Administrator'); @@ -841,45 +848,45 @@ INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES (2, 1, 'Catalogue'),(2, 2, 'Clients'),(2, 3, 'Commandes'),(2, 4, 'Paiement'),(2, 5, 'Transport'), -(2, 6, 'Stats'),(2, 7, 'Modules'),(2, 8, 'Préférences'),(2, 9, 'Outils'),(2, 10, 'Marques'),(2, 11, 'Attributs et groupes'),(2, 12, 'Adresses'),(2, 13, 'Statuts'), -(2, 14, 'Bons de réduction'),(2, 15, 'Devises'),(2, 16, 'Taxes'),(2, 17, 'Transporteurs'),(2, 18, 'Pays'),(2, 19, 'Zones'),(2, 20, 'Tranches de prix'), -(2, 21, 'Tranches de poids'),(2, 22, 'Positions'),(2, 23, 'Base de données'),(2, 24, 'Emails'),(2, 26, 'Images'),(2, 27, 'Produits'),(2, 28, 'Contacts'), -(2, 29, 'Employés'),(2, 30, 'Profils'),(2, 31, 'Permissions'),(2, 32, 'Langues'),(2, 33, 'Traductions'),(2, 34, 'Fournisseurs'),(2, 35, 'Onglets'), -(2, 36, 'Caractéristiques'),(2, 37, 'Accès rapide'),(2, 38, 'Thèmes'),(2, 39, 'Coordonnées'),(2, 40, 'Alias'),(2, 41, 'Import'),(2, 42, 'Factures'), +(2, 6, 'Stats'),(2, 7, 'Modules'),(2, 8, 'Préférences'),(2, 9, 'Outils'),(2, 10, 'Marques'),(2, 11, 'Attributs et groupes'),(2, 12, 'Adresses'),(2, 13, 'Statuts'), +(2, 14, 'Bons de réduction'),(2, 15, 'Devises'),(2, 16, 'Taxes'),(2, 17, 'Transporteurs'),(2, 18, 'Pays'),(2, 19, 'Zones'),(2, 20, 'Tranches de prix'), +(2, 21, 'Tranches de poids'),(2, 22, 'Positions'),(2, 23, 'Base de données'),(2, 24, 'Emails'),(2, 26, 'Images'),(2, 27, 'Produits'),(2, 28, 'Contacts'), +(2, 29, 'Employés'),(2, 30, 'Profils'),(2, 31, 'Permissions'),(2, 32, 'Langues'),(2, 33, 'Traductions'),(2, 34, 'Fournisseurs'),(2, 35, 'Onglets'), +(2, 36, 'Caractéristiques'),(2, 37, 'Accès rapide'),(2, 38, 'Thèmes'),(2, 39, 'Coordonnées'),(2, 40, 'Alias'),(2, 41, 'Import'),(2, 42, 'Factures'), (2, 43, 'Recherche'),(2, 44, 'Localisation'),(2, 46, 'Etats'),(2, 47, 'Retours produits'),(2, 48, 'PDF'),(2, 49, 'Avoirs'), -(2, 51, 'Configuration'),(2, 52, 'Sous domaines'),(2, 53, 'Sauvegarde BDD'),(2, 54, 'Messages prédéfinis'),(2, 55, 'Bons de livraison'), -(2, 56, 'SEO & URLs'),(2, 57, 'CMS'),(2, 58, 'Scènes'),(2, 59, 'Messages clients'),(2, 60, 'Suivi'),(2, 61, 'Moteurs de recherche'), -(2, 62, 'Sites affluents'),(2, 63, 'Groupes'),(2, 64, 'Générateurs'),(2, 65, 'Paniers'),(2, 66, 'Tags'),(2, 67, 'Recherche'), +(2, 51, 'Configuration'),(2, 52, 'Sous domaines'),(2, 53, 'Sauvegarde BDD'),(2, 54, 'Messages prédéfinis'),(2, 55, 'Bons de livraison'), +(2, 56, 'SEO & URLs'),(2, 57, 'CMS'),(2, 58, 'Scènes'),(2, 59, 'Messages clients'),(2, 60, 'Suivi'),(2, 61, 'Moteurs de recherche'), +(2, 62, 'Sites affluents'),(2, 63, 'Groupes'),(2, 64, 'Générateurs'),(2, 65, 'Paniers'),(2, 66, 'Tags'),(2, 67, 'Recherche'), (2, 68, 'Documents joints'),(2, 69, 'Informations'),(2, 70, 'Performances'),(2, 71, 'SAV'),(2, 72, 'Service web'),(2, 73, 'Mouvements de Stock'), -(2, 80, 'Catalogue de modules et thèmes'),(2, 81, 'Mon compte'),(2, 82, 'Magasins'),(2, 83, 'Thèmes'),(2, 84, 'Géolocalisation'),(2, 85, 'Règles de taxes'),(2, 86, 'Log'), -(2, 87, 'Comtés'),(2,88,'Accueil'),(2, 89, 'Mise à jour'), (2, 90, 'Boutiques'), (2, 91, 'Groupes de boutique'), (2, 92, 'URLs de boutique'); +(2, 80, 'Catalogue de modules et thèmes'),(2, 81, 'Mon compte'),(2, 82, 'Magasins'),(2, 83, 'Thèmes'),(2, 84, 'Géolocalisation'),(2, 85, 'Règles de taxes'),(2, 86, 'Log'), +(2, 87, 'Comtés'),(2,88,'Accueil'),(2, 89, 'Mise à jour'), (2, 90, 'Boutiques'), (2, 91, 'Groupes de boutique'), (2, 92, 'URLs de boutique'); INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES -(3, 1, 'Catálogo'),(3, 2, 'Clientes'),(3, 3, 'Pedidos'),(3, 4, 'Pago'),(3, 5, 'Transporte'), -(3, 6, 'Estadísticas'),(3, 7, 'Módulos'),(3, 8, 'Preferencias'),(3, 9, 'Herramientas'),(3, 10, 'Fabricantes'),(3, 11, 'Atributos y grupos'),(3, 12, 'Direcciones'), -(3, 13, 'Estados'),(3, 14, 'Vales de descuento'),(3, 15, 'Divisas'),(3, 16, 'Impuestos'),(3, 17, 'Transportistas'),(3, 18, 'Países'),(3, 19, 'Zonas'), -(3, 20, 'Franja de precios'),(3, 21, 'Franja de pesos'),(3, 22, 'Posiciones'),(3, 23, 'Base de datos'),(3, 24, 'Emails'),(3, 26, 'Imágenes'), +(3, 1, 'Catálogo'),(3, 2, 'Clientes'),(3, 3, 'Pedidos'),(3, 4, 'Pago'),(3, 5, 'Transporte'), +(3, 6, 'Estadísticas'),(3, 7, 'Módulos'),(3, 8, 'Preferencias'),(3, 9, 'Herramientas'),(3, 10, 'Fabricantes'),(3, 11, 'Atributos y grupos'),(3, 12, 'Direcciones'), +(3, 13, 'Estados'),(3, 14, 'Vales de descuento'),(3, 15, 'Divisas'),(3, 16, 'Impuestos'),(3, 17, 'Transportistas'),(3, 18, 'Países'),(3, 19, 'Zonas'), +(3, 20, 'Franja de precios'),(3, 21, 'Franja de pesos'),(3, 22, 'Posiciones'),(3, 23, 'Base de datos'),(3, 24, 'Emails'),(3, 26, 'Imágenes'), (3, 27, 'Productos'),(3, 28, 'Contactos'),(3, 29, 'Empleados'),(3, 30, 'Perfiles'),(3, 31, 'Permisos'),(3, 32, 'Idiomas'),(3, 33, 'Traducciones'), -(3, 34, 'Proveedores'),(3, 35, 'Pestañas'),(3, 36, 'Características'),(3, 37, 'Acceso rápido'),(3, 38, 'Temas'),(3, 39, 'Datos'),(3, 40, 'Alias'), -(3, 41, 'Importar'),(3, 42, 'Facturas'),(3, 43, 'Búsqueda'),(3, 44, 'Ubicación'),(3, 46, 'Estados'),(3, 47, 'Devolución productos'),(3, 48, 'PDF'), -(3, 49, 'Vales'),(3, 51, 'Configuración'),(3, 52, 'Subcampos'),(3, 53, 'Copia de seguridad'),(3, 54, 'Mensajes de Orden'), +(3, 34, 'Proveedores'),(3, 35, 'Pestañas'),(3, 36, 'Características'),(3, 37, 'Acceso rápido'),(3, 38, 'Temas'),(3, 39, 'Datos'),(3, 40, 'Alias'), +(3, 41, 'Importar'),(3, 42, 'Facturas'),(3, 43, 'Búsqueda'),(3, 44, 'Ubicación'),(3, 46, 'Estados'),(3, 47, 'Devolución productos'),(3, 48, 'PDF'), +(3, 49, 'Vales'),(3, 51, 'Configuración'),(3, 52, 'Subcampos'),(3, 53, 'Copia de seguridad'),(3, 54, 'Mensajes de Orden'), (3, 55, 'Albaranes de entrega'),(3, 56, 'SEO & URLs'),(3, 57, 'CMS'),(3, 58, 'Mapeo de la imagen'),(3, 59, 'Mensajes del cliente'),(3, 60, 'Rastreo'), -(3, 61, 'Motores de búsqueda'),(3, 62, 'Referido'),(3, 63, 'Grupos'),(3, 64, 'Generadores'),(3, 65, 'Carritos'),(3, 66, 'Etiquetas'),(3, 67, 'Búsqueda'),(3, 68, 'Adjuntos'), -(3, 69, 'Informaciones'),(3, 70, 'Rendimiento'),(3, 72, 'Web service'),(3, 71, 'Servicio al cliente'),(3, 73, 'Movimiento de Stock'), (3, 82, 'Tiendas'),(3, 83, 'Temas'),(3, 84, 'Geolocalización'),(3, 85, 'Reglas de Impuestos'),(3, 86, 'Log'), +(3, 61, 'Motores de búsqueda'),(3, 62, 'Referido'),(3, 63, 'Grupos'),(3, 64, 'Generadores'),(3, 65, 'Carritos'),(3, 66, 'Etiquetas'),(3, 67, 'Búsqueda'),(3, 68, 'Adjuntos'), +(3, 69, 'Informaciones'),(3, 70, 'Rendimiento'),(3, 72, 'Web service'),(3, 71, 'Servicio al cliente'),(3, 73, 'Movimiento de Stock'), (3, 82, 'Tiendas'),(3, 83, 'Temas'),(3, 84, 'Geolocalización'),(3, 85, 'Reglas de Impuestos'),(3, 86, 'Log'), (3, 87, 'Condados'),(3,88,'Home'),(3, 89, 'Mejorar'), (3, 90, 'Shops'), (3, 91, 'Group Shops'), (3, 92, 'Shop Urls'); INSERT INTO `PREFIX_tab_lang` (`id_lang`, `id_tab`, `name`) VALUES (4, 1, 'Katalog'),(4, 2, 'Kunden'),(4, 3, 'Bestellungen'),(4, 4, 'Zahlung'), (4, 5, 'Versandkosten'),(4, 6, 'Statistik'),(4, 7, 'Module'),(4, 8, 'Voreinstellungen'),(4, 9, 'Tools'),(4, 10, 'Hersteller'),(4, 11, 'Attribute und Gruppen'), -(4, 12, 'Adressen'),(4, 13, 'Status'),(4, 14, 'Gutscheine'),(4, 15, 'Währungen'),(4, 16, 'Steuern'),(4, 17, 'Lieferanten'),(4, 18, 'Länder'), +(4, 12, 'Adressen'),(4, 13, 'Status'),(4, 14, 'Gutscheine'),(4, 15, 'Währungen'),(4, 16, 'Steuern'),(4, 17, 'Lieferanten'),(4, 18, 'Länder'), (4, 19, 'Zonen'),(4, 20, 'Preislagen'),(4, 21, 'Gewichtsklassen'),(4, 22, 'Positionen'),(4, 23, 'Datenbank'),(4, 24, 'E-Mail'),(4, 26, 'Bild'), -(4, 27, 'Produkte'),(4, 28, 'Kontakte'),(4, 29, 'Mitarbeiter'),(4, 30, 'Profile'),(4, 31, 'Berechtigungen'),(4, 32, 'Sprachen'),(4, 33, 'Übersetzungen'), +(4, 27, 'Produkte'),(4, 28, 'Kontakte'),(4, 29, 'Mitarbeiter'),(4, 30, 'Profile'),(4, 31, 'Berechtigungen'),(4, 32, 'Sprachen'),(4, 33, 'Übersetzungen'), (4, 34, 'Zulieferer'),(4, 35, 'Tabs'),(4, 36, 'Funktionen'),(4, 37, 'Schnellzugriff'),(4, 38, 'Themen'),(4, 39, 'Kontaktinformation'),(4, 40, 'Alias'), -(4, 41, 'Import'),(4, 42, 'Rechnungen'),(4, 43, 'Suche'),(4, 44, 'Lokalisierung'),(4, 46, 'Staaten'),(4, 47, 'Warenrücksendungen'),(4, 48, 'PDF'), +(4, 41, 'Import'),(4, 42, 'Rechnungen'),(4, 43, 'Suche'),(4, 44, 'Lokalisierung'),(4, 46, 'Staaten'),(4, 47, 'Warenrücksendungen'),(4, 48, 'PDF'), (4, 49, 'Gutscheine'),(4, 51, 'Einstellungen'),(4, 52, 'Subdomains'),(4, 53, 'DB-Backup'),(4, 54, 'Bestellnachrichten'), (4, 55, 'Lieferscheine'),(4, 56, 'SEO & URLs'),(4, 57, 'CMS'),(4, 58, 'Image Mapping'),(4, 59, 'Kundennachrichten'),(4, 60, 'Tracking'), -(4, 61, 'Suchmaschinen'),(4, 62, 'Referrer'),(4, 63, 'Gruppen'),(4, 64, 'Generatoren'),(4, 65, 'Warenkörbe'),(4, 66, 'Tags'),(4, 67, 'Suche'), -(4, 68, 'Anhänge'),(4, 69, 'Konfigurationsinformationen'),(4, 70, 'Leistung'),(4, 71, 'Kundenservice'),(4, 72, 'Webservice'),(4, 73, 'Lagerbewegungen'), +(4, 61, 'Suchmaschinen'),(4, 62, 'Referrer'),(4, 63, 'Gruppen'),(4, 64, 'Generatoren'),(4, 65, 'Warenkörbe'),(4, 66, 'Tags'),(4, 67, 'Suche'), +(4, 68, 'Anhänge'),(4, 69, 'Konfigurationsinformationen'),(4, 70, 'Leistung'),(4, 71, 'Kundenservice'),(4, 72, 'Webservice'),(4, 73, 'Lagerbewegungen'), (4, 80, 'Module und Themenkatalog'),(4, 81, 'Mein Konto'),(4, 82, 'Shops'),(4, 83, 'Themen'),(4, 84, 'Geotargeting'),(4, 85, 'Steuerregeln'),(4, 86, 'Log'), (4,87,'Counties'),(4,88,'Home'),(4, 89, 'Upgrade'), (4, 90, 'Shops'), (4, 91, 'Group Shops'), (4, 92, 'Shop Urls'); @@ -912,17 +919,17 @@ INSERT INTO `PREFIX_quick_access` (`id_quick_access`, `link`, `new_window`) VALU INSERT INTO `PREFIX_quick_access_lang` (`id_quick_access`, `id_lang`, `name`) VALUES (1, 1, 'Home'),(1, 2, 'Accueil'),(1, 3, 'Inicio'),(1, 4, 'Start'),(1, 5, 'Home page'), (2, 1, 'My Shop'),(2, 2, 'Ma boutique'),(2, 3, 'Mi tienda'),(2, 4, 'Mein Shop'),(2, 5, 'Il mio negozio'), -(3, 1, 'New category'),(3, 2, 'Nouvelle catégorie'),(3, 3, 'Nueva categoría'),(3, 4, 'Neue Kategorie'),(3, 5, 'Nuova categoria'), +(3, 1, 'New category'),(3, 2, 'Nouvelle catégorie'),(3, 3, 'Nueva categoría'),(3, 4, 'Neue Kategorie'),(3, 5, 'Nuova categoria'), (4, 1, 'New product'),(4, 2, 'Nouveau produit'),(4, 3, 'Nuevo producto'),(4, 4, 'Neues Produkt'),(4, 5, 'Nuovo prodotto'), -(5, 1, 'New voucher'),(5, 2, 'Nouveau bon de réduction'),(5, 3, 'Nuevo cupón'),(5, 4, 'Neuer Ermäßigungsgutschein'),(5, 5, 'Nuovo buono sconto'); +(5, 1, 'New voucher'),(5, 2, 'Nouveau bon de réduction'),(5, 3, 'Nuevo cupón'),(5, 4, 'Neuer Ermäßigungsgutschein'),(5, 5, 'Nuovo buono sconto'); INSERT INTO `PREFIX_order_return_state` (`id_order_return_state`, `color`) VALUES (1, '#ADD8E6'),(2, '#EEDDFF'),(3, '#DDFFAA'),(4, '#FFD3D3'),(5, '#FFFFBB'); INSERT INTO `PREFIX_order_return_state_lang` (`id_order_return_state`, `id_lang`, `name`) VALUES (1, 1, 'Waiting for confirmation'),(2, 1, 'Waiting for package'),(3, 1, 'Package received'),(4, 1, 'Return denied'),(5, 1, 'Return completed'), -(1, 2, 'En attente de confirmation'),(2, 2, 'En attente du colis'),(3, 2, 'Colis reçu'),(4, 2, 'Retour refusé'),(5, 2, 'Retour terminé'), -(1, 3, 'Pendiente de confirmación'),(2, 3, 'En espera de paquetes'),(3, 3, 'Paquetes recibidos'),(4, 3, 'Volver negó'),(5, 3, 'Diligenciados'), -(1, 4, 'Bestätigung wird erwartet'),(2, 4, 'Paket wird erwartet'),(3, 4, 'Paket erhalten'),(4, 4, 'Rücksendung abgelehnt'),(5, 4, 'Rücksendung beendet'), +(1, 2, 'En attente de confirmation'),(2, 2, 'En attente du colis'),(3, 2, 'Colis reçu'),(4, 2, 'Retour refusé'),(5, 2, 'Retour terminé'), +(1, 3, 'Pendiente de confirmación'),(2, 3, 'En espera de paquetes'),(3, 3, 'Paquetes recibidos'),(4, 3, 'Volver negó'),(5, 3, 'Diligenciados'), +(1, 4, 'Bestätigung wird erwartet'),(2, 4, 'Paket wird erwartet'),(3, 4, 'Paket erhalten'),(4, 4, 'Rücksendung abgelehnt'),(5, 4, 'Rücksendung beendet'), (1, 5, 'In attesa di conferma'),(2, 5, 'In attesa del pacco'),(3, 5, 'Pacco ricevuto'),(4, 5, 'Restituzione non accettata'),(5, 5, 'Restituzione terminata'); INSERT INTO `PREFIX_meta` (`id_meta`, `page`) VALUES @@ -955,15 +962,15 @@ INSERT INTO `PREFIX_meta` (`id_meta`, `page`) VALUES INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_shop`, `id_lang`, `title`, `description`, `keywords`, `url_rewrite`) VALUES (1, 1, 1, '404 error', 'This page cannot be found', 'error, 404, not found', 'page-not-found'), (1, 1, 2, 'Erreur 404', 'Cette page est introuvable', 'erreur, 404, introuvable', 'page-non-trouvee'), -(1, 1, 3, 'Error 404', 'Esta página no se encuentra', 'error, 404, No se ha encontrado', 'pagina-no-encuentra'), +(1, 1, 3, 'Error 404', 'Esta página no se encuentra', 'error, 404, No se ha encontrado', 'pagina-no-encuentra'), (2, 1, 1, 'Best sales', 'Our best sales', 'best sales', 'best-sales'), (2, 1, 2, 'Meilleures ventes', 'Liste de nos produits les mieux vendus', 'meilleures ventes', 'meilleures-ventes'), -(2, 1, 3, 'Los más vendidos', 'Lista de los de mayor venta de productos', 'los más vendidos', 'mas-vendidos'), +(2, 1, 3, 'Los más vendidos', 'Lista de los de mayor venta de productos', 'los más vendidos', 'mas-vendidos'), (3, 1, 1, 'Contact us', 'Use our form to contact us', 'contact, form, e-mail', 'contact-us'), (3, 1, 2, 'Contactez-nous', 'Utilisez notre formulaire pour nous contacter', 'contact, formulaire, e-mail', 'contactez-nous'), -(3, 1, 3, 'Contáctenos', 'Use nuestro formulario de contacto con nosotros', 'formulario de contacto, e-mail', 'contactenos'), +(3, 1, 3, 'Contáctenos', 'Use nuestro formulario de contacto con nosotros', 'formulario de contacto, e-mail', 'contactenos'), (4, 1, 1, '', 'Shop powered by PrestaShop', 'shop, prestashop', ''), -(4, 1, 2, '', 'Boutique propulsée par PrestaShop', 'boutique, prestashop', ''), +(4, 1, 2, '', 'Boutique propulsée par PrestaShop', 'boutique, prestashop', ''), (4, 1, 3, '', 'Shop powered by PrestaShop', 'tienda, prestashop', ''), (5, 1, 1, 'Manufacturers', 'Manufacturers list', 'manufacturer', 'manufacturers'), (5, 1, 2, 'Fabricants', 'Liste de nos fabricants', 'fabricants', 'fabricants'), @@ -972,44 +979,44 @@ INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_shop`, `id_lang`, `title`, `descr (6, 1, 2, 'Nouveaux produits', 'Liste de nos nouveaux produits', 'nouveau, produit', 'nouveaux-produits'), (6, 1, 3, 'Nuevos Productos', 'Lista de nuestros nuevos productos', 'nuevo, productos', 'nuevos-productos'), (7, 1, 1, 'Forgot your password', 'Enter your e-mail address used to register in goal to get e-mail with your new password', 'forgot, password, e-mail, new, reset', 'password-recovery'), -(7, 1, 2, 'Mot de passe oublié', 'Renseignez votre adresse e-mail afin de recevoir votre nouveau mot de passe.', 'mot de passe, oublié, e-mail, nouveau, regénération', 'mot-de-passe-oublie'), -(7, 1, 3, 'Olvidaste tu contraseña', 'Ingrese su dirección de correo electrónico para recibir su nueva contraseña.', 'contraseña, has olvidado, e-mail, nuevo, regeneración', 'contrasena-olvidado'), +(7, 1, 2, 'Mot de passe oublié', 'Renseignez votre adresse e-mail afin de recevoir votre nouveau mot de passe.', 'mot de passe, oublié, e-mail, nouveau, regénération', 'mot-de-passe-oublie'), +(7, 1, 3, 'Olvidaste tu contraseña', 'Ingrese su dirección de correo electrónico para recibir su nueva contraseña.', 'contraseña, has olvidado, e-mail, nuevo, regeneración', 'contrasena-olvidado'), (8, 1, 1, 'Prices drop', 'Our special products', 'special, prices drop', 'prices-drop'), -(8, 1, 2, 'Promotions', 'Nos produits en promotion', 'promotion, réduction', 'promotions'), -(8, 1, 3, 'Promociones', 'Nuestros productos promocionales', 'promoción, reducción', 'promocion'), +(8, 1, 2, 'Promotions', 'Nos produits en promotion', 'promotion, réduction', 'promotions'), +(8, 1, 3, 'Promociones', 'Nuestros productos promocionales', 'promoción, reducción', 'promocion'), (9, 1, 1, 'Sitemap', 'Lost ? Find what your are looking for', 'sitemap', 'sitemap'), (9, 1, 2, 'Plan du site', 'Perdu ? Trouvez ce que vous cherchez', 'plan, site', 'plan-du-site'), -(9, 1, 3, 'Mapa del sitio', '¿Perdido? Encuentra lo que buscas', 'plan, sitio', 'mapa-del-sitio'), +(9, 1, 3, 'Mapa del sitio', '¿Perdido? Encuentra lo que buscas', 'plan, sitio', 'mapa-del-sitio'), (10, 1, 1, 'Suppliers', 'Suppliers list', 'supplier', 'supplier'), (10, 1, 2, 'Fournisseurs', 'Liste de nos fournisseurs', 'fournisseurs', 'fournisseurs'), (10, 1, 3, 'Proveedores', 'Lista de Proveedores', 'proveedores', 'proveedores'), (11, 1, 1, 'Address', '', '', 'address'), (11, 1, 2, 'Adresse', '', '', 'adresse'), -(11, 1, 3, 'Dirección', '', '', 'direccion'), +(11, 1, 3, 'Dirección', '', '', 'direccion'), (12, 1, 1, 'Addresses', '', '', 'addresses'), (12, 1, 2, 'Adresses', '', '', 'adresses'), (12, 1, 3, 'Direcciones', '', '', 'direcciones'), (13, 1, 1, 'Authentication', '', '', 'authentication'), (13, 1, 2, 'Authentification', '', '', 'authentification'), -(13, 1, 3, 'Autenticación', '', '', 'autenticacion'), +(13, 1, 3, 'Autenticación', '', '', 'autenticacion'), (14, 1, 1, 'Cart', '', '', 'cart'), (14, 1, 2, 'Panier', '', '', 'panier'), (14, 1, 3, 'Carro de la compra', '', '', 'carro-de-la-compra'), (15, 1, 1, 'Discount', '', '', 'discount'), -(15, 1, 2, 'Bons de réduction', '', '', 'bons-de-reduction'), +(15, 1, 2, 'Bons de réduction', '', '', 'bons-de-reduction'), (15, 1, 3, 'Descuento', '', '', 'descuento'), (16, 1, 1, 'Order history', '', '', 'order-history'), (16, 1, 2, 'Historique des commandes', '', '', 'historique-des-commandes'), (16, 1, 3, 'Historial de pedidos', '', '', 'historial-de-pedidos'), (17, 1, 1, 'Identity', '', '', 'identity'), -(17, 1, 2, 'Identité', '', '', 'identite'), +(17, 1, 2, 'Identité', '', '', 'identite'), (17, 1, 3, 'Identidad', '', '', 'identidad'), (18, 1, 1, 'My account', '', '', 'my-account'), (18, 1, 2, 'Mon compte', '', '', 'mon-compte'), (18, 1, 3, 'Mi Cuenta', '', '', 'mi-cuenta'), (19, 1, 1, 'Order follow', '', '', 'order-follow'), -(19, 1, 2, 'Détails de la commande', '', '', 'details-de-la-commande'), -(19, 1, 3, 'Devolución de productos', '', '', 'devolucion-de-productos'), +(19, 1, 2, 'Détails de la commande', '', '', 'details-de-la-commande'), +(19, 1, 3, 'Devolución de productos', '', '', 'devolucion-de-productos'), (20, 1, 1, 'Order slip', '', '', 'order-slip'), (20, 1, 2, 'Avoirs', '', '', 'avoirs'), (20, 1, 3, 'Vales', '', '', 'vales'), @@ -1026,7 +1033,7 @@ INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_shop`, `id_lang`, `title`, `descr (24, 1, 2, 'Commande', '', '', 'commande-rapide'), (24, 1, 3, 'Carrito', '', '', 'pedido-rapido'), (25, 1, 1, 'Guest tracking', '', '', 'guest-tracking'), -(25, 1, 2, 'Suivi de commande invité', '', '', 'suivi-commande-invite'), +(25, 1, 2, 'Suivi de commande invité', '', '', 'suivi-commande-invite'), (25, 1, 3, 'Estado del pedido', '', '', 'estado-pedido'), (1, 1, 4, 'Fehler 404', 'Seite wurde nicht gefunden', 'Fehler 404, nicht gefunden', 'seite-nicht-gefunden'), (2, 1, 4, 'Verkaufshits', 'Unsere Verkaufshits', 'Verkaufshits', 'verkaufshits'), @@ -1069,7 +1076,7 @@ INSERT INTO `PREFIX_meta_lang` (`id_meta`, `id_shop`, `id_lang`, `title`, `descr (14, 1, 5, 'Carrello', '', '', 'carrello'), (15, 1, 5, 'Sconto', '', '', 'sconto'), (16, 1, 5, 'Storico ordine', '', '', 'storico-ordine'), -(17, 1, 5, 'Identità', '', '', 'identita'), +(17, 1, 5, 'Identità', '', '', 'identita'), (18, 1, 5, 'Il mio account', '', '', 'il-mio-account'), (19, 1, 5, 'Seguito ordine', '', '', 'seguito-ordine'), (20, 1, 5, 'Nota di ordine', '', '', 'nota-di-ordine'), @@ -1100,27 +1107,27 @@ INSERT INTO `PREFIX_cms` (`id_cms`, `id_cms_category`, `position`, `active`) VAL INSERT INTO `PREFIX_cms_shop` (`id_cms`, `id_shop`) VALUES (1,1), (2,1), (3,1), (4,1), (5,1); INSERT INTO `PREFIX_cms_lang` (`id_cms`, `id_lang`, `meta_title`, `meta_description`, `meta_keywords`, `content`, `link_rewrite`) VALUES (1, 1, 'Delivery', 'Our terms and conditions of delivery', 'conditions, delivery, delay, shipment, pack', '

    Shipments and returns

    Your pack shipment

    Packages are generally dispatched within 2 days after receipt of payment and are shipped via UPS with tracking and drop-off without signature. If you prefer delivery by UPS Extra with required signature, an additional cost will be applied, so please contact us before choosing this method. Whichever shipment choice you make, we will provide you with a link to track your package online.

    Shipping fees include handling and packing fees as well as postage costs. Handling fees are fixed, whereas transport fees vary according to total weight of the shipment. We advise you to group your items in one order. We cannot group two distinct orders placed separately, and shipping fees will apply to each of them. Your package will be dispatched at your own risk, but special care is taken to protect fragile objects.

    Boxes are amply sized and your items are well-protected.

    ', 'delivery'), -(1, 2, 'Livraison', 'Nos conditions générales de livraison', 'conditions, livraison, délais, transport, colis', '

    Livraisons et retours

    Le transport de votre colis

    Les colis sont généralement expédiés en 48h après réception de votre paiement. Le mode d''expédition standard est le Colissimo suivi, remis sans signature. Si vous souhaitez une remise avec signature, un coût supplémentaire s''applique, merci de nous contacter. Quel que soit le mode d''expédition choisi, nous vous fournirons dès que possible un lien qui vous permettra de suivre en ligne la livraison de votre colis.

    Les frais d''expédition comprennent l''emballage, la manutention et les frais postaux. Ils peuvent contenir une partie fixe et une partie variable en fonction du prix ou du poids de votre commande. Nous vous conseillons de regrouper vos achats en une unique commande. Nous ne pouvons pas grouper deux commandes distinctes et vous devrez vous acquitter des frais de port pour chacune d''entre elles. Votre colis est expédié à vos propres risques, un soin particulier est apporté au colis contenant des produits fragiles..

    Les colis sont surdimensionnés et protégés.

    ', 'livraison'), +(1, 2, 'Livraison', 'Nos conditions générales de livraison', 'conditions, livraison, délais, transport, colis', '

    Livraisons et retours

    Le transport de votre colis

    Les colis sont généralement expédiés en 48h après réception de votre paiement. Le mode d''expédition standard est le Colissimo suivi, remis sans signature. Si vous souhaitez une remise avec signature, un coût supplémentaire s''applique, merci de nous contacter. Quel que soit le mode d''expédition choisi, nous vous fournirons dès que possible un lien qui vous permettra de suivre en ligne la livraison de votre colis.

    Les frais d''expédition comprennent l''emballage, la manutention et les frais postaux. Ils peuvent contenir une partie fixe et une partie variable en fonction du prix ou du poids de votre commande. Nous vous conseillons de regrouper vos achats en une unique commande. Nous ne pouvons pas grouper deux commandes distinctes et vous devrez vous acquitter des frais de port pour chacune d''entre elles. Votre colis est expédié à vos propres risques, un soin particulier est apporté au colis contenant des produits fragiles..

    Les colis sont surdimensionnés et protégés.

    ', 'livraison'), (2, 1, 'Legal Notice', 'Legal notice', 'notice, legal, credits', '

    Legal

    Credits

    Concept and production:

    This Web site was created using PrestaShop™ open-source software.

    ', 'legal-notice'), -(2, 2, 'Mentions légales', 'Mentions légales', 'mentions, légales, crédits', '

    Mentions légales

    Crédits

    Concept et production :

    Ce site internet a été réalisé en utilisant la solution open-source PrestaShop™ .

    ', 'mentions-legales'), +(2, 2, 'Mentions légales', 'Mentions légales', 'mentions, légales, crédits', '

    Mentions légales

    Crédits

    Concept et production :

    Ce site internet a été réalisé en utilisant la solution open-source PrestaShop™ .

    ', 'mentions-legales'), (3, 1, 'Terms and conditions of use', 'Our terms and conditions of use', 'conditions, terms, use, sell', '

    Your terms and conditions of use

    Rule 1

    Here is the rule 1 content

    \r\n

    Rule 2

    Here is the rule 2 content

    \r\n

    Rule 3

    Here is the rule 3 content

    ', 'terms-and-conditions-of-use'), -(3, 2, 'Conditions d''utilisation', 'Nos conditions générales de ventes', 'conditions, utilisation, générales, ventes', '

    Vos conditions de ventes

    Règle n°1

    Contenu de la règle numéro 1

    \r\n

    Règle n°2

    Contenu de la règle numéro 2

    \r\n

    Règle n°3

    Contenu de la règle numéro 3

    ', 'conditions-generales-de-ventes'), +(3, 2, 'Conditions d''utilisation', 'Nos conditions générales de ventes', 'conditions, utilisation, générales, ventes', '

    Vos conditions de ventes

    Règle n°1

    Contenu de la règle numéro 1

    \r\n

    Règle n°2

    Contenu de la règle numéro 2

    \r\n

    Règle n°3

    Contenu de la règle numéro 3

    ', 'conditions-generales-de-ventes'), (4, 1, 'About us', 'Learn more about us', 'about us, informations', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'about-us'), -(4, 2, 'A propos', 'Apprenez-en d''avantage sur nous', 'à propos, informations', '

    A propos

    \r\n

    Notre entreprise

    Notre entreprise

    \r\n

    Notre équipe

    Notre équipe

    \r\n

    Informations

    Informations

    ', 'a-propos'), +(4, 2, 'A propos', 'Apprenez-en d''avantage sur nous', 'à propos, informations', '

    A propos

    \r\n

    Notre entreprise

    Notre entreprise

    \r\n

    Notre équipe

    Notre équipe

    \r\n

    Informations

    Informations

    ', 'a-propos'), (5, 1, 'Secure payment', 'Our secure payment mean', 'secure payment, ssl, visa, mastercard, paypal', '

    Secure payment

    \r\n

    Our secure payment

    With SSL

    \r\n

    Using Visa/Mastercard/Paypal

    About this services

    ', 'secure-payment'), -(5, 2, 'Paiement sécurisé', 'Notre offre de paiement sécurisé', 'paiement sécurisé, ssl, visa, mastercard, paypal', '

    Paiement sécurisé

    \r\n

    Notre offre de paiement sécurisé

    Avec SSL

    \r\n

    Utilisation de Visa/Mastercard/Paypal

    A propos de ces services

    ', 'paiement-securise'), -(1, 3, 'Entrega', 'Nuestras condiciones de entrega', 'condiciones, plazos de entrega, transporte, paquetería', '

    shipping & Returns

    \r\n

    El transporte de su paquete

    \r\n

    Los paquetes son generalmente enviados en 48 horas después de la recepción de su pago. La moda es el estándar expédition Colissimo seguido, entrega sin firma. Si desea una entrega con la firma, un cargo adicional, gracias al contacto con nosotros. Sea cual sea el método de envío seleccionado, vamos a presentar lo antes posible, un vínculo que le permite rastrear el envío en línea de su paquete.

    Gastos de envío incluyen el embalaje, la manipulación y envío. Pueden contener un fijo y una parte variable basado en el precio o el peso de su solicitud. Le recomendamos que para consolidar sus compras en un solo comando. No podemos grupo de dos órdenes distintos y hay que pagar gastos de envío para cada uno. Su paquete es enviado a su propio riesgo, se presta especial atención a las parcelas que contienen objetos frágiles ..

    Los paquetes son de gran tamaño y protegidas.

    ', 'entrega'), -(2, 3, 'Aviso legal', 'Aviso legal', 'términos, condiciones y créditos fotográficos', '

    Pie de imprenta

    \r\n

    Créditos

    \r\n

    \r\n


    Concepto y producción:

    Este sitio web fue creado utilizando la solución de código abierto PrestaShop™.

    ', 'aviso-legal'), -(3, 3, 'Condiciones de uso', 'Condiciones de uso', 'condiciones, el consumo, las ventas generales', '

    Sus condiciones de venta

    \r\n

    Regla N º 1

    \r\n

    Contenido de la Regla Número 1

    \r\n

    Regla N º 2

    \r\n

    Contenido de la Regla N º 2

    \r\n

    Regla N º 3

    \r\n

    Contenido de la Regla Número 3

    ', 'condiciones-de-uso'), -(4, 3, 'Sobre', 'Conozca más sobre nosotros', 'sobre, información', '

    Sobre

    ', 'sobre'), -(5, 3, 'Pago seguro', 'Ofrecemos pago seguro', 'pago seguro, ssl, visa, mastercard, paypal', '

    Pago seguro

    \r\n

    Ofrecemos pago seguro

    \r\n

    SSL

    \r\n

    Utilice Visa / Mastercard / Paypal

    \r\n

    Acerca de estos servicios

    ', 'pago-seguro'), -(1, 4, 'Lieferung', 'Unsere Lieferbedingungen', 'Bedingungen, Lieferung, Frist, Versand, Verpackung', '

    Versand und Rücknahme

    Ihre Versandverpackung

    Pakete werden normalerweise 2 Tage nach Zahlungseingang mit UPS mit Bestellverfolgemöglichkeit und Ablieferung ohne Unterschrift geliefert. Wenn Sie lieber eine UPS-Sendung per Einschreiben erhalten möchten, entstehen zusätzliche Kosten. Bitte kontaktieren Sie uns, bevor Sie dieses Liefermethode wählen. Wir senden Ihnen einen Link für die Bestellverfolgung unabhängig davon, welche Liefermethode Sie wählen.

    Die Versandkosten beinhalten Lade- und Verpackungsgebühren sowie die Portokosten. Die Verladegebühren stehen fest, wobei Transportkosten schwanken, je nach Gesamtgewicht des Pakets. Wir raten Ihnen, mehrere Artikel in einer Bestellung zusammenzufassen. Wir können zwei verschiedene Bestellungen nicht zusammenlegen, und die Versandkosten werden separat für jede Bestellung gerechnet. Ihr Paket wird auf Ihr Risiko versandt, aber zerbrechliche Ware wird besonders sorgsam behandelt.

    Die Versandschachteln sind weit geschnitten und ihre Ware wird gut geschützt verpackt.

    ', 'Lieferung'), +(5, 2, 'Paiement sécurisé', 'Notre offre de paiement sécurisé', 'paiement sécurisé, ssl, visa, mastercard, paypal', '

    Paiement sécurisé

    \r\n

    Notre offre de paiement sécurisé

    Avec SSL

    \r\n

    Utilisation de Visa/Mastercard/Paypal

    A propos de ces services

    ', 'paiement-securise'), +(1, 3, 'Entrega', 'Nuestras condiciones de entrega', 'condiciones, plazos de entrega, transporte, paquetería', '

    shipping & Returns

    \r\n

    El transporte de su paquete

    \r\n

    Los paquetes son generalmente enviados en 48 horas después de la recepción de su pago. La moda es el estándar expédition Colissimo seguido, entrega sin firma. Si desea una entrega con la firma, un cargo adicional, gracias al contacto con nosotros. Sea cual sea el método de envío seleccionado, vamos a presentar lo antes posible, un vínculo que le permite rastrear el envío en línea de su paquete.

    Gastos de envío incluyen el embalaje, la manipulación y envío. Pueden contener un fijo y una parte variable basado en el precio o el peso de su solicitud. Le recomendamos que para consolidar sus compras en un solo comando. No podemos grupo de dos órdenes distintos y hay que pagar gastos de envío para cada uno. Su paquete es enviado a su propio riesgo, se presta especial atención a las parcelas que contienen objetos frágiles ..

    Los paquetes son de gran tamaño y protegidas.

    ', 'entrega'), +(2, 3, 'Aviso legal', 'Aviso legal', 'términos, condiciones y créditos fotográficos', '

    Pie de imprenta

    \r\n

    Créditos

    \r\n

    \r\n


    Concepto y producción:

    Este sitio web fue creado utilizando la solución de código abierto PrestaShop™.

    ', 'aviso-legal'), +(3, 3, 'Condiciones de uso', 'Condiciones de uso', 'condiciones, el consumo, las ventas generales', '

    Sus condiciones de venta

    \r\n

    Regla N º 1

    \r\n

    Contenido de la Regla Número 1

    \r\n

    Regla N º 2

    \r\n

    Contenido de la Regla N º 2

    \r\n

    Regla N º 3

    \r\n

    Contenido de la Regla Número 3

    ', 'condiciones-de-uso'), +(4, 3, 'Sobre', 'Conozca más sobre nosotros', 'sobre, información', '

    Sobre

    ', 'sobre'), +(5, 3, 'Pago seguro', 'Ofrecemos pago seguro', 'pago seguro, ssl, visa, mastercard, paypal', '

    Pago seguro

    \r\n

    Ofrecemos pago seguro

    \r\n

    SSL

    \r\n

    Utilice Visa / Mastercard / Paypal

    \r\n

    Acerca de estos servicios

    ', 'pago-seguro'), +(1, 4, 'Lieferung', 'Unsere Lieferbedingungen', 'Bedingungen, Lieferung, Frist, Versand, Verpackung', '

    Versand und Rücknahme

    Ihre Versandverpackung

    Pakete werden normalerweise 2 Tage nach Zahlungseingang mit UPS mit Bestellverfolgemöglichkeit und Ablieferung ohne Unterschrift geliefert. Wenn Sie lieber eine UPS-Sendung per Einschreiben erhalten möchten, entstehen zusätzliche Kosten. Bitte kontaktieren Sie uns, bevor Sie dieses Liefermethode wählen. Wir senden Ihnen einen Link für die Bestellverfolgung unabhängig davon, welche Liefermethode Sie wählen.

    Die Versandkosten beinhalten Lade- und Verpackungsgebühren sowie die Portokosten. Die Verladegebühren stehen fest, wobei Transportkosten schwanken, je nach Gesamtgewicht des Pakets. Wir raten Ihnen, mehrere Artikel in einer Bestellung zusammenzufassen. Wir können zwei verschiedene Bestellungen nicht zusammenlegen, und die Versandkosten werden separat für jede Bestellung gerechnet. Ihr Paket wird auf Ihr Risiko versandt, aber zerbrechliche Ware wird besonders sorgsam behandelt.

    Die Versandschachteln sind weit geschnitten und ihre Ware wird gut geschützt verpackt.

    ', 'Lieferung'), (2, 4, 'Rechtliche Hinweise', 'Rechtliche Hinweise', 'Hinweise, rechtlich, Gutscheine', '

    Legal

    Credits

    Konzept und Gestaltung:

    Diese Webseite wurde hergestellt unter Verwendung von PrestaShop™ open-source software.

    ', 'rechtliche-hinweise'), (3, 4, 'Allgemeine Nutzungsbedingungen', 'Unsere allgemeinen Nutzungsbedingungen', 'Voraussetzungen, Bedingungen, nutzen, verkaufen', '

    Your terms and conditions of use

    Rule 1

    Here is the rule 1 content

    \r\n

    Rule 2

    Here is the rule 2 content

    \r\n

    Rule 3

    Here is the rule 3 content

    ', 'allgemeine-nutzungsbedingungen'), -(4, 4, 'Über uns', 'Learn more about us', 'über uns, Informationen', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'uber-uns'), +(4, 4, 'Über uns', 'Learn more about us', 'über uns, Informationen', '

    About us

    \r\n

    Our company

    Our company

    \r\n

    Our team

    Our team

    \r\n

    Informations

    Informations

    ', 'uber-uns'), (5, 4, 'Sichere Zahlung', 'Unsere Sicherheits-Zahlungsmethoden', 'Sichere Zahlung, SSL, Visa, MasterCard, PayPal', '

    Secure payment

    \r\n

    Our secure payment

    With SSL

    \r\n

    Using Visa/Mastercard/Paypal

    About this services

    ', 'sichere-zahlung'), -(1, 5, 'Consegna', 'I nostri termini e condizioni di consegna', 'condizioni, consegna, tempo, spedizione, pacco', '

    Spedizioni e resi

    Spedizione del tuo pacco

    I pacchi sono solitamente spediti entro 2 giorni dopo il ricevimento del pagamento e inviati tramite UPS con controllo e consegna senza firma. Se preferisci una consegna con UPS Extra con richiesta di firma, sarà applicato un costo aggiuntivo, pertanto contattaci prima di scegliere questo mezzo. Qualunque tipo di spedizione tu scelga, ti garantiremo un link per controllare online il percorso del tuo pacco.

    Le spese di spedizione comprendono le spese di imballaggio e affrancatura. Le spese di imballaggio sono fisse, mentre quelle di trasporto variano in base al peso totale della spedizione. Ti consigliamo di raggruppare i tuoi articoli in un unico ordine. Non possiamo raggruppare due ordini distinti eseguiti separatamente, e ad ognuno di esso saranno applicate le spese di spedizione. Il tuo pacco sarà inviato sotto la tua responsabilità, ma un''attenzione particolare è riservata agli oggetti fragili.

    Le scatole hanno dimensioni ragionevoli e i tuoi articoli sono ben protetti.

    ', 'consegna'), -(2, 5, 'Nota Legale', 'Nota legale', 'nota, legale, crediti', '

    Legale

    Crediti

    Creazione e produzione:

    Questo sito web è stato realizzato usando un software open-sourcePrestaShop™.

    ', 'nota-legale'), +(1, 5, 'Consegna', 'I nostri termini e condizioni di consegna', 'condizioni, consegna, tempo, spedizione, pacco', '

    Spedizioni e resi

    Spedizione del tuo pacco

    I pacchi sono solitamente spediti entro 2 giorni dopo il ricevimento del pagamento e inviati tramite UPS con controllo e consegna senza firma. Se preferisci una consegna con UPS Extra con richiesta di firma, sarà applicato un costo aggiuntivo, pertanto contattaci prima di scegliere questo mezzo. Qualunque tipo di spedizione tu scelga, ti garantiremo un link per controllare online il percorso del tuo pacco.

    Le spese di spedizione comprendono le spese di imballaggio e affrancatura. Le spese di imballaggio sono fisse, mentre quelle di trasporto variano in base al peso totale della spedizione. Ti consigliamo di raggruppare i tuoi articoli in un unico ordine. Non possiamo raggruppare due ordini distinti eseguiti separatamente, e ad ognuno di esso saranno applicate le spese di spedizione. Il tuo pacco sarà inviato sotto la tua responsabilità, ma un''attenzione particolare è riservata agli oggetti fragili.

    Le scatole hanno dimensioni ragionevoli e i tuoi articoli sono ben protetti.

    ', 'consegna'), +(2, 5, 'Nota Legale', 'Nota legale', 'nota, legale, crediti', '

    Legale

    Crediti

    Creazione e produzione:

    Questo sito web è stato realizzato usando un software open-sourcePrestaShop™.

    ', 'nota-legale'), (3, 5, 'Termini e condizioni d''uso', 'I nostri termini e condizioni d''uso', 'condizioni, termini, uso, vendi', '

    I tuoi termini e condizioni d''uso

    Regola 1

    Ecco il contenuto della regola 1

    \r\n

    Regola 2

    Ecco il contenuto della regola 2

    \r\n

    Regola 3

    Ecco il contenuto della regola 3

    ', 'termini-e-condizioni-di-uso'), (4, 5, 'Chi siamo', 'Per sapere chi siamo', 'chi siamo, informazioni', '

    Chi siamo

    \r\n

    La nostra azienda

    La nostra azienda

    \r\n

    Il nostro team

    Il nostro team

    \r\n

    Informazioni

    Informazioni

    ', 'chi-siamo'), (5, 5, 'Pagamento sicuro', 'Il nostro mezzo di pagamento sicuro', 'pagamento sicuro, ssl, visa, mastercard, paypal', '

    Pagamento sicuro

    \r\n

    Il nostro pagamento sicuro

    Con SSL

    \r\n

    Usando Visa/Mastercard/Paypal

    Cosa sono questi servizi

    ', 'pagamento-sicuro'); @@ -1139,7 +1146,7 @@ INSERT INTO `PREFIX_carrier` (`id_carrier`, `id_tax_rules_group`, `name`, `activ INSERT INTO `PREFIX_carrier_group` (`id_carrier`, `id_group`) VALUES (1, 1); -INSERT INTO `PREFIX_carrier_lang` (`id_carrier`, `id_lang`, `delay`) VALUES (1, 1, 'Pick up in-store'),(1, 2, 'Retrait au magasin'),(1, 3, 'Recogida en la tienda'),(1, 4, 'Abholung im Geschäft'),(1, 5, 'Ritiro in magazzino'); +INSERT INTO `PREFIX_carrier_lang` (`id_carrier`, `id_lang`, `delay`) VALUES (1, 1, 'Pick up in-store'),(1, 2, 'Retrait au magasin'),(1, 3, 'Recogida en la tienda'),(1, 4, 'Abholung im Geschäft'),(1, 5, 'Ritiro in magazzino'); INSERT INTO `PREFIX_carrier_zone` (`id_carrier`, `id_zone`) VALUES (1, 1); @@ -1229,7 +1236,7 @@ INSERT INTO `PREFIX_timezone` (`name`) VALUES ('Africa/Abidjan'),('Africa/Accra' INSERT INTO `PREFIX_group` (`id_group`, `reduction`, `date_add`, `date_upd`) VALUES (1, 0, NOW(), NOW()); -INSERT INTO `PREFIX_group_lang` (`id_group`, `id_lang`, `name`) VALUES (1, 1, 'Default'),(1, 2, 'Défaut'),(1, 3, 'Predeterminado'),(1, 4, 'Default'),(1, 5, 'Default'); +INSERT INTO `PREFIX_group_lang` (`id_group`, `id_lang`, `name`) VALUES (1, 1, 'Default'),(1, 2, 'Défaut'),(1, 3, 'Predeterminado'),(1, 4, 'Default'),(1, 5, 'Default'); INSERT INTO `PREFIX_group_group_shop` (`id_group`, `id_group_shop`) (SELECT `id_group`, 1 FROM `PREFIX_group`); INSERT INTO `PREFIX_category_group` (`id_category`, `id_group`) VALUES (1, 1); @@ -1241,7 +1248,7 @@ INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason`, `id_lang`, `n (1, 1, 'Increase'), (1, 2, 'Augmenter'), (1, 3, 'Aumentar'), -(1, 4, 'Erhöhen'), +(1, 4, 'Erhöhen'), (1, 5, 'Increase'), (2, 1, 'Decrease'), (2, 2, 'Diminuer'), @@ -1259,9 +1266,9 @@ INSERT INTO `PREFIX_stock_mvt_reason_lang` (`id_stock_mvt_reason`, `id_lang`, `n (4, 4, 'Lagerbewegung nicht stattgefunden'), (4, 5, 'Movimento di merce mancante'), (5, 1, 'Restocking'), -(5, 2, 'Réassort'), +(5, 2, 'Réassort'), (5, 3, 'Reaprovisionar'), -(5, 4, 'Auffüllung'), +(5, 4, 'Auffüllung'), (5, 5, 'Riassortimento'); INSERT INTO `PREFIX_address_format` (`id_country`, `format`) diff --git a/install-dev/sql/upgrade/1.4.4.0.sql b/install-dev/sql/upgrade/1.4.4.0.sql index 4c20d78c6..562c2f815 100644 --- a/install-dev/sql/upgrade/1.4.4.0.sql +++ b/install-dev/sql/upgrade/1.4.4.0.sql @@ -24,7 +24,7 @@ INSERT IGNORE INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_up ALTER TABLE `PREFIX_lang` ADD `is_rtl` TINYINT(1) NOT NULL DEFAULT '0'; UPDATE `PREFIX_country_lang` -SET `name` = 'United State' +SET `name` = 'United States' WHERE `name` = 'USA' AND `id_lang` = ( SELECT `id_lang` @@ -78,3 +78,4 @@ DELETE FROM `PREFIX_configuration` WHERE name = 'PS_LAYERED_NAVIGATION_CHECKBOXE /* PHP:add_new_tab(AdminUpgrade, en:Upgrade|fr:Mise à jour, 9); */; /* PHP:alter_productcomments_guest_index(); */; + diff --git a/install-dev/sql/upgrade/1.4.5.0.sql b/install-dev/sql/upgrade/1.4.5.0.sql index a2d8f2665..3d563c9dc 100644 --- a/install-dev/sql/upgrade/1.4.5.0.sql +++ b/install-dev/sql/upgrade/1.4.5.0.sql @@ -17,4 +17,13 @@ ALTER TABLE `PREFIX_discount` ADD `include_tax` TINYINT(1) NOT NULL DEFAULT '0'; UPDATE `PREFIX_order_detail` SET `product_price` = `product_price` /( 1-(`group_reduction`/100)); -DELETE FROM `PREFIX_configuration` WHERE name IN ('PS_LAYERED_BITLY_USERNAME', 'PS_LAYERED_BITLY_API_KEY', 'PS_LAYERED_SHARE') LIMIT 3; \ No newline at end of file +DELETE FROM `PREFIX_configuration` WHERE name IN ('PS_LAYERED_BITLY_USERNAME', 'PS_LAYERED_BITLY_API_KEY', 'PS_LAYERED_SHARE') LIMIT 3; + +INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`, `live_edit`) VALUES +('attributeGroupForm', 'Add fileds to the form "attribute group"', 'Add fileds to the form "attribute group"', 0, 0), +('afterSaveAttributeGroup', 'On saving attribute group', 'On saving attribute group', 0, 0), +('afterDeleteAttributeGroup', 'On deleting attribute group', 'On deleting "attribute group', 0, 0), +('featureForm', 'Add fileds to the form "feature"', 'Add fileds to the form "feature"', 0, 0), +('afterSaveFeature', 'On saving attribute feature', 'On saving attribute feature', 0, 0), +('afterDeleteFeature', 'On deleting attribute feature', 'On deleting attribute feature', 0, 0); + diff --git a/modules/autoupgrade/AdminSelfUpgrade.php b/modules/autoupgrade/AdminSelfUpgrade.php index fae3739bf..448783608 100644 --- a/modules/autoupgrade/AdminSelfUpgrade.php +++ b/modules/autoupgrade/AdminSelfUpgrade.php @@ -46,11 +46,18 @@ if(empty($_POST['action']) OR !in_array($_POST['action'],array('upgradeDb'))) } else require_once(dirname(__FILE__).'/Upgrader.php'); + if(!class_exists('Upgrader',false)) + { if(file_exists(_PS_ROOT_DIR_.'/override/classes/Upgrader.php')) + { require_once(_PS_ROOT_DIR_.'/override/classes/Upgrader.php'); + } else + { eval('class Upgrader extends UpgraderCore{}'); + } + } require_once(dirname(__FILE__).'/Tools14.php'); if(!class_exists('Tools',false)) @@ -1524,8 +1531,9 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where { if($this->configOk()) { - echo ''.$this->l('Upgrade PrestaShop now !').''; - echo ''.sprintf($this->l('PrestaShop will be downloaded from %s'), $this->upgrader->link).''; + echo '

    '.$this->l('Upgrade PrestaShop now !').'

    '; + echo ''.sprintf($this->l('PrestaShop will be downloaded from %s'), $this->upgrader->link).'
    '; + echo ''.$this->l('see CHANGELOG').''; } else echo $this->displayWarning('Your current configuration does not allow upgrade.'); @@ -1547,10 +1555,10 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where echo ''; - echo '
    '; if (defined('_PS_MODE_DEV_') AND _PS_MODE_DEV_) { + echo '
    '; echo '
    '.$this->l('Step').''; echo '

    '.$this->l('Upgrade steps').'

    '; echo '
    '; @@ -1565,16 +1573,16 @@ txtError[37] = "'.$this->l('The config/defines.inc.php file was not found. Where if (defined('_PS_ALLOW_UPGRADE_UNSTABLE_') AND _PS_ALLOW_UPGRADE_UNSTABLE_ ) { - echo '

    Development tools

    '; + echo '

    Development tools

    '; + echo 'svnCheckout'; + echo 'svnUpdate'; + echo 'svnExport'; + echo '
    '; + echo '
    '; } } - echo '
    '; - echo'
    quick info
    '; + echo'
     
    '; // for upgradeDb echo '

    '; echo '

    '; @@ -1606,6 +1614,7 @@ echo ''; { $upgrader = new Upgrader(); $upgrader->checkPSVersion(true); + $this->upgrader = $upgrader; } echo ''; $this->displayWarning($this->l('This function is experimental. It\'s highly recommended to make a backup of your files and database before starting the upgrade process.')); diff --git a/modules/autoupgrade/Upgrader.php b/modules/autoupgrade/Upgrader.php index f89ec955f..ce87ff54a 100644 --- a/modules/autoupgrade/Upgrader.php +++ b/modules/autoupgrade/Upgrader.php @@ -26,7 +26,8 @@ */ class UpgraderCore{ - const DEFAULT_CHECK_VERSION_DELAY_HOURS = 0; + const DEFAULT_CHECK_VERSION_DELAY_HOURS = 24; + public $rss_version_link = 'http://www.prestashop.com/xml/version.xml'; /** * link contains hte url where to download the file * @@ -39,6 +40,8 @@ class UpgraderCore{ public $version_num; public $link; public $autoupgrade; + public $changelog; + public $md5; public function __get($var) { @@ -95,20 +98,26 @@ class UpgraderCore{ $lastCheck = Configuration::get('PS_LAST_VERSION_CHECK'); // if we use the autoupgrade process, we will never refresh it // except if no check has been done before - if (!($this->autoUpgrade AND $lastCheck) AND ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS))) ) + if ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS)) ) { libxml_set_streams_context(stream_context_create(array('http' => array('timeout' => 3)))); - if ($feed = @simplexml_load_file('http://www.prestashop.com/xml/version.xml')) + if ($feed = @simplexml_load_file($this->rss_version_link)) { $this->version_name = (string)$feed->version->name; $this->version_num = (string)$feed->version->num; $this->link = (string)$feed->download->link; + $this->md5 = (string)$feed->download->md5; + $this->changelog = (string)$feed->download->changelog; $this->autoupgrade = (int)$feed->autoupgrade; + $this->desc = (string)$feed->desc ; $configLastVersion = array( 'name' => $this->version_name, 'num' => $this->version_num, 'link' => $this->link, - 'autoupgrade' => $this->autoupgrade + 'md5' => $this->md5, + 'autoupgrade' => $this->autoupgrade, + 'changelog' => $this->changelog, + 'desc' => $this->desc ); Configuration::updateValue('PS_LAST_VERSION',serialize($configLastVersion)); Configuration::updateValue('PS_LAST_VERSION_CHECK',time()); @@ -121,6 +130,9 @@ class UpgraderCore{ $this->version_num = $lastVersionCheck['num']; $this->link = $lastVersionCheck['link']; $this->autoupgrade = $lastVersionCheck['autoupgrade']; + $this->md5 = $lastVersionCheck['md5']; + $this->desc = $lastVersionCheck['desc']; + $this->changelog = $lastVersionCheck['changelog']; } } // retro-compatibility : @@ -136,60 +148,3 @@ class UpgraderCore{ } } - -class Upgrader extends UpgraderCore -{ - public function checkPSVersion($force = false) - { - if (empty($this->link)) - { - if(class_exists('Configuration',false)) - $lastCheck = Configuration::get('PS_LAST_VERSION_CHECK'); - else - $lastCheck = 0; - // if we use the autoupgrade process, we will never refresh it - // except if no check has been done before - if (!($this->autoUpgrade AND $lastCheck) AND ($force OR ($lastCheck < time() - (3600 * Upgrader::DEFAULT_CHECK_VERSION_DELAY_HOURS))) ) - { - libxml_set_streams_context(stream_context_create(array('http' => array('timeout' => 3)))); - if ($feed = @simplexml_load_file('http://www.prestashop.com/xml/version.xml')) - { - $this->version_name = (string)$feed->version->name; - $this->version_num = (string)$feed->version->num; - $this->link = (string)$feed->download->link; - $this->autoupgrade = (int)$feed->autoupgrade; - $configLastVersion = array( - 'name' => $this->version_name, - 'num' => $this->version_num, - 'link' => $this->link, - 'autoupgrade' => $this->autoupgrade - ); - if(class_exists('Configuration',false)) - { - Configuration::updateValue('PS_LAST_VERSION',serialize($configLastVersion)); - Configuration::updateValue('PS_LAST_VERSION_CHECK',time()); - } - } - } - else - { - $lastVersionCheck = unserialize(Configuration::get('PS_LAST_VERSION')); - $this->version_name = $lastVersionCheck['name']; - $this->version_num = $lastVersionCheck['num']; - $this->link = $lastVersionCheck['link']; - $this->autoupgrade = $lastVersionCheck['autoupgrade']; - } - } - // retro-compatibility : - // return array(name,link) if you don't use the last version - // false otherwise - if (version_compare(_PS_VERSION_, $this->version_num, '<')) - { - $this->needUpgrade = true; - return array('name' => $this->version_name, 'link' => $this->link); - } - else - return false; - } -} - diff --git a/modules/autoupgrade/autoupgrade.php b/modules/autoupgrade/autoupgrade.php index cd067ce73..861d42d49 100644 --- a/modules/autoupgrade/autoupgrade.php +++ b/modules/autoupgrade/autoupgrade.php @@ -30,23 +30,35 @@ class Autoupgrade extends Module if (!$autoupgradeCanWork) return false; - // How to remove an Admin Tab ? - if (version_compare(_PS_VERSION_,'1.4.4.0','=') OR version_compare(_PS_VERSION_,'1.4.4.1','=')) + $res = true; + // before adding AdminSelfUpgrade, we should remove AdminUpgrade + if (version_compare(_PS_VERSION_,'1.4.4.0','==') OR version_compare(_PS_VERSION_,'1.4.4.1','==')) { $idTab = Tab::getIdFromClassName('AdminUpgrade'); + + if ($idTab) + { $tab = new Tab($idTab); - $tab->delete(); + $res &= $tab->delete(); } - else + } + + $idTab = Tab::getIdFromClassName('AdminSelfUpgrade'); + // Then we add AdminSelfUpgrade only if not exists + if (!$idTab) { $tab = new Tab(); $tab->class_name = 'AdminSelfUpgrade'; $tab->module = 'autoupgrade'; $tab->id_parent = 9; $tab->name = array_fill(1,sizeof(Language::getLanguages(false)), 'Upgrade'); - $res = $tab->save(); - Configuration::updateValue('PS_AUTOUPDATE_MODULE_IDTAB',$tab->id); + $res &= $tab->save(); } + else + { + $tab = new Tab($idTab); + } + Configuration::updateValue('PS_AUTOUPDATE_MODULE_IDTAB',$tab->id); $autoupgradeDir = _PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'; if(!file_exists($autoupgradeDir)) @@ -58,6 +70,7 @@ class Autoupgrade extends Module $res &= copy($path.'ajax-upgradetab.php',$autoupgradeDir . DIRECTORY_SEPARATOR . 'ajax-upgradetab.php'); if (!$res + OR !Tab::getIdFromClassName('AdminSelfUpgrade') OR !(Hook::get('backOfficeHeader') AND !$this->registerHook('backOfficeHeader')) OR !parent::install() ) diff --git a/modules/autoupgrade/fr.php b/modules/autoupgrade/fr.php index 05e57a2b7..e52758e9e 100644 --- a/modules/autoupgrade/fr.php +++ b/modules/autoupgrade/fr.php @@ -1,155 +1,151 @@ AdminSelfUpgrade_875b8a59022d232837491c0fdfacb4ab'] = 'Ne pas sauver les images'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a8d6c6734da0083021561b23f2fa88cc'] = 'Vous pouvez exclure le dossier image de la sauvegarde si vous l\'avez déjà sauvegardé d\'une autre manière (non recommandé)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_af98608eaedd4ba7ffd47a0204e84b23'] = 'Conserver le thème \"prestashop\" actuel'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4ea56ca1a757e426911ff20889c0e93c'] = 'Si vous avez personnalisé le thème par défaut de PrestaShop, vous pouvez le protéger de la mise à niveau (non recommandé)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8413c63a6ef3717a974094785fd0b588'] = 'Garder les traductions'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_51bbcf7afb0f8d35501d0a7b28979b06'] = 'Si \"oui\", vous conserverez toutes vos traductions'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8c8194a465f0163a6724907755ac1b82'] = 'Mode manuel'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_dd9dbd4916653d683244119a067ca467'] = 'Choisissze \"oui\" si vous voulez vous '; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_e7b6d601ff4e9069e726927e211274ea'] = 'Utiliser Subversion'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a15b09729294cf7fea1096f970a0fed4'] = 'Choisissez \"oui\" si vous voulez utiliser une version non stable au lieu de l'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_36be1130454bc8c4e0a41d36fa062a8b'] = 'Impossible de créer le répertoire %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_e21a52b9631b01c3f1821795b8de451c'] = 'Processus de mise à niveau terminé. Félicitations! Vous pouvez maintenant réactive de votre boutique.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_7b2f224649ef2ad10a2d73595d67a876'] = 'Démarrage mise à niveau ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_6824d57b7af37f605bd97d34defc3761'] = 'Exportation svn terminée. Suppression des fichiers exemples...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f70307d8297e48a8783d41e6f3313d51'] = 'Erreur lors de l\'export SVN'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4eecd9c195e46c054ef7da6d9d1a738b'] = 'Extraction terminée. Suppression des fichiers exemples...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0929f38eaac3ca38801f08b7269574e0'] = 'Impossible d\'extraire %1$s dans %2$s ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_6b2d0404b7faba0e791e15a52586a149'] = 'Basculer vers svn checkout (useSvn activé)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f0e38ac0c558a7f216ae98382b9e58f5'] = 'Site désactivé. Téléchargement en cours (peut prendre '; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4f7c02592a962e40a920f32f3a24f2df'] = 'filesToUpgrade n\'est pas un tableau'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3f10faa8b44a7175ae8fc5dcb8dec5de'] = 'Tous les fichiers ont été mis à jour. Mise à jour de la base de données en cours.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_1ad932e3b85eb2907a817cd3e3e6907e'] = 'Erreur pour la mise à jour de %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_078a325fbcc1dbd50bd9f969ce954965'] = 'encore %2$s fichiers à mettre à jour.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_62740df131433ec9d45bf1810eefb19b'] = 'erreur pendant la mise à jour de la base de données.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_9a2f2cf276ea9f79b31a815897c0e3e6'] = '%s ignoré.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_63ded4905ba41ac4bf00373df2739576'] = 'création du répertoire %2$s. encore %3$s fichiers à mettre à jour.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_11978affb3b0dbb16c50d571fd05de6d'] = 'erreur lors de la création du répertoire %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_1b854285afc1988b6f83414fde5943ab'] = '%1$s copié dans %2$s. encore %3$s fichiers à mettre à jour.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0e06ce0972ad338e1d96e8589dc21b9c'] = 'erreur lors de la copie de %1$s vers %2$s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0511620a3a1d6036d3fbe47b131d7c4b'] = 'Fichiers restorés. Restauration de la base de données.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_791403f158965a3e19f8627c7b744126'] = 'Base de données restaurée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5f7f50973696d0a42c1efcc07f7820a0'] = 'Votre site est maintenant restauré.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_28517b8a291c50d80aa53a078407065b'] = 'Répertoire racine nettoyée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_bb71892737d721949538d6e1c4d3d22d'] = 'Fichiers restaurés. Sauvegarde de la base de données non trouvée. Restauration terminée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_cb7dce5f6a1934d54c0d3335c7ffe841'] = 'Fichiers restaurés.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8efc36d230f76fbfd9e4d758964e9414'] = 'impossible d\'extraire %1$ s dans%2$s.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_d7624db09c15d46cd37d7709ae05e44b'] = 'aucune sauvegarde trouvée. Il n\'y a rien à restaurer.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_09a362e2dd3800f8fbc55d3446513f65'] = 'Rien à restaurer (aucune requête trouvée)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_66c4cbfb21f294b233692b67356db647'] = 'Base de données sauvegardée dans %s. Mise à jour des fichiers ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_48f95ff09327408a578e91655ed872a1'] = '%s fichiers à sauvegarder.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_70960f2aa87d307170d3a1bc3e06d904'] = 'sauvegarde des fichiers initilialisée dans %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8cf728d701c50a59ef78b7c55fc27cd4'] = 'Les fichiers de sauvegarde en cours. Encore %s ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_15b353ca964fe816547e67e1508ff85d'] = 'Fichiers sauvegardés. Sauvegarde de la base de données ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a25c4f085558c5f6e519e56257af531f'] = 'tous les fichiers ont été ajoutés à l\'archive.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_91f805cf850500bda66426aea042602f'] = '%1$ s ajouté à l\'archive. Encore %2$.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f79479c0de75d568def0afdc1e5de04e'] = 'Erreur lorsque vous essayez d\'ajouter %1$s à l\'archive %2$s.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b9a2db69065827812dd4b7a7f9ffc0b1'] = 'impossible d\'ouvrir l\'archive'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2589a25910cd3d7fab7e45361c4cb39d'] = '%1$s supprimé. reste %2$s '; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_d82eef1ba081c54686767c555670c0fe'] = 'erreur lors de la suppression de %1$s, reste encore %2$s '; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_344c592d141604c614c219fad3fa0dae'] = '%1$s fichiers exemple à supprimer'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0baf8c94d1d03d1621c17cd6eabf7b9f'] = 'Tous les exemples de fichiers supprimés. Sauvegarde des fichiers en cours...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_84e31682487d5a0937f9184ebcf594ba'] = 'copie de travail déjà %s à jour. exportation vers le répertoire latest'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8f4c8c87daa3bc0311cfb61b7d36e27b'] = 'Erreur d\'extraction du SVN'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0e81132066d433d212e237678e1193a3'] = 'non authorisé à utiliser SVN'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b0d51f91a1118b7c39ee1835cc6c926a'] = 'Téléchargement terminé. Extraction ...'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_0c0db54fe8212c1a7215005fef75d7dd'] = 'Erreur pendant le téléchargement'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_93120c07d8c5cee44042627cd493e0e0'] = 'vous avez besoin allow_url_fopen pour le téléchargement automatique. Vous pouvez également placer le fichier manuellement dans %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3bb38e7d0bfd5a02f7c06cae446fee86'] = 'l\'action %s ignorée'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b4302e98d94591ee9afa09e769b2ee63'] = 'l\'action %s non trouvée'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_760c4026bc5a0bd5378e6efc3f1370b4'] = 'Trop long !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4f2e28904946a09d8c7f36dd3ee72457'] = 'Les champs sont différents !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_43b01d1a6c5065545c65f42003b0ab5c'] = 'Adresse incorrecte !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2e170dfd78c2171a25605ececc0950a4'] = 'Impossible d\'envoyer l\'email !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_6deee80e4bdb8894331994116818558e'] = 'Erreur à la création du fichier de configuration, si le fichier /config/settings.inc.php existe, veuillez lui donner les droits publics d\'écriture; sinon veuillez créer un fichier settings.inc.php dans le répertoire de configuration (/config/)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_aa946cb00b1c23ff6553b6f9e05da151'] = 'Le fichier de paramètres n\'a pu être écrit, veuillez créer un fichier nommé settings.inc.php dans votre répertoire de configuration.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_e930e2474c664a3a7e89ecfb8793694b'] = 'Impossible d\'envoyer le fichier !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_774fc7a0f56391abc5d8856f2436ca07'] = 'L\'intégrité des données n\'est pas validée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8fd007bf08e0717537825a3e91cb4fcc'] = 'Impossible de lire le contenu d\'un des fichiers *.sql.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_c71e825f6873f64b91efc26313614eab'] = 'Impossible d\'accéder au contenu d\'un des fichiers *.sql.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3d5c8f1d29b1a1dc4ea0673122e0d277'] = 'Erreur lors de l\'insertion dans la base :'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_17e1581d01152347bfaacd153b961379'] = 'Mot de passe incorrect (chaîne alpha-numérique d\'au moins 8 caractères)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_9b9f3b2f8a4dffcad9188c8fc4b468c8'] = 'Une base de données PrestaShop existe déjà avec ce préfixe, vous devez la supprimer manuellement ou changer son préfixe.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_bc5e1163a15106f9e941a7603124709d'] = 'Ce n\'est pas un nom valide.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a9d82945b8603f0c8807958d7db9a24d'] = 'Ce n\'est pas une image valide.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b37eef07b764ea58eec9afe624e20a40'] = 'Erreur lors de la création du fichier /config/settings.inc.php.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3d9f514d46849760ef1b1412e314fd99'] = 'Erreur :'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_504053ab4c6d648edf11624f1bea4bb4'] = 'Cette base de données PrestaShop existe déjà, merci de revalider vos informations d\'authentification à la base de données.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_d7a99f61bb284d096ea4f221784af85a'] = 'Une erreur est survenue lors du redimensionnement de l\'image.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_428c933bafbf262d693fbf1c22c03e5d'] = 'La base de données a été trouvée !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_76bd190129b7aefb90fdf42f09ec3ec7'] = 'Le serveur de bases de données est disponible mais la base de données n\'a pas été trouvée'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_045f4b5c3f990e5a26e2837495d68259'] = 'Le serveur de bases de données n\'a pas été trouvé, merci de vérifier vos identifiants ou le nom du serveur.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_757fc72e8d69106dd2cf9da22cc7adb1'] = 'Une erreur est survenue lors de l\'envoi de l\'email, merci de vérifier vos paramètres.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_d18ad19290b3bfc3cd0d7badbb6cb6a3'] = 'Impossible d\'écrire l\'image /img/logo.jpg. Si celle-ci existe déjà, merci de la supprimer manuellement.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2368e33e3e01d53abb9b60061ab83903'] = 'Le fichier envoyé dépasse la taille maximum autorisée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a10ef376d9f4c877ac86d8e4350116bf'] = 'Le fichier envoyé dépasse la taille maximum autorisée.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f8fe8cba1625eaf8e5c253b041d57dbd'] = 'Le fichier a été envoyé partiellement.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8c9067e52e4440d8a20e74fdc745b0c6'] = 'Aucun fichier n\'a été envoyé'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2384d693d9af53b4727c092af7570a19'] = 'Il manque le dossier temporaire de réception de vos envois de fichiers. Merci de consulter votre administrateur système.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f5985b2c059d5cc36968baab7585baba'] = 'Impossible d\'écrire le fichier sur le disque'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_9e54dfe54e03b0010c1fe70bd65cd5e6'] = 'Envoi de fichier interrompu à cause de l\'extension incorrecte'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_32af3a59b50e98d254d6c03c5b320a94'] = 'Impossible de convertir les données de votre base de données en utf-8.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_989a45a4ca01ee222f4370172bf8850d'] = 'Nom de boutique invalide'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_68499acecfba9d3bf0ca8711f300d3ed'] = 'Votre prénom contient des caractères invalides'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2399cf4ca7b49f2706f6e147a32efa78'] = 'Votre nom contient des caractères invalides'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_7d72600fcff52fb3a2d2f73572117311'] = 'Votre serveur de base de données ne supporte pas le jeu de caractère utf-8.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5b9bbadcf96f15e7f112c13a9e5f076e'] = 'Le support de ce moteur de base de donnée n\'est pas supporté, veuillez en choisir un autre tel que MyISAM'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_24b481455c1b72b0c2539e7d516b9582'] = 'Le fichier /img/logo.jpg n\'a pas les droits d\'écriture, merci d\'effectuer un CHMOD 755 ou 777 sur ce fichier'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5746b74663148afffd1350c97d4fcdfe'] = 'Champ mode catalog invalide'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_9e5459c4deb20b7842ac01e97390b334'] = 'Erreur inconnue.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_dafe44b99256a7783bc37f4f949da373'] = 'Cet installeur est trop vieux.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_37ce0f29c7377c827e7247fe5645a782'] = 'Vous êtes déjà en possession de la version %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_89928a14f2090aec4fd7aff9ea983f95'] = 'Pas de version antérieur détectée. Avez-vous supprimé ou renommé le fichier settings.inc.php du dossier config ?'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5276a8cbd9e3e467396089b267564f51'] = 'Le fichier config/settings.inc.php n\'a pas été trouvé. L\'avez-vous supprimé ou renommé ?'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_24784d9e80638781b74c017b33d8ca0c'] = 'Impossible de trouver un des fichiers de mise à jour SQL. Merci de vérifier que le dossier /install/sql/upgrade n\'est pas vide.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_580e4b216e324f675f0237cdb34b6c2d'] = 'Pas de mise à jour disponible'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f15e7e7292b0c72894cf45a893e0d497'] = 'Erreur lors de l\'ouverture du fichier SQL'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b8286438fbb6c7df9129fadc5316c19f'] = 'Erreur lors de l\'insertion dans la base de données'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_229ee8046cafc09ddaf46fb9db710e91'] = 'Malheureusement,'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_e805a556799b7cef40e9760c81d99218'] = 'erreurs SQL sont apparues.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5627353fd6ac678497af3ece05087068'] = 'Le fichier config/defines.inc.php n\'a pas été trouvé. Ou est-il passé ?'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_446c9e952debe114c86bbd9e5eea7d61'] = 'Restaurer'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4879913b16fa23f723f70a5067bda8d4'] = 'Aucune restauration disponible'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_fff66e9b3d962fa319c8068b5c1997cd'] = 'restaurer'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_ebdabc2d40aa563aabbb3ee57915a7a9'] = 'cliquer pour restaurer %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_e9c57c7fbc335e66282a32617b01b9be'] = 'Votre configuration actuelle'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_2fc4ab825ce2ce9476e8a1c2211ac9b8'] = 'Dossier racine'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_8786f48d9cf9618cd2f5c37312ab7e50'] = 'Statut du dossier racine'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_d16d80ca66261afba43f5736f6cec7e6'] = 'droits complets en écriture'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_039552aa1d74b68f01a73821f3078158'] = 'pas de droits d\'écriture récursif'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_31a962ffeb06a6cc6d58ef3ba5fae2b7'] = 'Autoupgrade autorisé'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_9c30a74657158984997cca4930d6075b'] = 'Cette version autorise la mise à jour automatique'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_af566be1636d11ecc8ddb728a15520b8'] = 'Cette version n\'autorise pas la mise à jour automatique'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_4d3d769b812b6faa6b76e1a8abaece2d'] = 'Actif'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3cab03c00dbd11bc3569afa0748013f0'] = 'Inactif'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b2e1c91a22797b8d78f9c4adb01a8f17'] = 'Statut de la boutique'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_94af5df6182efd3591d0ccccaa04bd5c'] = 'Limite de temps PHP'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_075ae3d2fc31640504f814f60e5ef713'] = 'désactivée'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_783e8e29e6a8c3e22baa58a19420eb4f'] = 'secondes'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_342299aeb786a06533ba00d9a04794dd'] = 'Modifiez vos options'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_06933067aafd48425d67bcb01bba5cb6'] = 'Mettre à jour'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_5d8b77b69c92370ec4e175a638019ca7'] = 'La version actuelle de votre boutique est : %s'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_80e3d093272bc011b6bc661e408c7423'] = 'La dernière version est %1$s (%2$s)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_b47ba7568788e46dbc7fe81e525db863'] = 'La dernière version de prestashop disponible est:'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_c97dcfb0df6daa46292a0def8a567822'] = 'Sauvegardez la base de données, les fichiers de sauvegarde et faire la mise en un clic pardi !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a60ab62ed99ef0358b2efae592be0cdd'] = 'Mettre à jour PrestaShop Maintenant !'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_943f41a7241dc56c3fbc488f015a4e6a'] = 'Votre boutique est déjà à jour'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_48c7c41b72e1d678923ce3571aa65b2d'] = 'Etape'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_eeb5a49c38d2d8c2baa51ed09beccf88'] = 'Etape de mise à jour'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_c5d769685704e7ddcd70e74a6ebe50b7'] = 'Votre configuration actuelle n\'autorise pas la mise à jour.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_7f786b903ea8045f5b5b7e3c5a4e0385'] = 'Cette fonction est expérimentale. Il est hautement recommandé de faire une sauvegarde de vos fichiers et de votre base de données avant de commencer le processus de mise à jour.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_3a3a651c9a67bca9ac902da789466b93'] = 'Mise à jour instable'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a22eff458b4f4bce6d3232e367ff0138'] = 'Votre configuration actuelle indique que vous voulez mettre à jour votre système à partir d\'une branche de développement instable, sans numéro de version. Si vous mettez à jour, vous ne pourrez plus appliquer le processus de versions stables officiel.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_dae8ace18bdcbcc6ae5aece263e14fe8'] = 'Options'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_c747916b25dcb02e0e81ee84dbd966ea'] = 'Vous n\'avez pas besoin d\'utiliser cette fonctionnalité.'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_6b3930a184368a458be6e4429f409877'] = 'Mise à jour terminée. Vérifiez votre boutique (essayez de faire une commande, vérifier le thème)'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_91195bbbacc2147a736c849c46368ed8'] = 'Voulez vous restaurer votre boutique'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_a498f9476a893d51ee02b3601678d318'] = 'Cliquez pour restaurer la base de donnée'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_f34d5debb2bba76aa3e077937a07e373'] = 'Cliquez pour restaurer les fichiers'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_60283aa37e2063b2ada2f99216e1332a'] = 'Votre serveur ne peut pas télécharger le fichier. S\'il vous plaît le télécharger d\'abord par ftp dans votre répertoire admin/autoupgrade'; -$_MODULE['<{autoupgrade}prestashop>AdminSelfUpgrade_6ef7ebe46f6d16cdbf9e2169e3dd048e'] = 'Allez manuellement au bouton restaurer'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_875b8a59022d232837491c0fdfacb4ab'] = 'Ne pas sauver les images'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a8d6c6734da0083021561b23f2fa88cc'] = 'Vous pouvez exclure le dossier image de la sauvegarde si vous l\'avez déjà sauvegardé d\'une autre manière (non recommandé)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_af98608eaedd4ba7ffd47a0204e84b23'] = 'Conserver le thème \"prestashop\" actuel'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4ea56ca1a757e426911ff20889c0e93c'] = 'Si vous avez personnalisé le thème par défaut de PrestaShop, vous pouvez le protéger de la mise à niveau (non recommandé)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8413c63a6ef3717a974094785fd0b588'] = 'Garder les traductions'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_51bbcf7afb0f8d35501d0a7b28979b06'] = 'Si \"oui\", vous conserverez toutes vos traductions'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8c8194a465f0163a6724907755ac1b82'] = 'Mode manuel'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_dd9dbd4916653d683244119a067ca467'] = 'Choisissze \"oui\" si vous voulez vous '; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_e7b6d601ff4e9069e726927e211274ea'] = 'Utiliser Subversion'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a15b09729294cf7fea1096f970a0fed4'] = 'Choisissez \"oui\" si vous voulez utiliser une version non stable au lieu de l'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_36be1130454bc8c4e0a41d36fa062a8b'] = 'Impossible de créer le répertoire %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_e21a52b9631b01c3f1821795b8de451c'] = 'Processus de mise à niveau terminé. Félicitations! Vous pouvez maintenant réactive de votre boutique.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_7b2f224649ef2ad10a2d73595d67a876'] = 'Démarrage mise à niveau ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6b2d0404b7faba0e791e15a52586a149'] = 'Basculer vers svn checkout (useSvn activé)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f0e38ac0c558a7f216ae98382b9e58f5'] = 'Site désactivé. Téléchargement en cours (peut prendre '; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6824d57b7af37f605bd97d34defc3761'] = 'Exportation svn terminée. Suppression des fichiers exemples...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f70307d8297e48a8783d41e6f3313d51'] = 'Erreur lors de l\'export SVN'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4eecd9c195e46c054ef7da6d9d1a738b'] = 'Extraction terminée. Suppression des fichiers exemples...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0929f38eaac3ca38801f08b7269574e0'] = 'Impossible d\'extraire %1$s dans %2$s ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4f7c02592a962e40a920f32f3a24f2df'] = 'filesToUpgrade n\'est pas un tableau'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3f10faa8b44a7175ae8fc5dcb8dec5de'] = 'Tous les fichiers ont été mis à jour. Mise à jour de la base de données en cours.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_1ad932e3b85eb2907a817cd3e3e6907e'] = 'Erreur pour la mise à jour de %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_078a325fbcc1dbd50bd9f969ce954965'] = 'encore %2$s fichiers à mettre à jour.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_62740df131433ec9d45bf1810eefb19b'] = 'erreur pendant la mise à jour de la base de données.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9a2f2cf276ea9f79b31a815897c0e3e6'] = '%s ignoré.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_63ded4905ba41ac4bf00373df2739576'] = 'création du répertoire %2$s. encore %3$s fichiers à mettre à jour.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_11978affb3b0dbb16c50d571fd05de6d'] = 'erreur lors de la création du répertoire %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_1b854285afc1988b6f83414fde5943ab'] = '%1$s copié dans %2$s. encore %3$s fichiers à mettre à jour.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0e06ce0972ad338e1d96e8589dc21b9c'] = 'erreur lors de la copie de %1$s vers %2$s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0511620a3a1d6036d3fbe47b131d7c4b'] = 'Fichiers restorés. Restauration de la base de données.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_791403f158965a3e19f8627c7b744126'] = 'Base de données restaurée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5f7f50973696d0a42c1efcc07f7820a0'] = 'Votre site est maintenant restauré.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_28517b8a291c50d80aa53a078407065b'] = 'Répertoire racine nettoyée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_bb71892737d721949538d6e1c4d3d22d'] = 'Fichiers restaurés. Sauvegarde de la base de données non trouvée. Restauration terminée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_cb7dce5f6a1934d54c0d3335c7ffe841'] = 'Fichiers restaurés.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8efc36d230f76fbfd9e4d758964e9414'] = 'impossible d\'extraire %1$ s dans%2$s.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_d7624db09c15d46cd37d7709ae05e44b'] = 'aucune sauvegarde trouvée. Il n\'y a rien à restaurer.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_09a362e2dd3800f8fbc55d3446513f65'] = 'Rien à restaurer (aucune requête trouvée)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_66c4cbfb21f294b233692b67356db647'] = 'Base de données sauvegardée dans %s. Mise à jour des fichiers ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_48f95ff09327408a578e91655ed872a1'] = '%s fichiers à sauvegarder.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_70960f2aa87d307170d3a1bc3e06d904'] = 'sauvegarde des fichiers initilialisée dans %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8cf728d701c50a59ef78b7c55fc27cd4'] = 'Les fichiers de sauvegarde en cours. Encore %s ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_15b353ca964fe816547e67e1508ff85d'] = 'Fichiers sauvegardés. Sauvegarde de la base de données ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a25c4f085558c5f6e519e56257af531f'] = 'tous les fichiers ont été ajoutés à l\'archive.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_91f805cf850500bda66426aea042602f'] = '%1$ s ajouté à l\'archive. Encore %2$.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f79479c0de75d568def0afdc1e5de04e'] = 'Erreur lorsque vous essayez d\'ajouter %1$s à l\'archive %2$s.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b9a2db69065827812dd4b7a7f9ffc0b1'] = 'impossible d\'ouvrir l\'archive'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2589a25910cd3d7fab7e45361c4cb39d'] = '%1$s supprimé. reste %2$s '; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_d82eef1ba081c54686767c555670c0fe'] = 'erreur lors de la suppression de %1$s, reste encore %2$s '; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_344c592d141604c614c219fad3fa0dae'] = '%1$s fichiers exemple à supprimer'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0baf8c94d1d03d1621c17cd6eabf7b9f'] = 'Tous les exemples de fichiers supprimés. Sauvegarde des fichiers en cours...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_84e31682487d5a0937f9184ebcf594ba'] = 'copie de travail déjà %s à jour. exportation vers le répertoire latest'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8f4c8c87daa3bc0311cfb61b7d36e27b'] = 'Erreur d\'extraction du SVN'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0e81132066d433d212e237678e1193a3'] = 'non authorisé à utiliser SVN'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b0d51f91a1118b7c39ee1835cc6c926a'] = 'Téléchargement terminé. Extraction ...'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_0c0db54fe8212c1a7215005fef75d7dd'] = 'Erreur pendant le téléchargement'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_93120c07d8c5cee44042627cd493e0e0'] = 'vous avez besoin allow_url_fopen pour le téléchargement automatique. Vous pouvez également placer le fichier manuellement dans %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3bb38e7d0bfd5a02f7c06cae446fee86'] = 'l\'action %s ignorée'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b4302e98d94591ee9afa09e769b2ee63'] = 'l\'action %s non trouvée'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_760c4026bc5a0bd5378e6efc3f1370b4'] = 'Trop long !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4f2e28904946a09d8c7f36dd3ee72457'] = 'Les champs sont différents !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_43b01d1a6c5065545c65f42003b0ab5c'] = 'Adresse incorrecte !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2e170dfd78c2171a25605ececc0950a4'] = 'Impossible d\'envoyer l\'email !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6deee80e4bdb8894331994116818558e'] = 'Erreur à la création du fichier de configuration, si le fichier /config/settings.inc.php existe, veuillez lui donner les droits publics d\'écriture; sinon veuillez créer un fichier settings.inc.php dans le répertoire de configuration (/config/)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_aa946cb00b1c23ff6553b6f9e05da151'] = 'Le fichier de paramètres n\'a pu être écrit, veuillez créer un fichier nommé settings.inc.php dans votre répertoire de configuration.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_e930e2474c664a3a7e89ecfb8793694b'] = 'Impossible d\'envoyer le fichier !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_774fc7a0f56391abc5d8856f2436ca07'] = 'L\'intégrité des données n\'est pas validée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8fd007bf08e0717537825a3e91cb4fcc'] = 'Impossible de lire le contenu d\'un des fichiers *.sql.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_c71e825f6873f64b91efc26313614eab'] = 'Impossible d\'accéder au contenu d\'un des fichiers *.sql.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3d5c8f1d29b1a1dc4ea0673122e0d277'] = 'Erreur lors de l\'insertion dans la base :'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_17e1581d01152347bfaacd153b961379'] = 'Mot de passe incorrect (chaîne alpha-numérique d\'au moins 8 caractères)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9b9f3b2f8a4dffcad9188c8fc4b468c8'] = 'Une base de données PrestaShop existe déjà avec ce préfixe, vous devez la supprimer manuellement ou changer son préfixe.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_bc5e1163a15106f9e941a7603124709d'] = 'Ce n\'est pas un nom valide.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a9d82945b8603f0c8807958d7db9a24d'] = 'Ce n\'est pas une image valide.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b37eef07b764ea58eec9afe624e20a40'] = 'Erreur lors de la création du fichier /config/settings.inc.php.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3d9f514d46849760ef1b1412e314fd99'] = 'Erreur :'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_504053ab4c6d648edf11624f1bea4bb4'] = 'Cette base de données PrestaShop existe déjà, merci de revalider vos informations d\'authentification à la base de données.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_d7a99f61bb284d096ea4f221784af85a'] = 'Une erreur est survenue lors du redimensionnement de l\'image.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_428c933bafbf262d693fbf1c22c03e5d'] = 'La base de données a été trouvée !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_76bd190129b7aefb90fdf42f09ec3ec7'] = 'Le serveur de bases de données est disponible mais la base de données n\'a pas été trouvée'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_045f4b5c3f990e5a26e2837495d68259'] = 'Le serveur de bases de données n\'a pas été trouvé, merci de vérifier vos identifiants ou le nom du serveur.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_757fc72e8d69106dd2cf9da22cc7adb1'] = 'Une erreur est survenue lors de l\'envoi de l\'email, merci de vérifier vos paramètres.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_d18ad19290b3bfc3cd0d7badbb6cb6a3'] = 'Impossible d\'écrire l\'image /img/logo.jpg. Si celle-ci existe déjà, merci de la supprimer manuellement.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2368e33e3e01d53abb9b60061ab83903'] = 'Le fichier envoyé dépasse la taille maximum autorisée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a10ef376d9f4c877ac86d8e4350116bf'] = 'Le fichier envoyé dépasse la taille maximum autorisée.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f8fe8cba1625eaf8e5c253b041d57dbd'] = 'Le fichier a été envoyé partiellement.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8c9067e52e4440d8a20e74fdc745b0c6'] = 'Aucun fichier n\'a été envoyé'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2384d693d9af53b4727c092af7570a19'] = 'Il manque le dossier temporaire de réception de vos envois de fichiers. Merci de consulter votre administrateur système.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f5985b2c059d5cc36968baab7585baba'] = 'Impossible d\'écrire le fichier sur le disque'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9e54dfe54e03b0010c1fe70bd65cd5e6'] = 'Envoi de fichier interrompu à cause de l\'extension incorrecte'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_32af3a59b50e98d254d6c03c5b320a94'] = 'Impossible de convertir les données de votre base de données en utf-8.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_989a45a4ca01ee222f4370172bf8850d'] = 'Nom de boutique invalide'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_68499acecfba9d3bf0ca8711f300d3ed'] = 'Votre prénom contient des caractères invalides'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2399cf4ca7b49f2706f6e147a32efa78'] = 'Votre nom contient des caractères invalides'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_7d72600fcff52fb3a2d2f73572117311'] = 'Votre serveur de base de données ne supporte pas le jeu de caractère utf-8.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5b9bbadcf96f15e7f112c13a9e5f076e'] = 'Le support de ce moteur de base de donnée n\'est pas supporté, veuillez en choisir un autre tel que MyISAM'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_24b481455c1b72b0c2539e7d516b9582'] = 'Le fichier /img/logo.jpg n\'a pas les droits d\'écriture, merci d\'effectuer un CHMOD 755 ou 777 sur ce fichier'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5746b74663148afffd1350c97d4fcdfe'] = 'Champ mode catalog invalide'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9e5459c4deb20b7842ac01e97390b334'] = 'Erreur inconnue.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_dafe44b99256a7783bc37f4f949da373'] = 'Cet installeur est trop vieux.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_37ce0f29c7377c827e7247fe5645a782'] = 'Vous êtes déjà en possession de la version %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_89928a14f2090aec4fd7aff9ea983f95'] = 'Pas de version antérieur détectée. Avez-vous supprimé ou renommé le fichier settings.inc.php du dossier config ?'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5276a8cbd9e3e467396089b267564f51'] = 'Le fichier config/settings.inc.php n\'a pas été trouvé. L\'avez-vous supprimé ou renommé ?'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_24784d9e80638781b74c017b33d8ca0c'] = 'Impossible de trouver un des fichiers de mise à jour SQL. Merci de vérifier que le dossier /install/sql/upgrade n\'est pas vide.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_580e4b216e324f675f0237cdb34b6c2d'] = 'Pas de mise à jour disponible'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f15e7e7292b0c72894cf45a893e0d497'] = 'Erreur lors de l\'ouverture du fichier SQL'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b8286438fbb6c7df9129fadc5316c19f'] = 'Erreur lors de l\'insertion dans la base de données'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_229ee8046cafc09ddaf46fb9db710e91'] = 'Malheureusement,'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_e805a556799b7cef40e9760c81d99218'] = 'erreurs SQL sont apparues.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5627353fd6ac678497af3ece05087068'] = 'Le fichier config/defines.inc.php n\'a pas été trouvé. Ou est-il passé ?'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_446c9e952debe114c86bbd9e5eea7d61'] = 'Restaurer'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_4879913b16fa23f723f70a5067bda8d4'] = 'Aucune restauration disponible'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_fff66e9b3d962fa319c8068b5c1997cd'] = 'restaurer'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_ebdabc2d40aa563aabbb3ee57915a7a9'] = 'cliquer pour restaurer %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_e9c57c7fbc335e66282a32617b01b9be'] = 'Votre configuration actuelle'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_2fc4ab825ce2ce9476e8a1c2211ac9b8'] = 'Dossier racine'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_8786f48d9cf9618cd2f5c37312ab7e50'] = 'Statut du dossier racine'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_d16d80ca66261afba43f5736f6cec7e6'] = 'droits complets en écriture'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_039552aa1d74b68f01a73821f3078158'] = 'pas de droits d\'écriture récursif'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_31a962ffeb06a6cc6d58ef3ba5fae2b7'] = 'Autoupgrade autorisé'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_9c30a74657158984997cca4930d6075b'] = 'Cette version autorise la mise à jour automatique'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_af566be1636d11ecc8ddb728a15520b8'] = 'Cette version n\'autorise pas la mise à jour automatique'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_94af5df6182efd3591d0ccccaa04bd5c'] = 'Limite de temps PHP'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_075ae3d2fc31640504f814f60e5ef713'] = 'désactivée'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_783e8e29e6a8c3e22baa58a19420eb4f'] = 'secondes'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_342299aeb786a06533ba00d9a04794dd'] = 'Modifiez vos options'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_06933067aafd48425d67bcb01bba5cb6'] = 'Mettre à jour'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_5d8b77b69c92370ec4e175a638019ca7'] = 'La version actuelle de votre boutique est : %s'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_80e3d093272bc011b6bc661e408c7423'] = 'La dernière version est %1$s (%2$s)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_b47ba7568788e46dbc7fe81e525db863'] = 'La dernière version de prestashop disponible est:'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_c97dcfb0df6daa46292a0def8a567822'] = 'Sauvegardez la base de données, les fichiers de sauvegarde et faire la mise en un clic pardi !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a60ab62ed99ef0358b2efae592be0cdd'] = 'Mettre à jour PrestaShop Maintenant !'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_48c7c41b72e1d678923ce3571aa65b2d'] = 'Etape'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_eeb5a49c38d2d8c2baa51ed09beccf88'] = 'Etape de mise à jour'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_c5d769685704e7ddcd70e74a6ebe50b7'] = 'Votre configuration actuelle n\'autorise pas la mise à jour.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_7f786b903ea8045f5b5b7e3c5a4e0385'] = 'Cette fonction est expérimentale. Il est hautement recommandé de faire une sauvegarde de vos fichiers et de votre base de données avant de commencer le processus de mise à jour.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_3a3a651c9a67bca9ac902da789466b93'] = 'Mise à jour instable'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a22eff458b4f4bce6d3232e367ff0138'] = 'Votre configuration actuelle indique que vous voulez mettre à jour votre système à partir d\'une branche de développement instable, sans numéro de version. Si vous mettez à jour, vous ne pourrez plus appliquer le processus de versions stables officiel.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_dae8ace18bdcbcc6ae5aece263e14fe8'] = 'Options'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_c747916b25dcb02e0e81ee84dbd966ea'] = 'Vous n\'avez pas besoin d\'utiliser cette fonctionnalité.'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6b3930a184368a458be6e4429f409877'] = 'Mise à jour terminée. Vérifiez votre boutique (essayez de faire une commande, vérifier le thème)'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_91195bbbacc2147a736c849c46368ed8'] = 'Voulez vous restaurer votre boutique'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_a498f9476a893d51ee02b3601678d318'] = 'Cliquez pour restaurer la base de donnée'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_f34d5debb2bba76aa3e077937a07e373'] = 'Cliquez pour restaurer les fichiers'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_60283aa37e2063b2ada2f99216e1332a'] = 'Votre serveur ne peut pas télécharger le fichier. S\'il vous plaît le télécharger d\'abord par ftp dans votre répertoire admin/autoupgrade'; +$_MODULE['<{autoupgrade}prestashop>adminselfupgrade_6ef7ebe46f6d16cdbf9e2169e3dd048e'] = 'Allez manuellement au bouton restaurer'; diff --git a/modules/blocklayered/blocklayered.js b/modules/blocklayered/blocklayered.js index 46de9e745..7eb2f2189 100644 --- a/modules/blocklayered/blocklayered.js +++ b/modules/blocklayered/blocklayered.js @@ -46,6 +46,13 @@ $(document).ready(function() reloadContent(); }); + $("label a").live({ + click: function() { + $(this).parent().parent().find('input').click(); + reloadContent(); + return false; + } + }); paginationButton(); reloadContent(); }); @@ -179,22 +186,3 @@ function reloadContent(params_plus) }); ajaxQueries.push(ajaxQuery); } - -/* -function initSlider(type, min, max, values, unit) -{ - $('#layered_'+type+'_slider').slider({ - range: true, - min: min, - max: max, - values: [ values[0], values[1]], - slide: function( event, ui ) { - $('#layered_'+type+'_range').html(ui.values[ 0 ] + unit + ' - ' + ui.values[ 1 ] + unit); - }, - stop: function () { - reloadContent(); - } - }); - $('#layered_'+type+'_range').html($('#layered_'+type+'_slider').slider('values', 0 ) +unit+'-'+$('#layered_'+type+'_slider').slider('values', 1)+unit ); -} -*/ diff --git a/modules/blocklayered/blocklayered.php b/modules/blocklayered/blocklayered.php index 14e67219e..b6334dd63 100644 --- a/modules/blocklayered/blocklayered.php +++ b/modules/blocklayered/blocklayered.php @@ -49,8 +49,10 @@ class BlockLayered extends Module public function install() { - if ($result = parent::install() AND $this->registerHook('leftColumn') AND $this->registerHook('header') AND $this->registerHook('footer') - AND $this->registerHook('categoryAddition') AND $this->registerHook('categoryUpdate') AND $this->registerHook('categoryDeletion')) + if ($result = parent::install() && $this->registerHook('leftColumn') && $this->registerHook('header') && $this->registerHook('footer') + && $this->registerHook('categoryAddition') && $this->registerHook('categoryUpdate') && $this->registerHook('attributeGroupForm') + && $this->registerHook('afterSaveAttributeGroup') && $this->registerHook('afterDeleteAttributeGroup') && $this->registerHook('featureForm') + && $this->registerHook('afterDeleteFeature') && $this->registerHook('afterSaveFeature') && $this->registerHook('categoryDeletion')) { Configuration::updateValue('PS_LAYERED_HIDE_0_VALUES', 0); Configuration::updateValue('PS_LAYERED_SHOW_QTIES', 1); @@ -60,6 +62,7 @@ class BlockLayered extends Module } self::_installPriceIndexTable(); + self::_installFriendlyUrlTable(); return $result; } @@ -75,30 +78,149 @@ class BlockLayered extends Module private function _installPriceIndexTable() { - Db::getInstance()->execute(' - DROP TABLE IF EXISTS `'._DB_PREFIX_.'price_static_index`; - '); - Db::getInstance()->execute(' + Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'price_static_index`'); + + Db::getInstance()->Execute(' CREATE TABLE `'._DB_PREFIX_.'price_static_index` ( - `id_product` INT NOT NULL, - `id_currency` INT NOT NULL, - `price_min` INT NOT NULL, - `price_max` INT NOT NULL, - PRIMARY KEY (`id_product`, `id_currency`), - INDEX `id_currency` (`id_currency`), - INDEX `price_min` (`price_min`), - INDEX `price_max` (`price_max`) - ) - ENGINE = '._MYSQL_ENGINE_.'; - '); + `id_product` INT NOT NULL, `id_currency` INT NOT NULL, + `price_min` INT NOT NULL, `price_max` INT NOT NULL, + PRIMARY KEY (`id_product`, `id_currency`), INDEX `id_currency` (`id_currency`), + INDEX `price_min` (`price_min`), INDEX `price_max` (`price_max`)) ENGINE = '._MYSQL_ENGINE_); } + private function _installFriendlyUrlTable() + { + Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'layered_friendly_url`'); + + Db::getInstance()->Execute(' + CREATE TABLE `'._DB_PREFIX_.'layered_friendly_url` ( + `id_layered_friendly_url` INT NOT NULL AUTO_INCREMENT, + `url_key` varchar(32) NOT NULL, + `data` varchar(200) NOT NULL, + PRIMARY KEY (`id_layered_friendly_url`)) ENGINE = '._MYSQL_ENGINE_); + + Db::getInstance()->Execute('CREATE INDEX `url_key` ON `'._DB_PREFIX_.'layered_friendly_url`(url_key(5))'); + } + + private function _installIndexableAttributeTable() + { + Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'layered_indexable_attribute_group`'); + Db::getInstance()->Execute(' + CREATE TABLE `'._DB_PREFIX_.'layered_indexable_attribute_group` ( + `id_attribute_group` INT NOT NULL, + `indexable` BOOL NOT NULL DEFAULT 0, + PRIMARY KEY (`id_attribute_group`)) ENGINE = '._MYSQL_ENGINE_); + + Db::getInstance()->Execute('DROP TABLE IF EXISTS `'._DB_PREFIX_.'layered_indexable_feature`'); + Db::getInstance()->Execute(' + CREATE TABLE `'._DB_PREFIX_.'layered_indexable_feature` ( + `id_feature` INT NOT NULL, + `indexable` BOOL NOT NULL DEFAULT 0, + PRIMARY KEY (`id_feature`)) ENGINE = '._MYSQL_ENGINE_); + } + + /* + * Url indexation + */ + static function _indexUrl() + { + + $categories = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT id_category FROM '._DB_PREFIX_.'layered_category GROUP BY id_category'); + + if(!$categories) + return; + + // We want all attributes of each categories + $attributeValuesByCategory = array(); + foreach($categories as $category) + { + $attributeValuesByCategory[(int)$category['id_category']] = array(); + $filters = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT * FROM '._DB_PREFIX_.'layered_category WHERE id_category = '.(int)$category['id_category'].' ORDER BY position ASC'); + if(!$categories) + continue; + } + } + public function hookAfterSaveFeature($params) + { + $idFeature = $params['id_feature']; + + if(!$idFeature) + return; + if(Tools::getValue('layered_indexable') === false) + return; + + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_indexable_feature WHERE id_feature = '.(int)$idFeature); + Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'layered_indexable_feature VALUES ('.(int)$idFeature.', '.(int)Tools::getValue('layered_indexable').')'); + } + public function hookAfterDeleteFeature($params) + { + $idFeature = $params['id_feature']; + + if(!$idFeature) + return; + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_indexable_feature WHERE id_feature = '.(int)$idFeature); + } + + public function hookAfterSaveAttributeGroup($params) + { + $idAttributeGroup = $params['id_attribute_group']; + + if(!$idAttributeGroup) + return; + if(Tools::getValue('layered_indexable') === false) + return; + + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_indexable_attribute_group WHERE id_attribute_group = '.(int)$idAttributeGroup); + Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'layered_indexable_attribute_group VALUES ('.(int)$idAttributeGroup.', '.(int)Tools::getValue('layered_indexable').')'); + } + public function hookAfterDeleteAttributeGroup($params) + { + $idAttributeGroup = $params['id_attribute_group']; + + if(!$idAttributeGroup) + return; + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'layered_indexable_attribute_group WHERE id_attribute_group = '.(int)$idAttributeGroup); + } + + public function hookAttributeGroupForm($params) + { + $idAttributeGroup = $params['id_attribute_group']; + $on = (bool)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_attribute_group WHERE id_attribute_group = '.(int)$idAttributeGroup); + + return ' +
    + + + + +

    '.$this->l('Use this attribute in url generated by the module block layered navigation').'

    +
    '; + } + + public function hookFeatureForm($params) + { + $this->registerHook('afterDeleteFeature'); + $this->registerHook('afterSaveFeature'); + $idAttributeGroup = $params['id_attribute_group']; + $on = (bool)Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('SELECT indexable FROM '._DB_PREFIX_.'layered_indexable_attribute_group WHERE id_attribute_group = '.(int)$idAttributeGroup); + + return ' +
    + + + + +

    '.$this->l('Use this feature in url generated by the module block layered navigation').'

    +
    '; + } + + /* * $cursor $cursor in order to restart indexing from the last state */ public static function fullIndexProcess($cursor = 0, $ajax = false, $smart = false) { - if ($cursor == 0 && !$smart) + if ($cursor == 0 AND !$smart) self::_installPriceIndexTable(); return self::_indexer($cursor, true, $ajax, $smart); @@ -174,7 +296,7 @@ class BlockLayered extends Module else $query = ' SELECT p.id_product - FROM `'._DB_PREFIX_.'product` as p + FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'price_static_index` psi ON (psi.id_product = p.id_product) WHERE `active` = 1 AND psi.id_product is null ORDER by id_product LIMIT 0,'.(int)$length; @@ -190,7 +312,9 @@ class BlockLayered extends Module static $groups = null; if (is_null($groups)) - $groups = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT id_group FROM `'._DB_PREFIX_.'group_reduction`'); + $groups = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT id_group FROM `'._DB_PREFIX_.'group_reduction`'); + if(!$groups) + $groups = array(); static $currencyList = null; if (is_null($currencyList)) @@ -199,13 +323,12 @@ class BlockLayered extends Module $minPrice = array(); $maxPrice = array(); - if ($smart) Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'price_static_index` WHERE `id_product` = '.(int)$idProduct); $maxTaxRate = Db::getInstance()->getValue(' - SELECT max(t.rate) as max_rate - FROM `'._DB_PREFIX_.'product` as p + SELECT max(t.rate) max_rate + FROM `'._DB_PREFIX_.'product` p LEFT JOIN `'._DB_PREFIX_.'tax_rules_group` trg ON (trg.id_tax_rules_group = p.id_tax_rules_group) LEFT JOIN `'._DB_PREFIX_.'tax_rule` tr ON (tr.id_tax_rules_group = trg.id_tax_rules_group) LEFT JOIN `'._DB_PREFIX_.'tax` t ON (t.id_tax = tr.id_tax AND t.active = 1) @@ -236,7 +359,7 @@ class BlockLayered extends Module $maxPrice[$currency['id_currency']] = $price; if ($price == 0) continue; - if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']]) + if (is_null($minPrice[$currency['id_currency']]) OR $price < $minPrice[$currency['id_currency']]) $minPrice[$currency['id_currency']] = $price; } @@ -254,7 +377,7 @@ class BlockLayered extends Module $maxPrice[$currency['id_currency']] = $price; if ($price == 0) continue; - if (is_null($minPrice[$currency['id_currency']]) || $price < $minPrice[$currency['id_currency']]) + if (is_null($minPrice[$currency['id_currency']]) OR $price < $minPrice[$currency['id_currency']]) $minPrice[$currency['id_currency']] = $price; } @@ -467,14 +590,14 @@ class BlockLayered extends Module }); '; $html .= ' - - '.$this->l('Index all missing products.').' + '.$this->l('Index all missing products').'
    - - '.$this->l('Re-build entire index.').' + '.$this->l('Re-build entire index').'

    - '.$this->l('You can set a cron job that will re-build your index using the following URL: ').Tools::getProtocol().Tools::getHttpHost().__PS_BASE_URI__.'modules/blocklayered/blocklayered-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'),0,10).'&full=1 -
    - '.$this->l('A full re-index process must be done each time products are modified. A nightly rebuild is recomanded.').' + '.$this->l('You can set a cron job that will re-build your index using the following URL:').'
    '.Tools::getProtocol().Tools::getHttpHost().__PS_BASE_URI__.'modules/blocklayered/blocklayered-indexer.php'.'?token='.substr(Tools::encrypt('blocklayered/index'), 0, 10).'&full=1 +

    + '.$this->l('A full re-index process must be done each time products are modified. A nightly rebuild is recommended.').' - {/if}
    diff --git a/modules/blocklayered/fr.php b/modules/blocklayered/fr.php index cd1b5e036..29086cbc5 100644 --- a/modules/blocklayered/fr.php +++ b/modules/blocklayered/fr.php @@ -15,10 +15,6 @@ $_MODULE['<{blocklayered}prestashop>blocklayered_4ad0f0fe31d93e0d8dd7a7fc69a7278 $_MODULE['<{blocklayered}prestashop>blocklayered_91e77d047f2496b7ba8c9def96d03324'] = 'Modèle de filtres non trouvé'; $_MODULE['<{blocklayered}prestashop>blocklayered_09da2b6f1217055bb22caa6ea08d9b80'] = 'Navigation à facettes'; $_MODULE['<{blocklayered}prestashop>blocklayered_7c47bdf0ef7a058e0243fd870019f10b'] = 'Une indexation est en cours. Merci de ne pas fermer cette page'; -$_MODULE['<{blocklayered}prestashop>blocklayered_40fc1029eccda234e67e1beff3b228b3'] = 'Indexer tous les produits non-indexé.'; -$_MODULE['<{blocklayered}prestashop>blocklayered_26e424abe001fcfdcc85a2d59bacb567'] = 'Re-construire l\'intégralité de l\'index.'; -$_MODULE['<{blocklayered}prestashop>blocklayered_be8508b58244b20cb0e00ed6afa7f1c8'] = 'Vous pouvez définir une tâche cron pour reconstruire l\'index en utilisant l\'URL suivante:'; -$_MODULE['<{blocklayered}prestashop>blocklayered_61f31fb41a5743e1fff0a97b32e19dc2'] = 'Une ré-indexation complète doit être faite chaque fois qu\'un produit est modifié. Une reconstruction nocturne est recommandé.'; $_MODULE['<{blocklayered}prestashop>blocklayered_a607dc3941415ecea04bb1eb8a978962'] = 'Modèles de filtres existants'; $_MODULE['<{blocklayered}prestashop>blocklayered_9923a3739235561cc50eb9446dc1771e'] = 'modèles de filtres sont configurés :'; $_MODULE['<{blocklayered}prestashop>blocklayered_49ee3087348e8d44e1feda1917443987'] = 'Nom'; diff --git a/modules/ebay/config.xml b/modules/ebay/config.xml index 2b567e23f..504a112c0 100755 --- a/modules/ebay/config.xml +++ b/modules/ebay/config.xml @@ -2,11 +2,7 @@ ebay -<<<<<<< .working - -======= - ->>>>>>> .merge-right.r8342 + diff --git a/modules/ebay/eBayRequest.php b/modules/ebay/eBayRequest.php index 318ace257..14f97c0b1 100755 --- a/modules/ebay/eBayRequest.php +++ b/modules/ebay/eBayRequest.php @@ -1095,9 +1095,9 @@ class eBayRequest $id_product = 0; $id_product_attribute = 0; $quantity = (string)$transaction->QuantityPurchased; - if (isset($transaction->item->SKU)) + if (isset($transaction->Item->SKU)) { - $tmp = explode('-', (string)$transaction->item->SKU); + $tmp = explode('-', (string)$transaction->Item->SKU); if (isset($tmp[1])) $id_product = $tmp[1]; } diff --git a/modules/ebay/ebay.php b/modules/ebay/ebay.php index c364ab0a6..9999f47b8 100755 --- a/modules/ebay/ebay.php +++ b/modules/ebay/ebay.php @@ -59,7 +59,7 @@ class Ebay extends Module { $this->name = 'ebay'; $this->tab = 'market_place'; - $this->version = '1.2.3'; + $this->version = '1.2.4'; $this->author = 'PrestaShop'; parent::__construct (); $this->displayName = $this->l('eBay'); @@ -111,6 +111,14 @@ class Ebay extends Module if (!Configuration::get('EBAY_API_TOKEN')) $this->warning = $this->l('You must register your module on eBay.'); + // Loading Shipping Method + $this->loadShippingMethod(); + } + } + + + public function loadShippingMethod() + { // Shipping methods $this->_shippingMethod = array( 7104 => array('description' => 'Colissimo', 'shippingService' => 'FR_ColiposteColissimo', 'shippingServiceID' => '7104'), @@ -148,7 +156,6 @@ class Ebay extends Module 7109 => array('description' => 'UPS - Standard', 'shippingService' => 'FR_UPSStandard', 'shippingServiceID' => '7109'), ); } - } /******************************************************************/ @@ -515,7 +522,7 @@ class Ebay extends Module // If isset Post Var, post process else display form - if (!empty($_POST) AND Tools::isSubmit('submitSave')) + if (!empty($_POST) && (Tools::isSubmit('submitSave') || Tools::isSubmit('submitSave1') || Tools::isSubmit('submitSave2'))) { $this->_postValidation(); if (!sizeof($this->_postErrors)) @@ -1175,7 +1182,10 @@ class Ebay extends Module // Display Form - $html = ' + $html = ' '; + if (Tools::getValue('section') == 'sync' && Tools::getValue('submitSave1') != '') + $html .= ''; + if (Tools::getValue('section') == 'sync' && Tools::getValue('submitSave2') != '') + $html .= ''; if (Configuration::get('EBAY_SYNC_MODE') == 'B') { @@ -1308,8 +1325,21 @@ class Ebay extends Module $html .= '
    -
    l('products').')" OnClick="return confirm(\''.$this->l('You will push').' \' + nbProducts + \' '.$this->l('products on eBay. Do you want to confirm ?').'\');" type="submit">

    '.$this->l('Beware ! If some of your categories are not multi sku compliant, some of your products may create more than one product on eBay.').'

    + + + + + + + + + + + + +

    '.$this->l('"Sync with eBay" option will only sync the products that are not already sync with eBay : ').'

     

    '.$this->l('"Sync and update with eBay" will sync the products that are not already sync with eBay and update the products already sync with eBay : ').'

    l('products').')" OnClick="return confirm(\''.$this->l('You will push').' \' + nbProducts + \' '.$this->l('products on eBay. Do you want to confirm ?').'\');" type="submit"> l('and update')."\n".'('.$nbProducts.' '.$this->l('products').')" OnClick="return confirm(\''.$this->l('You will push').' \' + nbProducts + \' '.$this->l('products on eBay. Do you want to confirm ?').'\');" type="submit">
    +
    '; @@ -1348,11 +1378,7 @@ class Ebay extends Module public function ajaxProductSync() { - // Take the next product - $where = ''; - if ((int)Configuration::get('EBAY_SYNC_LAST_PRODUCT') > 0) - $where = 'AND `id_product` > '.(int)Configuration::get('EBAY_SYNC_LAST_PRODUCT'); - + $whereOption1 = 'AND `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'ebay_product`)'; if (Configuration::get('EBAY_SYNC_MODE') == 'A') { @@ -1368,8 +1394,8 @@ class Ebay extends Module SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `quantity` > 0 AND `active` = 1 AND `id_category_default` IN (SELECT `id_category` FROM `'._DB_PREFIX_.'ebay_category_configuration` WHERE `id_category` > 0 AND `id_ebay_category` > 0) - AND `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'ebay_product`) - '.$where.' + '.(Tools::getValue('option') == 1 ? $whereOption1 : '').' + AND `id_product` > '.(int)Configuration::get('EBAY_SYNC_LAST_PRODUCT').' ORDER BY `id_product` LIMIT 1'); @@ -1378,8 +1404,8 @@ class Ebay extends Module SELECT COUNT(`id_product`) FROM `'._DB_PREFIX_.'product` WHERE `quantity` > 0 AND `active` = 1 AND `id_category_default` IN (SELECT `id_category` FROM `'._DB_PREFIX_.'ebay_category_configuration` WHERE `id_category` > 0 AND `id_ebay_category` > 0) - AND `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'ebay_product`) - '.$where); + '.(Tools::getValue('option') == 1 ? $whereOption1 : '').' + AND `id_product` > '.(int)Configuration::get('EBAY_SYNC_LAST_PRODUCT')); } else { @@ -1395,8 +1421,8 @@ class Ebay extends Module SELECT `id_product` FROM `'._DB_PREFIX_.'product` WHERE `quantity` > 0 AND `active` = 1 AND `id_category_default` IN (SELECT `id_category` FROM `'._DB_PREFIX_.'ebay_category_configuration` WHERE `id_category` > 0 AND `id_ebay_category` > 0 AND `sync` = 1) - AND `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'ebay_product`) - '.$where.' + '.(Tools::getValue('option') == 1 ? $whereOption1 : '').' + AND `id_product` > '.(int)Configuration::get('EBAY_SYNC_LAST_PRODUCT').' ORDER BY `id_product` LIMIT 1'); @@ -1405,8 +1431,8 @@ class Ebay extends Module SELECT COUNT(`id_product`) FROM `'._DB_PREFIX_.'product` WHERE `quantity` > 0 AND `active` = 1 AND `id_category_default` IN (SELECT `id_category` FROM `'._DB_PREFIX_.'ebay_category_configuration` WHERE `id_category` > 0 AND `id_ebay_category` > 0 AND `sync` = 1) - AND `id_product` NOT IN (SELECT `id_product` FROM `'._DB_PREFIX_.'ebay_product`) - '.$where); + '.(Tools::getValue('option') == 1 ? $whereOption1 : '').' + AND `id_product` > '.(int)Configuration::get('EBAY_SYNC_LAST_PRODUCT')); } // Send each product on eBay @@ -1532,6 +1558,11 @@ class Ebay extends Module $price = round($price, 2); + // Loading Shipping Method + if (!isset($this->_shippingMethod[Configuration::get('EBAY_SHIPPING_CARRIER_ID')]['shippingService'])) + $this->loadShippingMethod(); + + // Generate array and try insert in database $datas = array( 'id_product' => $product->id, diff --git a/modules/ebay/fr.php b/modules/ebay/fr.php index 2f6d6b6c1..ed96f706c 100755 --- a/modules/ebay/fr.php +++ b/modules/ebay/fr.php @@ -62,6 +62,7 @@ $_MODULE['<{ebay}prestashop>ebay_6c09b50ba3b52d0d61fb785adeed1895'] = 'Vous pouv $_MODULE['<{ebay}prestashop>ebay_c01f01fd2bd607cf17ddc2ee584227f8'] = 'Vous devez configurer l\'onglet \"Configuration des catégories\" avant d\'utiliser cet onglet.'; $_MODULE['<{ebay}prestashop>ebay_1cbd8f2b57c85344f755caff03336306'] = 'Synchroniser avec eBay'; $_MODULE['<{ebay}prestashop>ebay_86024cad1e83101d97359d7351051156'] = 'produits'; +$_MODULE['<{ebay}prestashop>ebay_dc11854f70dd95a8c51ae75b05dbd508'] = 'et mettre à jour les produits'; $_MODULE['<{ebay}prestashop>ebay_05aaf6b3c49c3aa6219a1d730ee7988c'] = 'Vous allez maintenant mettre en ligne vos produits sur eBay.'; $_MODULE['<{ebay}prestashop>ebay_3205b263a1a779c2b03cdbac836346f9'] = 'Pour rappel,'; $_MODULE['<{ebay}prestashop>ebay_0eaf4172db11a5d6e914aabe920f0455'] = 'vous ne payez aucun frais d’insertion si vous avez une boutique sur eBay.'; @@ -73,8 +74,10 @@ $_MODULE['<{ebay}prestashop>ebay_4ac5ebfcb9b9d8c87e9ff03ee6bf24e5'] = 'choisir l $_MODULE['<{ebay}prestashop>ebay_054b4f3ea543c990f6b125f41af6ebf7'] = 'Option'; $_MODULE['<{ebay}prestashop>ebay_892db3f832f6fe1a2d04e1e50e65d3ca'] = 'Lorsqu\'un produit est mis à jour, seule sa quantité et son prix sont resynchronisés avec eBay'; $_MODULE['<{ebay}prestashop>ebay_e0626222614bdee31951d84c64e5e9ff'] = 'Sélection'; +$_MODULE['<{ebay}prestashop>ebay_6d371302939f2bba5daf55544efb956f'] = 'Attention ! Si certaines de vos catégories ne sont pas compatibles multi sku, certains de vos produits peuvent créer plus d\'une fiche produit sur eBay.'; +$_MODULE['<{ebay}prestashop>ebay_d446b6fd9d0b61470108b86e7bbf4b08'] = '\"Synchroniser avec eBay\" ne synchronisera seulement que les produits qui n\'ont pas encore été synchronisés avec eBay :'; +$_MODULE['<{ebay}prestashop>ebay_03e982083919ab970387bf623f798717'] = '\"Synchroniser avec eBay et mettre à jour les produits\" synchronisera les produits qui n\'ont pas encore été synchronisés avec eBay et mettra à jour les produits qui ont déjà été synchronisés :'; $_MODULE['<{ebay}prestashop>ebay_caab0e2c2f3ae0d242b0b36f22d9acc5'] = 'Vous allez mettre en ligne'; $_MODULE['<{ebay}prestashop>ebay_70b240eb3db5174e1c9520cabe2ae781'] = 'produits sur eBay. Voulez-vous confirmer ?'; -$_MODULE['<{ebay}prestashop>ebay_6d371302939f2bba5daf55544efb956f'] = 'Attention ! Si certaines de vos catégories ne sont pas compatibles multi sku, certains de vos produits peuvent créer plus d\'une fiche produit sur eBay.'; $_MODULE['<{ebay}prestashop>ebay_547c708291fe196592dd1e4db7b206a5'] = 'produit(s) mis en ligne sur eBay'; $_MODULE['<{ebay}prestashop>ebay_1761efb946aa43c14af989665dae691a'] = 'Produit(s) concerné(s)'; diff --git a/modules/mailalerts/fr.php b/modules/mailalerts/fr.php index 59fef5615..91f0ead1d 100644 --- a/modules/mailalerts/fr.php +++ b/modules/mailalerts/fr.php @@ -36,7 +36,7 @@ $_MODULE['<{mailalerts}prestashop>myalerts_f2a6c498fb90ee345d997f888fce3b18'] = $_MODULE['<{mailalerts}prestashop>myalerts_074c07016d3e5a9f011aa8e62abe4517'] = 'Vous n\'avez souscrit à aucune alerte.'; $_MODULE['<{mailalerts}prestashop>myalerts_0b3db27bc15f682e92ff250ebb167d4b'] = 'Retour à votre compte'; $_MODULE['<{mailalerts}prestashop>myalerts_8cf04a9734132302f96da8e113e80ce5'] = 'Accueil'; +$_MODULE['<{mailalerts}prestashop>product_67135a14d3ac4f1369633dd006d6efec'] = 'votre@email.com'; $_MODULE['<{mailalerts}prestashop>product_61172eb93737ebf095d3fa02119ce1df'] = 'Demande de notification enregistrée'; $_MODULE['<{mailalerts}prestashop>product_900f8551b29793ecb604a545b2059cc1'] = 'Votre adresse e-mail est invalide'; -$_MODULE['<{mailalerts}prestashop>product_67135a14d3ac4f1369633dd006d6efec'] = 'votre@email.com'; $_MODULE['<{mailalerts}prestashop>product_546e02eaa9a986c83cc347e273269f2c'] = 'Prévenez-moi lorsque le produit est disponible'; diff --git a/modules/mondialrelay/fr.php b/modules/mondialrelay/fr.php index 255b89ae3..bdbd272fa 100755 --- a/modules/mondialrelay/fr.php +++ b/modules/mondialrelay/fr.php @@ -48,12 +48,10 @@ $_MODULE['<{mondialrelay}prestashop>mondialrelay_cb5e100e5a9a3e7f6d1fd9751221528 $_MODULE['<{mondialrelay}prestashop>mondialrelay_350c1cc4343826a89f08a33bb49c6d98'] = 'Configuration du Module Mondial Relay'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_d21a9f93917604d5490ad529a7cf1ff9'] = 'Pour créer un transporteur Mondial Relay'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_c6a2e6af5fff47adb3afd780b97d9b4b'] = 'Remplissez et sauvegarder vos paramètres Mondial Relay'; -$_MODULE['<{mondialrelay}prestashop>mondialrelay_abfc836cd1df9d6d2bdfd2fc98e6fa93'] = 'Créez un transporteur'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_b962d8fb95f5a439f50502152f3bad71'] = 'Definissez un prix pour votre transporteur sur'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_faf1247ae6846a9955a466d4f301bbe4'] = 'La page Transporteurs'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_10d78806b84b97ebc774e9f6277af6ac'] = 'Pour générer vos étiquettes, vous devez avoir enregistré une adresse valide de votre boutique sur votre'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_af5efea250326c1c34d69aa9364b482c'] = 'page contact'; -$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL de la tache CRON à lancer pour la mise à jour des statuts de commandes'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_362dff77f7403550e886db901404856c'] = 'Suppression effectuée'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_66661dacf33146201b60dc16520ddd68'] = 'Ajouter un transporteur'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_b651efdb98a5d6bd2b3935d0c3f4a5e2'] = 'Champ obligatoire'; @@ -81,9 +79,10 @@ $_MODULE['<{mondialrelay}prestashop>mondialrelay_907eba32d950bfab68227fd7ea22999 $_MODULE['<{mondialrelay}prestashop>mondialrelay_0c24ec05a02c710cedd400e3680d8b81'] = 'Liste des tranporteurs'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_14039af96b01e718a9c9d9c1259b6472'] = 'Aucun transporteur créé'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_8596361cec00f8d2438d264827eee737'] = 'Modification de la configuration'; -$_MODULE['<{mondialrelay}prestashop>mondialrelay_759e1f68a70bbe8c48eb30fa4b512de8'] = 'Il semblerait que vous venez de mettre à jour Mondial Relay sans avoir réinitialisé le module : il est requis de configurer les champs ci-dessous afin de pouvoir générer les étiquettes'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_9ffc3ccc968a96d902af963c6d7b4e97'] = 'Paramètres avancés'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_1d1d57f5840e1da871622295ba206b30'] = 'Cliquez pour afficher / cacher les options'; +$_MODULE['<{mondialrelay}prestashop>mondialrelay_fcf5b2122da1d5a5f5c7253b96a3f9d9'] = 'URL de la tache CRON à lancer pour la mise à jour des statuts de commandes'; +$_MODULE['<{mondialrelay}prestashop>mondialrelay_759e1f68a70bbe8c48eb30fa4b512de8'] = 'Il semblerait que vous venez de mettre à jour Mondial Relay sans avoir réinitialisé le module : il est requis de configurer les champs ci-dessous afin de pouvoir générer les étiquettes'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_bbd9bc77f1f5b6a9edce6db062b607c9'] = 'Cette partie permet de réécrire les données envoyées à Mondial Relay lorsque vous lancez le processus de génération de tickets. Certains champs sont assez restrictifs en terme de longueur ou de caractères utilisés.'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_9127fe218b2cac7f0c8aecd7016a891d'] = 'Nom de la boutique'; $_MODULE['<{mondialrelay}prestashop>mondialrelay_7e9bbecd32836500b557db33c3b3e93b'] = 'La clé utilisée par Mondialrelay est'; diff --git a/modules/shopimporter/fr.php b/modules/shopimporter/fr.php index adedcc9b8..19172428b 100644 --- a/modules/shopimporter/fr.php +++ b/modules/shopimporter/fr.php @@ -60,14 +60,6 @@ $_MODULE['<{shopimporter}prestashop>shopimporter_60474e812295a5adc371de63dc62a16 $_MODULE['<{shopimporter}prestashop>shopimporter_05f4be265d59ea66f3a1fb12ba103583'] = 'Choisir un import'; $_MODULE['<{shopimporter}prestashop>shopimporter_961f2247a2070bedff9f9cd8d64e2650'] = 'Choisir'; $_MODULE['<{shopimporter}prestashop>shopimporter_151a0fbfcc4894aa53335091c2512de5'] = 'Aucun module d\'import installé'; -$_MODULE['<{shopimporter}prestashop>shopimporter_9aa1b03934893d7134a660af4204f2a9'] = 'Serveur'; -$_MODULE['<{shopimporter}prestashop>shopimporter_770b2f7556eecbe5000cfcbddc9f9885'] = '(Ex: mysql.mydomain.com)'; -$_MODULE['<{shopimporter}prestashop>shopimporter_8f9bfe9d1345237cb3b2b205864da075'] = 'Utilisateur'; -$_MODULE['<{shopimporter}prestashop>shopimporter_dc647eb65e6711e155375218212b3964'] = 'Mot de passe'; -$_MODULE['<{shopimporter}prestashop>shopimporter_14ae0ea02f571a833786d13d9ca6a897'] = '(Le mot de passe peut être vide)'; -$_MODULE['<{shopimporter}prestashop>shopimporter_e307db07b3975fef922a80d07455ee5e'] = 'Base de données'; -$_MODULE['<{shopimporter}prestashop>shopimporter_dac130bdd2c5492a8108a4145bd9f04a'] = 'Prefix de base de données'; -$_MODULE['<{shopimporter}prestashop>shopimporter_6bdc02625540b5264cffe801c37a82dd'] = '(Le préfixe est optionnel. Si tous vos tables de base de données commencent par \"pref_\", le préfixe est \"pref_\")'; $_MODULE['<{shopimporter}prestashop>shopimporter_2bb4cbbf4c51025867d47131e79ad05f'] = 'Etape suivante'; $_MODULE['<{shopimporter}prestashop>shopimporter_72dd98a453e92ccc01697f29bb5dbeb9'] = 'Option d\'import'; $_MODULE['<{shopimporter}prestashop>shopimporter_9dfc5d5738312210c3c75e68a468691d'] = 'Options avancées '; diff --git a/modules/uspscarrier/fr.php b/modules/uspscarrier/fr.php index 0e0030e74..8720c1a38 100644 --- a/modules/uspscarrier/fr.php +++ b/modules/uspscarrier/fr.php @@ -2,7 +2,6 @@ global $_MODULE; $_MODULE = array(); -$_MODULE['<{uspscarrier}prestashop>uspscarrier_5947e2ae63c0a33524cf81c44a1db580'] = 'Transporteur USPS'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_098087ab799def1028233142cafeeafd'] = 'Propose à vos clients le transporteur USPS (US Postal)'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_883fa0069f4b0454e2277dd567ab3991'] = '\'Unité de poids (LB ou KG)\''; $_MODULE['<{uspscarrier}prestashop>uspscarrier_5a3ceec65d417f5d92c26dbf0dccc00d'] = '\'Unité de mesure (CM ou IN)\''; @@ -28,6 +27,7 @@ $_MODULE['<{uspscarrier}prestashop>uspscarrier_f8320b26d30ab433c5a54546d21f414c' $_MODULE['<{uspscarrier}prestashop>uspscarrier_f827cf462f62848df37c5e1e94a4da74'] = 'True'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_386aad80d82f8245e9ef80352a2240e8'] = 'Tous les articles en un seul paquet'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_f35eb2a913a3fd6fd8e661012cf0ebd8'] = 'Découper un article par paquet'; +$_MODULE['<{uspscarrier}prestashop>uspscarrier_5947e2ae63c0a33524cf81c44a1db580'] = 'Transporteur USPS'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_f57cff5425b6e64843c5f066c5b310d0'] = 'Statut du module USPS'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_09bdd414ce843927aa3dceadc8bce034'] = 'Le transporteur USPS est fonctionnel !'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_ec8b84c83dfee20afa4c2f35245a254b'] = 'Le transporteur USPS n\'est pas encore complètement configuré, vous devez :'; @@ -69,8 +69,6 @@ $_MODULE['<{uspscarrier}prestashop>uspscarrier_8d2ee0603dfce09b57d60db628cde269' $_MODULE['<{uspscarrier}prestashop>uspscarrier_795de10b1bdcb843b3703c63ad577fc6'] = 'Choisissez le type de paquet par défaut'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_93c8645dbbc33cf8d126266a827a5501'] = 'Machinable'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_67cd0f5256c40c16a6cfd6effe3ab06b'] = 'Choisissez si cela peut être traité par une machine ou non par défaut'; -$_MODULE['<{uspscarrier}prestashop>uspscarrier_8d6bd50f3fe3ee2f4513066c25e5fb4a'] = 'Mode de calcul'; -$_MODULE['<{uspscarrier}prestashop>uspscarrier_3169c5057093f8e6c2750f1949a0900d'] = 'Utiliser la méthode de calcul \"Tous les produits dans un colis\" utilisera automatiquement la taille de colis, le type de colis et les services de livraison par défaut. Les configurations spécifiques des catégories et des produits ne seront pas utilisés.'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_5cdd307ba6e260beb4801c0c10e22a3a'] = 'Service de livraison'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_78945de8de090e90045d299651a68a9b'] = 'Disponible'; $_MODULE['<{uspscarrier}prestashop>uspscarrier_2d25c72c1b18e562f6654fff8e11711e'] = 'Non disponible';