// Merge -> revision 8952

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@8957 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
rMalie
2011-10-03 09:14:01 +00:00
parent f1e265fad4
commit ef17d0b7da
44 changed files with 622 additions and 366 deletions
+5 -2
View File
@@ -535,8 +535,11 @@ if (Tools::isSubmit('loadImportMatchs'))
if (Tools::isSubmit('toggleScreencast')) if (Tools::isSubmit('toggleScreencast'))
{ {
$context->employee->show_screencast = (int)(!(bool)$context->employee->show_screencast); if (Validate::isLoadedObject($context->employee))
$context->employee->save(); {
$context->employee->bo_show_screencast = !$context->employee->bo_show_screencast;
$context->employee->update();
}
} }
if (Tools::isSubmit('helpAccess')) if (Tools::isSubmit('helpAccess'))
+1 -1
View File
@@ -43,5 +43,5 @@ $smtpPort = $_GET['smtpPort'];
$smtpEncryption = $_GET['smtpEnc']; $smtpEncryption = $_GET['smtpEnc'];
$result = Mail::sendMailTest(Tools::htmlentitiesUTF8($smtpChecked), Tools::htmlentitiesUTF8($smtpServer), Tools::htmlentitiesUTF8($content), Tools::htmlentitiesUTF8($subject), Tools::htmlentitiesUTF8($type), Tools::htmlentitiesUTF8($to), Tools::htmlentitiesUTF8($from), Tools::htmlentitiesUTF8($smtpLogin), Tools::htmlentitiesUTF8($smtpPassword), Tools::htmlentitiesUTF8($smtpPort), Tools::htmlentitiesUTF8($smtpEncryption)); $result = Mail::sendMailTest(Tools::htmlentitiesUTF8($smtpChecked), Tools::htmlentitiesUTF8($smtpServer), Tools::htmlentitiesUTF8($content), Tools::htmlentitiesUTF8($subject), Tools::htmlentitiesUTF8($type), Tools::htmlentitiesUTF8($to), Tools::htmlentitiesUTF8($from), Tools::htmlentitiesUTF8($smtpLogin), Tools::htmlentitiesUTF8($smtpPassword), Tools::htmlentitiesUTF8($smtpPort), Tools::htmlentitiesUTF8($smtpEncryption));
die($result ? 'ok' : 'fail'); die($result === true ? 'ok' : $result);
+1 -4
View File
@@ -257,10 +257,7 @@ class AdminCarts extends AdminTab
if (is_array($customizedDatas) AND isset($customizedDatas[(int)($product['id_product'])][(int)($product['id_product_attribute'])])) if (is_array($customizedDatas) AND isset($customizedDatas[(int)($product['id_product'])][(int)($product['id_product_attribute'])]))
{ {
if (isset($image['id_image'])) if ($image = new Image($image['id_image']))
$image = new Image($image['id_image']);
else
$image = new Image();
echo ' echo '
<tr> <tr>
<td align="center">'.($image->id ? cacheImage(_PS_IMG_DIR_.'p/'.$image->getExistingImgPath().'.jpg', <td align="center">'.($image->id ? cacheImage(_PS_IMG_DIR_.'p/'.$image->getExistingImgPath().'.jpg',
+8
View File
@@ -152,6 +152,14 @@ class AdminEmployees extends AdminTab
<input type="radio" name="bo_uimode" id="uimode_off" value="click" '.($this->getFieldValue($obj, 'bo_uimode') == 'click' ? 'checked="checked" ' : '').'/> <input type="radio" name="bo_uimode" id="uimode_off" value="click" '.($this->getFieldValue($obj, 'bo_uimode') == 'click' ? 'checked="checked" ' : '').'/>
<label class="t" for="uimode_off">'.$this->l('Click on tabs').'</label> <label class="t" for="uimode_off">'.$this->l('Click on tabs').'</label>
</div><div class="clear">&nbsp;</div> </div><div class="clear">&nbsp;</div>
<label>'.$this->l('Show screencast:').' </label>
<div class="margin-form">
<input type="radio" name="bo_show_screencast" id="bo_show_screencast_on" value="1" '.($this->getFieldValue($obj, 'bo_show_screencast') ? 'checked="checked" ' : '').'/>
<label class="t" for="active_on"> <img src="../img/admin/enabled.gif" alt="'.$this->l('Enabled').'" title="'.$this->l('Enabled').'" /></label>
<input type="radio" name="bo_show_screencast" id="bo_show_screencast_off" value="0" '.(!$this->getFieldValue($obj, 'bo_show_screencast') ? 'checked="checked" ' : '').'/>
<label class="t" for="active_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Disabled').'" title="'.$this->l('Disabled').'" /></label>
<p>'.$this->l('Show the welcome video on the dashbord of the back office').'</p>
</div>
<label>'.$this->l('Status:').' </label> <label>'.$this->l('Status:').' </label>
<div class="margin-form"> <div class="margin-form">
<input type="radio" name="active" id="active_on" value="1" '.($this->getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/> <input type="radio" name="active" id="active_on" value="1" '.($this->getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/>
+9 -2
View File
@@ -101,6 +101,9 @@ class AdminImport extends AdminTab
'image_position' => array('label' => $this->l('Image position'), 'image_position' => array('label' => $this->l('Image position'),
'help' => $this->l('Position of the product image to use for this combination. If you use this field, leave image URL empty.')), 'help' => $this->l('Position of the product image to use for this combination. If you use this field, leave image URL empty.')),
'image_url' => array('label' => $this->l('Image URL')), 'image_url' => array('label' => $this->l('Image URL')),
'delete_existing_images' => array(
'label' => $this->l('Delete existing images (0 = no, 1 = yes)'),
'help' => $this->l('If you do not specify this column and you specify the column images, all images of the product will be replaced by those specified in the import file')),
); );
self::$default_values = array( self::$default_values = array(
@@ -475,8 +478,7 @@ class AdminImport extends AdminTab
$path = _PS_CAT_IMG_DIR_.(int)($id_entity); $path = _PS_CAT_IMG_DIR_.(int)($id_entity);
break; break;
} }
if (copy(str_replace(' ', '%20', trim($url)), $tmpfile))
if (copy(trim($url), $tmpfile))
{ {
imageResize($tmpfile, $path.'.jpg'); imageResize($tmpfile, $path.'.jpg');
$imagesTypes = ImageType::getImagesTypes($entity); $imagesTypes = ImageType::getImagesTypes($entity);
@@ -938,6 +940,11 @@ class AdminImport extends AdminTab
$product = new Product((int)($info['id_product']), false, $defaultLanguage); $product = new Product((int)($info['id_product']), false, $defaultLanguage);
$id_image = null; $id_image = null;
//delete existing images if "delete_existing_images" is set to 1
if (array_key_exists('delete_existing_images', $info) && $info['delete_existing_images'])
$product->deleteImages();
elseif (array_key_exists('image_url', $info))
$product->deleteImages();
if (isset($info['image_url']) && $info['image_url']) if (isset($info['image_url']) && $info['image_url'])
{ {
+1
View File
@@ -446,6 +446,7 @@ class AdminPerformance extends AdminTab
</select> </select>
</div> </div>
<div id="directory_depth"> <div id="directory_depth">
<div class="warn">'.$this->l('The system CacheFS should be used only when the infrastructure contain only one front-end server. Ask your hosting company if you don\'t know.').'</div>
<label>'.$this->l('Directory depth:').' </label> <label>'.$this->l('Directory depth:').' </label>
<div class="margin-form"> <div class="margin-form">
<input type="text" name="ps_cache_fs_directory_depth" value="'.($depth ? $depth : 1).'" /> <input type="text" name="ps_cache_fs_directory_depth" value="'.($depth ? $depth : 1).'" />
+25 -71
View File
@@ -74,53 +74,6 @@ class AdminScenes extends AdminTab
return true; return true;
} }
/**
* Build a categories tree
*
* @param array $indexedCategories Array with categories where product is indexed (in order to check checkbox)
* @param array $categories Categories to list
* @param array $current Current category
* @param integer $id_category Current category id
*/
public function recurseCategoryForInclude($indexedCategories, $categories, $current, $id_category = 1, $id_category_default = NULL, $has_suite = array())
{
global $done;
static $irow;
$id_obj = (int)(Tools::getValue($this->id));
if (!isset($done[$current['infos']['id_parent']]))
$done[$current['infos']['id_parent']] = 0;
$done[$current['infos']['id_parent']] += 1;
$todo = sizeof($categories[$current['infos']['id_parent']]);
$doneC = $done[$current['infos']['id_parent']];
$level = $current['infos']['level_depth'] + 1;
echo '
<tr class="'.($irow++ % 2 ? 'alt_row' : '').'">
<td>
<input type="checkbox" name="categories[]" class="categoryBox'.($id_category_default == $id_category ? ' id_category_default' : '').'" id="categoryBox_'.$id_category.'" value="'.$id_category.'"'.((in_array($id_category, $indexedCategories) OR ((int)(Tools::getValue('id_category')) == $id_category AND !(int)($id_obj))) ? ' checked="checked"' : '').' />
</td>
<td>
'.$id_category.'
</td>
<td>';
for ($i = 2; $i < $level; $i++)
echo '<img src="../img/admin/lvl_'.$has_suite[$i - 2].'.gif" alt="" style="vertical-align: middle;"/>';
echo '<img src="../img/admin/'.($level == 1 ? 'lv1.gif' : 'lv2_'.($todo == $doneC ? 'f' : 'b').'.gif').'" alt="" style="vertical-align: middle;"/> &nbsp;
<label for="categoryBox_'.$id_category.'" class="t">'.stripslashes($current['infos']['name']).'</label></td>
</tr>';
if ($level > 1)
$has_suite[] = ($todo == $doneC ? 0 : 1);
if (isset($categories[$id_category]))
foreach ($categories[$id_category] AS $key => $row)
if ($key != 'infos')
$this->recurseCategoryForInclude($indexedCategories, $categories, $categories[$id_category][$key], $key, $id_category_default, $has_suite);
}
public function displayForm($isMainTab = true) public function displayForm($isMainTab = true)
{ {
parent::displayForm(); parent::displayForm();
@@ -223,29 +176,23 @@ class AdminScenes extends AdminTab
echo '</div> echo '</div>
'; ';
echo '<label>'.$this->l('Category:').' </label> $selectedCat = array();
<div class="margin-form"> if (Tools::isSubmit('categories'))
<div style="overflow: auto; max-height: 300px; padding-top: 0.6em;" id="categoryList"> foreach (Tools::getValue('categories') as $k => $row)
<table cellspacing="0" cellpadding="0" class="table" style="width: 600px;"> $selectedCat[] = $row;
<tr> else if ($obj->id)
<th><input type="checkbox" name="checkme" class="noborder" onclick="checkDelBoxes(this.form, \'categories[]\', this.checked)" /></th> foreach (Scene::getIndexedCategories($obj->id) as $k => $row)
<th>'.$this->l('ID').'</th> $selectedCat[] = $row['id_category'];
<th>'.$this->l('Image map name:').'</th>
</tr>'; $trads = array(
$categories = Category::getCategories($this->context->language->id, false); 'Home' => $this->l('Home'),
$done = array(); 'selected' => $this->l('selected'),
$index = array(); 'Collapse All' => $this->l('Collapse All'),
if (Tools::isSubmit('categories')) 'Expand All' => $this->l('Expand All'),
foreach (Tools::getValue('categories') AS $k => $row) 'Check All' => $this->l('Check All'),
$index[] = $row; 'Uncheck All' => $this->l('Uncheck All')
elseif ($obj->id) );
foreach (Scene::getIndexedCategories($obj->id) AS $k => $row)
$index[] = $row['id_category'];
$this->recurseCategoryForInclude($index, $categories, $categories[0][1], 1, null);
echo '</table>
<p style="padding:0px; margin:0px 0px 10px 0px;">'.$this->l('Mark all checkbox(es) of the categories for which the image map is to appear.').'<sup> *</sup></p>
</div>
</div>';
if (Shop::isMultiShopActivated()) if (Shop::isMultiShopActivated())
{ {
echo '<label>'.$this->l('Shop association:').'</label><div class="margin-form">'; echo '<label>'.$this->l('Shop association:').'</label><div class="margin-form">';
@@ -253,9 +200,16 @@ class AdminScenes extends AdminTab
echo '</div>'; echo '</div>';
} }
echo ' echo '
<label>'.$this->l('Categories:').'</label>
<div class="margin-form">
';
echo Helper::renderAdminCategorieTree($trads, $selectedCat, 'categories');
echo '
</div>
<div id="save_scene" class="margin-form" '.(($obj->id && file_exists(_PS_SCENE_IMG_DIR_.$obj->id.'-large_scene.jpg')) ? '' : 'style="display:none;"') .'> <div id="save_scene" class="margin-form" '.(($obj->id && file_exists(_PS_SCENE_IMG_DIR_.$obj->id.'-large_scene.jpg')) ? '' : 'style="display:none;"') .'>
<input type="submit" name="save_image_map" value="'.$this->l('Save Image Map(s)').'" class="button" /> <input type="submit" name="save_image_map" value="'.$this->l('Save Image Map(s)').'" class="button" />
</div>'; </div>
';
} }
else else
{ {
+1 -1
View File
@@ -9,7 +9,7 @@
<p>{l s ='To receive PrestaShop update warnings, you need to activate the <b>allow_url_fopen</b> command in your <b>php.ini</b> config file.'} [<a href="http://www.php.net/manual/'.$isoUser.'/ref.filesystem.php">{l s ='more info'}</a>]</p> <p>{l s ='To receive PrestaShop update warnings, you need to activate the <b>allow_url_fopen</b> command in your <b>php.ini</b> config file.'} [<a href="http://www.php.net/manual/'.$isoUser.'/ref.filesystem.php">{l s ='more info'}</a>]</p>
<p>{l s ='If you don\'t know how to do that, please contact your host administrator !'}</p><br /> <p>{l s ='If you don\'t know how to do that, please contact your host administrator !'}</p><br />
{/if} {/if}
{if $show_screencast} {if $employee->bo_show_screencast}
<div id="adminpresentation"> <div id="adminpresentation">
<iframe src="{$protocol}://screencasts.prestashop.com/screencast.php?iso_lang={$isoUser}" style="border:none;width:100%;height:420px;" scrolling="no"></iframe> <iframe src="{$protocol}://screencasts.prestashop.com/screencast.php?iso_lang={$isoUser}" style="border:none;width:100%;height:420px;" scrolling="no"></iframe>
<div id="footer_iframe_home"> <div id="footer_iframe_home">
+2
View File
@@ -298,6 +298,8 @@
'AdminAddressesController' => '', 'AdminAddressesController' => '',
'AdminHomeControllerCore' => 'controllers/admin/AdminHomeController.php', 'AdminHomeControllerCore' => 'controllers/admin/AdminHomeController.php',
'AdminHomeController' => 'override/controllers/admin/AdminHomeController.php', 'AdminHomeController' => 'override/controllers/admin/AdminHomeController.php',
'AdminRequestSqlControllerCore' => 'controllers/admin/AdminRequestSqlController.php',
'AdminRequestSqlController' => '',
'AdminToolsControllerCore' => 'controllers/admin/AdminToolsController.php', 'AdminToolsControllerCore' => 'controllers/admin/AdminToolsController.php',
'AdminToolsController' => 'override/controllers/admin/AdminToolsController.php', 'AdminToolsController' => 'override/controllers/admin/AdminToolsController.php',
'AdminTrackingController' => 'controllers/admin/AdminTrackingController.php', 'AdminTrackingController' => 'controllers/admin/AdminTrackingController.php',
+3 -3
View File
@@ -828,7 +828,7 @@ abstract class AdminTabCore
$type = (array_key_exists('filter_type', $field) ? $field['filter_type'] : (array_key_exists('type', $field) ? $field['type'] : false)); $type = (array_key_exists('filter_type', $field) ? $field['filter_type'] : (array_key_exists('type', $field) ? $field['type'] : false));
if (($type == 'date' OR $type == 'datetime') AND is_string($value)) if (($type == 'date' OR $type == 'datetime') AND is_string($value))
$value = unserialize($value); $value = unserialize($value);
$key = isset($tmpTab[1]) ? $tmpTab[0].'.'.$tmpTab[1] : $tmpTab[0]; $key = isset($tmpTab[1]) ? $tmpTab[0].'.`'.bqSQL($tmpTab[1]).'`' : '`'.bqSQL($tmpTab[0]).'`';
if (array_key_exists('tmpTableFilter', $field)) if (array_key_exists('tmpTableFilter', $field))
$sqlFilter = & $this->_tmpTableFilter; $sqlFilter = & $this->_tmpTableFilter;
elseif (array_key_exists('havingFilter', $field)) elseif (array_key_exists('havingFilter', $field))
@@ -844,7 +844,7 @@ abstract class AdminTabCore
if (!Validate::isDate($value[0])) if (!Validate::isDate($value[0]))
$this->_errors[] = Tools::displayError('\'from:\' date format is invalid (YYYY-MM-DD)'); $this->_errors[] = Tools::displayError('\'from:\' date format is invalid (YYYY-MM-DD)');
else else
$sqlFilter .= ' AND '.bqSQL($key).' >= \''.pSQL(Tools::dateFrom($value[0])).'\''; $sqlFilter .= ' AND '.$key.' >= \''.pSQL(Tools::dateFrom($value[0])).'\'';
} }
if (isset($value[1]) AND !empty($value[1])) if (isset($value[1]) AND !empty($value[1]))
@@ -852,7 +852,7 @@ abstract class AdminTabCore
if (!Validate::isDate($value[1])) if (!Validate::isDate($value[1]))
$this->_errors[] = Tools::displayError('\'to:\' date format is invalid (YYYY-MM-DD)'); $this->_errors[] = Tools::displayError('\'to:\' date format is invalid (YYYY-MM-DD)');
else else
$sqlFilter .= ' AND '.bqSQL($key).' <= \''.pSQL(Tools::dateTo($value[1])).'\''; $sqlFilter .= ' AND '.$key.' <= \''.pSQL(Tools::dateTo($value[1])).'\'';
} }
} }
else else
+1 -1
View File
@@ -29,7 +29,7 @@ abstract class CacheCore
{ {
/** @var Cache */ /** @var Cache */
protected static $_instance; protected static $_instance;
protected $_keysCached; protected $_keysCached = array();
protected $_tablesCached = array(); protected $_tablesCached = array();
protected $_blackList = array('cart', protected $_blackList = array('cart',
'cart_discount', 'cart_discount',
+7 -5
View File
@@ -98,15 +98,17 @@ class CacheFSCore extends Cache {
public function setQuery($query, $result) public function setQuery($query, $result)
{ {
$md5_query = md5($query); $md5_query = md5($query);
if (isset($this->_keysCached[$md5_query]))
return true;
if ($this->isBlacklist($query)) if ($this->isBlacklist($query))
return true; return true;
$this->_setKeys();
if (isset($this->_keysCached[$md5_query]))
return true;
$key = $this->set($md5_query, $result); $key = $this->set($md5_query, $result);
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
foreach($res[1] AS $table) foreach($res[1] AS $table)
if(!isset($this->_tablesCached[$table][$key])) if(!isset($this->_tablesCached[$table][$key]))
$this->_tablesCached[$table][$key] = true; $this->_tablesCached[$table][$key] = true;
$this->_writeKeys();
} }
public function delete($key, $timeout = 0) public function delete($key, $timeout = 0)
@@ -126,7 +128,7 @@ class CacheFSCore extends Cache {
public function deleteQuery($query) public function deleteQuery($query)
{ {
$this->_setKeys();
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
foreach ($res[1] AS $table) foreach ($res[1] AS $table)
if (isset($this->_tablesCached[$table])) if (isset($this->_tablesCached[$table]))
@@ -138,15 +140,15 @@ class CacheFSCore extends Cache {
} }
unset($this->_tablesCached[$table]); unset($this->_tablesCached[$table]);
} }
$this->_writeKeys();
} }
public function flush() public function flush()
{ {
} }
public function __destruct() private function _writeKeys()
{ {
parent::__destruct();
@file_put_contents($this->getPath().'keysCached', serialize($this->_keysCached)); @file_put_contents($this->getPath().'keysCached', serialize($this->_keysCached));
@file_put_contents($this->getPath().'tablesCached', serialize($this->_tablesCached)); @file_put_contents($this->getPath().'tablesCached', serialize($this->_tablesCached));
+2 -2
View File
@@ -1288,12 +1288,12 @@ class CartCore extends ObjectModel
if (isset($configuration['PS_SHIPPING_HANDLING']) AND $carrier->shipping_handling) if (isset($configuration['PS_SHIPPING_HANDLING']) AND $carrier->shipping_handling)
$shipping_cost += (float)($configuration['PS_SHIPPING_HANDLING']); $shipping_cost += (float)($configuration['PS_SHIPPING_HANDLING']);
$shipping_cost = Tools::convertPrice($shipping_cost, Currency::getCurrencyInstance((int)($this->id_currency)));
// Additional Shipping Cost per product // Additional Shipping Cost per product
foreach($products AS $product) foreach($products AS $product)
$shipping_cost += $product['additional_shipping_cost'] * $product['cart_quantity']; $shipping_cost += $product['additional_shipping_cost'] * $product['cart_quantity'];
$shipping_cost = Tools::convertPrice($shipping_cost, Currency::getCurrencyInstance((int)($this->id_currency)));
//get external shipping cost from module //get external shipping cost from module
if ($carrier->shipping_external) if ($carrier->shipping_external)
{ {
+10 -6
View File
@@ -62,6 +62,9 @@ class EmployeeCore extends ObjectModel
/** @var string / enum hover or click mode */ /** @var string / enum hover or click mode */
public $bo_uimode; public $bo_uimode;
/** @var bool, true */
public $bo_show_screencast;
/** @var boolean Status */ /** @var boolean Status */
public $active = 1; public $active = 1;
@@ -74,7 +77,7 @@ class EmployeeCore extends ObjectModel
protected $fieldsSize = array('lastname' => 32, 'firstname' => 32, 'email' => 128, 'passwd' => 32, 'bo_color' => 32, 'bo_theme' => 32); protected $fieldsSize = array('lastname' => 32, 'firstname' => 32, 'email' => 128, 'passwd' => 32, 'bo_color' => 32, 'bo_theme' => 32);
protected $fieldsValidate = array('lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'id_lang' => 'isUnsignedInt', protected $fieldsValidate = array('lastname' => 'isName', 'firstname' => 'isName', 'email' => 'isEmail', 'id_lang' => 'isUnsignedInt',
'passwd' => 'isPasswdAdmin', 'active' => 'isBool', 'id_profile' => 'isInt', 'bo_color' => 'isColor', 'bo_theme' => 'isGenericName', 'passwd' => 'isPasswdAdmin', 'active' => 'isBool', 'id_profile' => 'isInt', 'bo_color' => 'isColor', 'bo_theme' => 'isGenericName',
'bo_uimode' => 'isGenericName', 'show_screencast' => 'isBool'); 'bo_uimode' => 'isGenericName', 'show_screencast' => 'isBool', 'bo_show_screencast' => 'isBool');
protected $table = 'employee'; protected $table = 'employee';
protected $identifier = 'id_employee'; protected $identifier = 'id_employee';
@@ -113,6 +116,7 @@ class EmployeeCore extends ObjectModel
$fields['bo_color'] = pSQL($this->bo_color); $fields['bo_color'] = pSQL($this->bo_color);
$fields['bo_theme'] = pSQL($this->bo_theme); $fields['bo_theme'] = pSQL($this->bo_theme);
$fields['bo_uimode'] = pSQL($this->bo_uimode); $fields['bo_uimode'] = pSQL($this->bo_uimode);
$fields['bo_show_screencast'] = (int)$this->bo_show_screencast;
$fields['active'] = (int)$this->active; $fields['active'] = (int)$this->active;
$fields['show_screencast'] = (int)$this->show_screencast; $fields['show_screencast'] = (int)$this->show_screencast;
@@ -195,8 +199,8 @@ class EmployeeCore extends ObjectModel
public function isLastAdmin() public function isLastAdmin()
{ {
return ($this->id_profile == _PS_ADMIN_PROFILE_ return ($this->id_profile == _PS_ADMIN_PROFILE_
AND Employee::countProfile($this->id_profile, true) == 1 && Employee::countProfile($this->id_profile, true) == 1
AND $this->active && $this->active
); );
} }
@@ -221,9 +225,9 @@ class EmployeeCore extends ObjectModel
{ {
/* Employee is valid only if it can be load and if cookie password is the same as database one */ /* Employee is valid only if it can be load and if cookie password is the same as database one */
return ($this->id return ($this->id
AND Validate::isUnsignedId($this->id) && Validate::isUnsignedId($this->id)
AND Employee::checkPassword($this->id, $this->passwd) && Employee::checkPassword($this->id, $this->passwd)
AND (!isset($this->remote_addr) OR $this->remote_addr == ip2long(Tools::getRemoteAddr()) OR !Configuration::get('PS_COOKIE_CHECKIP')) && (!isset($this->remote_addr) || $this->remote_addr == ip2long(Tools::getRemoteAddr()) || !Configuration::get('PS_COOKIE_CHECKIP'))
); );
} }
+5 -2
View File
@@ -94,6 +94,7 @@ class MCachedCore extends Cache
if ($this->isBlacklist($query)) if ($this->isBlacklist($query))
return true; return true;
$md5_query = md5($query); $md5_query = md5($query);
$this->_setKeys();
if (isset($this->_keysCached[$md5_query])) if (isset($this->_keysCached[$md5_query]))
return true; return true;
$key = $this->set($md5_query, $result); $key = $this->set($md5_query, $result);
@@ -101,6 +102,7 @@ class MCachedCore extends Cache
foreach($res[1] AS $table) foreach($res[1] AS $table)
if(!isset($this->_tablesCached[$table][$key])) if(!isset($this->_tablesCached[$table][$key]))
$this->_tablesCached[$table][$key] = true; $this->_tablesCached[$table][$key] = true;
$this->_writeKeys();
} }
public function delete($key, $timeout = 0) public function delete($key, $timeout = 0)
@@ -115,6 +117,7 @@ class MCachedCore extends Cache
{ {
if (!$this->_isConnected) if (!$this->_isConnected)
return false; return false;
$this->_setKeys();
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res)) if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
foreach ($res[1] AS $table) foreach ($res[1] AS $table)
if (isset($this->_tablesCached[$table])) if (isset($this->_tablesCached[$table]))
@@ -126,6 +129,7 @@ class MCachedCore extends Cache
} }
unset($this->_tablesCached[$table]); unset($this->_tablesCached[$table]);
} }
$this->_writeKeys();
} }
protected function close() protected function close()
@@ -144,9 +148,8 @@ class MCachedCore extends Cache
return false; return false;
} }
public function __destruct() private function _writeKeys()
{ {
parent::__destruct();
if (!$this->_isConnected) if (!$this->_isConnected)
return false; return false;
$this->_memcacheObj->set('keysCached', $this->_keysCached, 0, 0); $this->_memcacheObj->set('keysCached', $this->_keysCached, 0, 0);
+9 -6
View File
@@ -190,12 +190,11 @@ class MailCore
public static function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption) public static function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption)
{ {
$swift = NULL; $swift = NULL;
$result = NULL; $result = false;
try try
{ {
if($smtpChecked) if($smtpChecked)
{ {
$smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == "off") ? Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL)); $smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == "off") ? Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == "tls") ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL));
$smtp->setUsername($smtpLogin); $smtp->setUsername($smtpLogin);
$smtp->setpassword($smtpPassword); $smtp->setpassword($smtpPassword);
@@ -209,13 +208,17 @@ class MailCore
if ($swift->send($message, $to, $from)) if ($swift->send($message, $to, $from))
$result = true; $result = true;
else
$result = 999;
$swift->disconnect(); $swift->disconnect();
} }
catch (Swift_Connection_Exception $e) { $result = $e->getCode(); } catch (Swift_ConnectionException $e)
catch (Swift_Message_MimeException $e) { $result = $e->getCode(); } {
$result = $e->getMessage();
}
catch (Swift_Message_MimeException $e)
{
$result = $e->getMessage();
}
return $result; return $result;
} }
+15 -3
View File
@@ -637,12 +637,24 @@ abstract class ModuleCore
if (!$useConfig OR !$xml_exist OR (isset($xml_module->need_instance) AND (int)$xml_module->need_instance == 1) OR $needNewConfigFile) if (!$useConfig OR !$xml_exist OR (isset($xml_module->need_instance) AND (int)$xml_module->need_instance == 1) OR $needNewConfigFile)
{ {
// If class already exists, don't include the file
if (!class_exists($module, false))
{
$filepath = _PS_MODULE_DIR_.$module.'/'.$module.'.php';
$file = trim(file_get_contents(_PS_MODULE_DIR_.$module.'/'.$module.'.php')); $file = trim(file_get_contents(_PS_MODULE_DIR_.$module.'/'.$module.'.php'));
if (substr($file, 0, 5) == '<?php') if (substr($file, 0, 5) == '<?php')
$file = substr($file, 5); $file = substr($file, 5);
if (substr($file, -2) == '?>') if (substr($file, -2) == '?>')
$file = substr($file, 0, -2); $file = substr($file, 0, -2);
if (class_exists($module, false) OR eval($file) !== false) // if (false) is a trick to not load the class with "eval".
// this way require_once will works correctly
if (eval('if (false){ '.$file.' }') !== false)
require_once( _PS_MODULE_DIR_.$module.'/'.$module.'.php' );
else
$errors[] = sprintf(Tools::displayError('%1$s (parse error in %2$s)'), $module, substr($filepath, strlen(_PS_ROOT_DIR_)));
}
if (class_exists($module,false))
{ {
$moduleList[$moduleListCursor++] = new $module; $moduleList[$moduleListCursor++] = new $module;
if (!$xml_exist OR $needNewConfigFile) if (!$xml_exist OR $needNewConfigFile)
@@ -654,7 +666,7 @@ abstract class ModuleCore
} }
} }
else else
$errors[] = $module; $errors[] = sprintf(Tools::displayError('%1$s (class missing in %2$s)'), $module, substr($filepath, strlen(_PS_ROOT_DIR_)));
} }
} }
@@ -679,7 +691,7 @@ abstract class ModuleCore
if ($errors) if ($errors)
{ {
echo '<div class="alert error"><h3>'.Tools::displayError('Parse error(s) in module(s)').'</h3><ol>'; echo '<div class="alert error"><h3>'.Tools::displayError('The following module(s) couldn\'t be loaded').':</h3><ol>';
foreach ($errors AS $error) foreach ($errors AS $error)
echo '<li>'.$error.'</li>'; echo '<li>'.$error.'</li>';
echo '</ol></div>'; echo '</ol></div>';
+105 -98
View File
@@ -173,7 +173,6 @@ class SearchCore
{ {
$word = str_replace('%', '\\%', $word); $word = str_replace('%', '\\%', $word);
$word = str_replace('_', '\\_', $word); $word = str_replace('_', '\\_', $word);
$intersectArray[] = 'SELECT si.id_product $intersectArray[] = 'SELECT si.id_product
FROM '._DB_PREFIX_.'search_word sw FROM '._DB_PREFIX_.'search_word sw
LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word
@@ -337,6 +336,20 @@ class SearchCore
return $features; return $features;
} }
protected static function getProductsToIndex($nbLanguages, $limit = 50)
{
// Adjust the limit to get only "whole" products, in every languages (and at least one)
$limit = min(1, round($limit / $nbLanguages) * $nbLanguages);
return Db::getInstance()->ExecuteS('
SELECT p.id_product, pl.id_lang, pl.name pname, p.reference, p.ean13, p.upc, pl.description_short, pl.description, cl.name cname, m.name mname
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON p.id_product = pl.id_product
LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default AND pl.id_lang = cl.id_lang)
LEFT JOIN '._DB_PREFIX_.'manufacturer m ON m.id_manufacturer = p.id_manufacturer
WHERE p.indexed = 0
LIMIT '.(int)$limit);
}
public static function indexation($full = false, $id_product = false) public static function indexation($full = false, $id_product = false)
{ {
$db = Db::getInstance(); $db = Db::getInstance();
@@ -399,15 +412,6 @@ class SearchCore
'features' => Configuration::get('PS_SEARCH_WEIGHT_FEATURE') 'features' => Configuration::get('PS_SEARCH_WEIGHT_FEATURE')
); );
// All the product not yet indexed are retrieved
$sql = 'SELECT p.id_product, pl.id_lang, pl.name pname, p.reference, p.ean13, p.upc, pl.description_short, pl.description, cl.name cname, m.name mname, pl.id_shop
FROM '._DB_PREFIX_.'product p
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON p.id_product = pl.id_product
LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = p.id_category_default AND pl.id_lang = cl.id_lang AND pl.id_shop = cl.id_shop)
LEFT JOIN '._DB_PREFIX_.'manufacturer m ON m.id_manufacturer = p.id_manufacturer
WHERE p.indexed = 0';
$products = $db->ExecuteS($sql, false);
// Those are kind of global variables required to save the processed data in the database every X occurences, in order to avoid overloading MySQL // Those are kind of global variables required to save the processed data in the database every X occurences, in order to avoid overloading MySQL
$countWords = 0; $countWords = 0;
$countProducts = 0; $countProducts = 0;
@@ -427,108 +431,111 @@ class SearchCore
$wordIdsByWord[$wordId['id_shop']][$wordId['id_lang']]['_'.$wordId['word']] = (int)$wordId['id_word']; $wordIdsByWord[$wordId['id_shop']][$wordId['id_lang']]['_'.$wordId['word']] = (int)$wordId['id_word'];
} }
// Now each non-indexed product is processed one by one, langage by langage // Retrieve the number of languages
while ($product = $db->nextRow($products)) $nbLanguages = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'lang');
// Products are processed 50 by 50 in order to avoid overloading MySQL
while ($products = Search::getProductsToIndex($nbLanguages, 50) AND count($products) > 0)
{ {
$product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']); // Now each non-indexed product is processed one by one, langage by langage
$product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']); foreach ($products as $product)
$product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']);
// Data must be cleaned of html, bad characters, spaces and anything, then if the resulting words are long enough, they're added to the array
$pArray = array();
foreach ($product AS $key => $value)
if (strncmp($key, 'id_', 3))
{
$words = explode(' ', Search::sanitize($value, (int)$product['id_lang'], true));
foreach ($words AS $word)
if (!empty($word))
{
$word = Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH);
// Remove accents
$word = Tools::replaceAccentedChars($word);
if (!isset($pArray[$word]))
$pArray[$word] = 0;
$pArray[$word] += $weightArray[$key];
}
}
// If we find words that need to be indexed, they're added to the word table in the database
if (sizeof($pArray))
{ {
$list = ''; $product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']);
foreach ($pArray AS $word => $weight) $product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']);
$list .= '\''.$word.'\','; $product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']);
$list = rtrim($list, ',');
$queryArray = array(); // Data must be cleaned of html, bad characters, spaces and anything, then if the resulting words are long enough, they're added to the array
$queryArray2 = array(); $pArray = array();
foreach ($pArray AS $word => $weight) foreach ($product AS $key => $value)
if ($weight AND !isset($wordIdsByWord['_'.$word])) if (strncmp($key, 'id_', 3))
{ {
$queryArray[$word] = '('.(int)$product['id_lang'].', '.(int)$product['id_shop'].', \''.pSQL($word).'\')'; $words = explode(' ', Search::sanitize($value, (int)$product['id_lang'], true));
$queryArray2[] = '\''.pSQL($word).'\''; foreach ($words AS $word)
$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word] = 0; if (!empty($word))
{
$word = Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH);
// Remove accents
$word = Tools::replaceAccentedChars($word);
if (!isset($pArray[$word]))
$pArray[$word] = 0;
$pArray[$word] += $weightArray[$key];
}
} }
$existingWords = $db->ExecuteS(' // If we find words that need to be indexed, they're added to the word table in the database
SELECT word FROM '._DB_PREFIX_.'search_word if (count($pArray))
WHERE word IN ('.implode(',', $queryArray2).')
AND id_lang = '.(int)$product['id_lang'].' GROUP BY word');
if($existingWords)
foreach($existingWords as $data)
unset($queryArray[Tools::replaceAccentedChars($data['word'])]);
if (count($queryArray))
{ {
// The words are inserted... $list = '';
$db->Execute(' foreach ($pArray AS $word => $weight)
INSERT IGNORE INTO '._DB_PREFIX_.'search_word (id_lang, id_shop, word) $list .= '\''.$word.'\',';
VALUES '.implode(',',$queryArray)); $list = rtrim($list, ',');
$queryArray = array();
$queryArray2 = array();
foreach ($pArray AS $word => $weight)
if ($weight AND !isset($wordIdsByWord['_'.$word]))
{
$queryArray[$word] = '('.(int)$product['id_lang'].', '.(int)$product['id_shop'].', \''.pSQL($word).'\')';
$queryArray2[] = '\''.pSQL($word).'\'';
$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word] = 0;
}
$existingWords = $db->ExecuteS('
SELECT word FROM '._DB_PREFIX_.'search_word
WHERE word IN ('.implode(',', $queryArray2).')
AND id_lang = '.(int)$product['id_lang'].' GROUP BY word');
if($existingWords)
foreach($existingWords as $data)
unset($queryArray[Tools::replaceAccentedChars($data['word'])]);
if (count($queryArray))
{
// The words are inserted...
$db->Execute('
INSERT IGNORE INTO '._DB_PREFIX_.'search_word (id_lang, id_shop, word)
VALUES '.implode(',',$queryArray));
}
if (count($queryArray2))
{
// ...then their IDs are retrieved and added to the cache
$addedWords = $db->ExecuteS('
SELECT sw.id_word, sw.word
FROM '._DB_PREFIX_.'search_word sw
WHERE sw.word IN ('.implode(',', $queryArray2).')
AND sw.id_lang = '.(int)$product['id_lang'].'
AND sw.id_shop = '.(int)$product['id_shop'].'
LIMIT '.count($queryArray2));
// replace accents from the retrieved words so that words without accents or with differents accents can still be linked
foreach ($addedWords AS $wordId)
$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.Tools::replaceAccentedChars($wordId['word'])] = (int)$wordId['id_word'];
}
} }
if (count($queryArray2))
foreach ($pArray AS $word => $weight)
{ {
// ...then their IDs are retrieved and added to the cache if (!$weight)
$addedWords = $db->ExecuteS(' continue;
SELECT sw.id_word, sw.word if (!isset($wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word]))
FROM '._DB_PREFIX_.'search_word sw continue;
WHERE sw.word IN ('.implode(',', $queryArray2).') if (!$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word])
AND sw.id_lang = '.(int)$product['id_lang'].' continue;
AND sw.id_shop = '.(int)$product['id_shop'].' $queryArray3[] = '('.(int)$product['id_product'].','.(int)$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word].','.(int)$weight.')';
LIMIT '.count($queryArray2)); // Force save every 200 words in order to avoid overloading MySQL
// replace accents from the retrieved words so that words without accents or with differents accents can still be linked if (++$countWords % 200 == 0)
foreach ($addedWords AS $wordId) Search::saveIndex($queryArray3);
$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.Tools::replaceAccentedChars($wordId['word'])] = (int)$wordId['id_word'];
} }
}
foreach ($pArray AS $word => $weight) if (!in_array($product['id_product'], $productsArray))
{ $productsArray[] = (int)$product['id_product'];
if (!$weight) }
continue; Search::setProductsAsIndexed($productsArray);
if (!isset($wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word]))
continue;
if (!$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word])
continue;
$queryArray3[] = '('.(int)$product['id_product'].','.(int)$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word].','.(int)$weight.')';
// Force save every 200 words in order to avoid overloading MySQL
if (++$countWords % 200 == 0)
Search::saveIndex($queryArray3);
}
if (!in_array($product['id_product'], $productsArray)) // One last save is done at the end in order to save what's left
$productsArray[] = (int)$product['id_product']; Search::saveIndex($queryArray3);
// Force save every 50 products in order to avoid overloading MySQL
if (++$countProducts % 50 == 0)
Search::setProductsAsIndexed($productsArray);
} }
// One last save is done at the end in order to save what's left
Search::saveIndex($queryArray3);
Search::setProductsAsIndexed($productsArray);
// If it has been deleted, the index is created again once the indexation is done // If it has been deleted, the index is created again once the indexation is done
if (!$dropIndex) if (!$dropIndex)
{ {
+35 -12
View File
@@ -165,18 +165,37 @@ class UpgraderCore
} }
return $this->changed_files; return $this->changed_files;
} }
/** populate $this->changed_files with $path
* in sub arrays mail, translation and core items
* @param string $path filepath to add, relative to _PS_ROOT_DIR_
*/
protected function addChangedFile($path) protected function addChangedFile($path)
{ {
$this->version_is_modified = true; $this->version_is_modified = true;
$this->changed_files[] = $path;
//array_unique($this->changed_files); if (strpos($path, 'mails/') !== false)
$this->changed_files['mail'][] = $path;
else if (
strpos($path, '/en.php') !== false
|| strpos($path, '/fr.php') !== false
|| strpos($path, '/es.php') !== false
|| strpos($path, '/it.php') !== false
|| strpos($path, '/de.php') !== false
|| strpos($path, 'translations/') !== false
)
$this->changed_files['translation'][] = $path;
else
$this->changed_files['core'][] = $path;
} }
/** populate $this->missing_files with $path
* @param string $path filepath to add, relative to _PS_ROOT_DIR_
*/
protected function addMissingFile($path) protected function addMissingFile($path)
{ {
$this->version_is_modified = true; $this->version_is_modified = true;
$this->missing_files[] = $path; $this->missing_files[] = $path;
//array_unique($this->missingFile);
} }
protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1) protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1)
@@ -190,18 +209,22 @@ class UpgraderCore
} }
else if (is_object($child) && $child->getName() == 'md5file') else if (is_object($child) && $child->getName() == 'md5file')
{ {
$path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR; // We will store only relative path.
// absolute path is only used for file_exists and compare
$relative_path = '';
for ($i = 1; $i < $level; $i++) for ($i = 1; $i < $level; $i++)
$path .= $current_path[$i].'/'; $relative_path .= $current_path[$i].'/';
$path .= (string)$child['name']; $relative_path .= (string)$child['name'];
$path = str_replace('ps_root_dir',_PS_ROOT_DIR_,$path); $fullpath = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR . $relative_path;
$fullpath = str_replace('ps_root_dir', _PS_ROOT_DIR_, $fullpath);
// replace default admin dir by current one // replace default admin dir by current one
$path = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $path); $fullpath = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $fullpath);
if(!file_exists($path)) if (!file_exists($fullpath))
$this->addMissingFile($path); $this->addMissingFile($relative_path);
else if (!$this->compareChecksum($path, (string)$child)) else if (!$this->compareChecksum($fullpath, (string)$child))
$this->addChangedFile($path); $this->addChangedFile($relative_path);
// else, file is original (and ok) // else, file is original (and ok)
} }
} }
+5 -2
View File
@@ -56,6 +56,7 @@ if (!file_exists(dirname(__FILE__).'/settings.inc.php'))
exit; exit;
} }
require_once(dirname(__FILE__).'/settings.inc.php'); require_once(dirname(__FILE__).'/settings.inc.php');
require_once(dirname(__FILE__).'/autoload.php');
/* Redefine REQUEST_URI if empty (on some webservers...) */ /* Redefine REQUEST_URI if empty (on some webservers...) */
if (!isset($_SERVER['REQUEST_URI']) OR empty($_SERVER['REQUEST_URI'])) if (!isset($_SERVER['REQUEST_URI']) OR empty($_SERVER['REQUEST_URI']))
@@ -70,8 +71,10 @@ if (!isset($_SERVER['REQUEST_URI']) OR empty($_SERVER['REQUEST_URI']))
} }
} }
/* Autoload */ // Trying to redefine HTTP_HOST if empty (on some webservers...)
require_once(dirname(__FILE__).'/autoload.php'); if (!isset($_SERVER['HTTP_HOST']) || empty($_SERVER['HTTP_HOST']))
$_SERVER['HTTP_HOST'] = @getenv('HTTP_HOST');
if (!defined('_PS_MAGIC_QUOTES_GPC_')) if (!defined('_PS_MAGIC_QUOTES_GPC_'))
define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc()); define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc());
+1
View File
@@ -629,6 +629,7 @@ CREATE TABLE `PREFIX_employee` (
`bo_color` varchar(32) default NULL, `bo_color` varchar(32) default NULL,
`bo_theme` varchar(32) default NULL, `bo_theme` varchar(32) default NULL,
`bo_uimode` ENUM('hover','click') default 'click', `bo_uimode` ENUM('hover','click') default 'click',
`bo_show_screencast` tinyint(1) NOT NULL default '1',
`active` tinyint(1) unsigned NOT NULL default '0', `active` tinyint(1) unsigned NOT NULL default '0',
`show_screencast` tinyint(1) unsigned NOT NULL default '1', `show_screencast` tinyint(1) unsigned NOT NULL default '1',
`id_last_order` tinyint(1) unsigned NOT NULL default '0', `id_last_order` tinyint(1) unsigned NOT NULL default '0',
+1
View File
@@ -36,3 +36,4 @@ INSERT INTO `PREFIX_hook` (`name`, `title`, `description`, `position`, `live_edi
('afterDeleteAttribute', 'On deleting attribute feature value', 'On deleting attribute feature value', 0, 0), ('afterDeleteAttribute', 'On deleting attribute feature value', 'On deleting attribute feature value', 0, 0),
('afterSaveAttribute', 'On saving attribute feature value', 'On saving attribute feature value', 0, 0); ('afterSaveAttribute', 'On saving attribute feature value', 'On saving attribute feature value', 0, 0);
ALTER TABLE `PREFIX_employee` ADD `bo_show_screencast` TINYINT(1) NOT NULL DEFAULT '1' AFTER `bo_uimode`;
+1 -1
View File
@@ -235,7 +235,7 @@ if (isFormValid())
$sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_ENCRYPTION', '".pSQL($_GET['smtpEnc'])."', NOW(), NOW())"; $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_ENCRYPTION', '".pSQL($_GET['smtpEnc'])."', NOW(), NOW())";
$sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_PORT', '".pSQL($_GET['smtpPort'])."', NOW(), NOW())"; $sqlParams[] = "INSERT INTO "._DB_PREFIX_."configuration (name, value, date_add, date_upd) VALUES ('PS_MAIL_SMTP_PORT', '".pSQL($_GET['smtpPort'])."', NOW(), NOW())";
} }
$sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'employee (id_employee, lastname, firstname, email, passwd, last_passwd_gen, bo_theme, active, id_profile, id_lang) VALUES (NULL, \''.pSQL(ToolsInstall::ucfirst($_GET['infosName'])).'\', \''.pSQL(ToolsInstall::ucfirst($_GET['infosFirstname'])).'\', \''.pSQL($_GET['infosEmail']).'\', \''.md5(pSQL(_COOKIE_KEY_.$_GET['infosPassword'])).'\', \''.date('Y-m-d h:i:s', strtotime('-360 minutes')).'\', \'oldschool\', 1, 1, (SELECT `value` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \'PS_LANG_DEFAULT\' LIMIT 1))'; $sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'employee (id_employee, lastname, firstname, email, passwd, last_passwd_gen, bo_theme, active, id_profile, id_lang, bo_show_screencast) VALUES (NULL, \''.pSQL(ToolsInstall::ucfirst($_GET['infosName'])).'\', \''.pSQL(ToolsInstall::ucfirst($_GET['infosFirstname'])).'\', \''.pSQL($_GET['infosEmail']).'\', \''.md5(pSQL(_COOKIE_KEY_.$_GET['infosPassword'])).'\', \''.date('Y-m-d h:i:s', strtotime('-360 minutes')).'\', \'oldschool\', 1, 1, (SELECT `value` FROM `'._DB_PREFIX_.'configuration` WHERE `name` = \'PS_LANG_DEFAULT\' LIMIT 1), 1)';
$sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'contact (id_contact, email, customer_service) VALUES (NULL, \''.pSQL($_GET['infosEmail']).'\', 1), (NULL, \''.pSQL($_GET['infosEmail']).'\', 1)'; $sqlParams[] = 'INSERT INTO '._DB_PREFIX_.'contact (id_contact, email, customer_service) VALUES (NULL, \''.pSQL($_GET['infosEmail']).'\', 1), (NULL, \''.pSQL($_GET['infosEmail']).'\', 1)';
if (function_exists('mcrypt_encrypt')) if (function_exists('mcrypt_encrypt'))
+1 -1
View File
@@ -71,7 +71,7 @@ function verifyMail(testMsg, testSubject)
else else
{ {
mailIsOk = false; mailIsOk = false;
$("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(textSendError); $("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(textSendError + '<br />' + ret);
} }
} }
} }
+1 -3
View File
@@ -140,9 +140,7 @@ function writeBookmarkLink(url, title, text, img)
function writeBookmarkLinkObject(url, title, insert) function writeBookmarkLinkObject(url, title, insert)
{ {
if (window.navigator.userAgent.indexOf('Chrome') != -1) if (window.sidebar || window.external)
return ('');
else if (window.sidebar || window.external)
return ('<a href="javascript:addBookmark(\'' + escape(url) + '\', \'' + escape(title) + '\')">' + insert + '</a>'); return ('<a href="javascript:addBookmark(\'' + escape(url) + '\', \'' + escape(title) + '\')">' + insert + '</a>');
else if (window.opera && window.print) else if (window.opera && window.print)
return ('<a rel="sidebar" href="' + escape(url) + '" title="' + escape(title) + '">' + insert + '</a>'); return ('<a rel="sidebar" href="' + escape(url) + '" title="' + escape(title) + '">' + insert + '</a>');
+27 -9
View File
@@ -24,6 +24,7 @@
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA * International Registered Trademark & Property of PrestaShop SA
*/ */
if(!defined('_PS_ADMIN_DIR_')) if(!defined('_PS_ADMIN_DIR_'))
define('_PS_ADMIN_DIR_', _PS_ADMIN_DIR_); define('_PS_ADMIN_DIR_', _PS_ADMIN_DIR_);
if(!defined('_PS_USE_SQL_SLAVE_')) if(!defined('_PS_USE_SQL_SLAVE_'))
@@ -480,10 +481,11 @@ $this->standalone = true;
else else
{ {
// echo '<img src="'.$originalCore.'" /> '. // echo '<img src="'.$originalCore.'" /> '.
$this->nextParams['msg'] = ($testOrigCore?$this->l('Core files are ok'):sprintf($this->l('%s core files have been modified'), sizeof($changedFileList))); $this->nextParams['msg'] = ($testOrigCore?$this->l('Core files are ok'):sprintf($this->l('%1$s core files have been modified (%2$s total)'), count($changedFileList['core']), count(array_merge($changedFileList['core'], $changedFileList['mail'], $changedFileList['translation']))));
} }
$this->nextParams['result'] = $changedFileList; $this->nextParams['result'] = $changedFileList;
} }
public function ajaxProcessUpgradeNow() public function ajaxProcessUpgradeNow()
{ {
$this->nextDesc = $this->l('Starting upgrade ...'); $this->nextDesc = $this->l('Starting upgrade ...');
@@ -1727,6 +1729,9 @@ echo '</script>';
#dbResultCheck{ padding-left:20px;} #dbResultCheck{ padding-left:20px;}
#checkPrestaShopFilesVersion{margin-bottom:20px;} #checkPrestaShopFilesVersion{margin-bottom:20px;}
#changedList ul{list-style-type:circle} #changedList ul{list-style-type:circle}
.changedFileList {margin-left:20px; padding-left:5px;}
.changedNotice li{color:lightgrey;}
.changedImportant li{color:red;font-weight:bold}
</style>'; </style>';
$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.')); $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.'));
@@ -1870,7 +1875,7 @@ function handleXMLResult(xmlRet, previousParams)
switch(previousParams.upgradeDbStep) switch(previousParams.upgradeDbStep)
{ {
case 0: // getVersionFromDb case 0: // getVersionFromDb
result = "ok"; resGlobal.result = "ok";
break; break;
case 1: // getVersionFromDb case 1: // getVersionFromDb
result = resGlobal.result; result = resGlobal.result;
@@ -2134,6 +2139,19 @@ function handleError(res)
} }
'; ';
// ajax to check md5 files // ajax to check md5 files
$js .= 'function addModifiedFileList(title, fileList, css_class)
{
subList = $("<ul class=\"changedFileList "+css_class+"\"></ul>");
$(fileList).each(function(k,v){
$(subList).append("<li>"+v+"</li>");
});
$("#changedList").append("<h3><a class=\"toggleSublist\">"+title+"</a></h3>");
$("#changedList").append(subList);
$("#cchangedList").append("<br/>");
}';
$js.= '$(document).ready(function(){ $js.= '$(document).ready(function(){
$.ajax({ $.ajax({
type:"POST", type:"POST",
@@ -2155,16 +2173,15 @@ $js.= '$(document).ready(function(){
$("#checkPrestaShopFilesVersion").prepend("<img src=\"../img/admin/warning.gif\" /> "); $("#checkPrestaShopFilesVersion").prepend("<img src=\"../img/admin/warning.gif\" /> ");
else else
{ {
$("#checkPrestaShopFilesVersion").prepend(answer.status); $("#checkPrestaShopFilesVersion").prepend("<img src=\"../img/admin/warning.gif\" /> ");
$("#checkPrestaShopFilesVersion").append("<a id=\"toggleChangedList\" class=\"button\" href=\"\">'.$this->l('See or hide the list').'</a><br/>"); $("#checkPrestaShopFilesVersion").append("<a id=\"toggleChangedList\" class=\"button\" href=\"\">'.$this->l('See or hide the list').'</a><br/>");
$("#checkPrestaShopFilesVersion").append("<div id=\"changedList\" style=\"display:none \">"); $("#checkPrestaShopFilesVersion").append("<div id=\"changedList\" style=\"display:none \"><br/>");
addModifiedFileList("'.$this->l('Core files').'", answer.result.core, "changedImportant");
$("#changedList").html("<ul>"); addModifiedFileList("'.$this->l('Mail files').'", answer.result.mail, "changedNotice");
$(answer.result).each(function(k,v){ addModifiedFileList("'.$this->l('Translation files').'", answer.result.translation, "changedNotice");
$("#changedList ul").append("<li>"+v+"</li>");
});
$("#toggleChangedList").bind("click",function(e){e.preventDefault();$("#changedList").toggle();}); $("#toggleChangedList").bind("click",function(e){e.preventDefault();$("#changedList").toggle();});
$(".toggleSublist").live("click",function(e){e.preventDefault();$(this).parent().next().toggle();});
} }
} }
, ,
@@ -2183,6 +2200,7 @@ $("#toggleChangedList").bind("click",function(e){e.preventDefault();$("#changedL
});'; });';
return $js; return $js;
} }
private function _cleanUp($path) private function _cleanUp($path)
{ {
// as we need theses files for restore operation, we can't remove them. // as we need theses files for restore operation, we can't remove them.
+35 -12
View File
@@ -165,18 +165,37 @@ class UpgraderCore
} }
return $this->changed_files; return $this->changed_files;
} }
/** populate $this->changed_files with $path
* in sub arrays mail, translation and core items
* @param string $path filepath to add, relative to _PS_ROOT_DIR_
*/
protected function addChangedFile($path) protected function addChangedFile($path)
{ {
$this->version_is_modified = true; $this->version_is_modified = true;
$this->changed_files[] = $path;
//array_unique($this->changed_files); if (strpos($path, 'mails/') !== false)
$this->changed_files['mail'][] = $path;
else if (
strpos($path, '/en.php') !== false
|| strpos($path, '/fr.php') !== false
|| strpos($path, '/es.php') !== false
|| strpos($path, '/it.php') !== false
|| strpos($path, '/de.php') !== false
|| strpos($path, 'translations/') !== false
)
$this->changed_files['translation'][] = $path;
else
$this->changed_files['core'][] = $path;
} }
/** populate $this->missing_files with $path
* @param string $path filepath to add, relative to _PS_ROOT_DIR_
*/
protected function addMissingFile($path) protected function addMissingFile($path)
{ {
$this->version_is_modified = true; $this->version_is_modified = true;
$this->missing_files[] = $path; $this->missing_files[] = $path;
//array_unique($this->missingFile);
} }
protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1) protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1)
@@ -190,18 +209,22 @@ class UpgraderCore
} }
else if (is_object($child) && $child->getName() == 'md5file') else if (is_object($child) && $child->getName() == 'md5file')
{ {
$path = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR; // We will store only relative path.
// absolute path is only used for file_exists and compare
$relative_path = '';
for ($i = 1; $i < $level; $i++) for ($i = 1; $i < $level; $i++)
$path .= $current_path[$i].'/'; $relative_path .= $current_path[$i].'/';
$path .= (string)$child['name']; $relative_path .= (string)$child['name'];
$path = str_replace('ps_root_dir',_PS_ROOT_DIR_,$path); $fullpath = _PS_ROOT_DIR_.DIRECTORY_SEPARATOR . $relative_path;
$fullpath = str_replace('ps_root_dir', _PS_ROOT_DIR_, $fullpath);
// replace default admin dir by current one // replace default admin dir by current one
$path = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $path); $fullpath = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $fullpath);
if(!file_exists($path)) if (!file_exists($fullpath))
$this->addMissingFile($path); $this->addMissingFile($relative_path);
else if (!$this->compareChecksum($path, (string)$child)) else if (!$this->compareChecksum($fullpath, (string)$child))
$this->addChangedFile($path); $this->addChangedFile($relative_path);
// else, file is original (and ok) // else, file is original (and ok)
} }
} }
+42 -17
View File
@@ -1,8 +1,33 @@
<?php <?php
/*
* 2007-2011 PrestaShop
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@prestashop.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author PrestaShop SA <contact@prestashop.com>
* @copyright 2007-2011 PrestaShop SA
* @version Release: $Revision$
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
class Autoupgrade extends Module class Autoupgrade extends Module
{ {
function __construct() public function __construct()
{ {
$this->name = 'autoupgrade'; $this->name = 'autoupgrade';
$this->tab = 'administration'; $this->tab = 'administration';
@@ -25,15 +50,16 @@ class Autoupgrade extends Module
$this->description = $this->l('Provides an automated method to upgrade your shop to the last PrestaShop version'); $this->description = $this->l('Provides an automated method to upgrade your shop to the last PrestaShop version');
} }
function install()
public function install()
{ {
$res = true; $res = true;
// before adding AdminSelfUpgrade, we should remove AdminUpgrade // before adding AdminSelfUpgrade, we should remove AdminUpgrade
$idTab = Tab::getIdFromClassName('AdminUpgrade'); $idTab = Tab::getIdFromClassName('AdminUpgrade');
if ($idTab) if ($idTab)
{ {
$tab = new Tab($idTab); $tab = new Tab($idTab);
$res &= $tab->delete(); $res &= $tab->delete();
} }
@@ -46,17 +72,17 @@ class Autoupgrade extends Module
$tab->class_name = 'AdminSelfUpgrade'; $tab->class_name = 'AdminSelfUpgrade';
$tab->module = 'autoupgrade'; $tab->module = 'autoupgrade';
$tab->id_parent = 9; $tab->id_parent = 9;
$tab->name = array_fill(1,sizeof(Language::getLanguages(false)), 'Upgrade'); $tab->name = array_fill(1, sizeof(Language::getLanguages(false)), 'Upgrade');
$res &= $tab->save(); $res &= $tab->save();
} }
else else
$tab = new Tab($idTab); $tab = new Tab($idTab);
Configuration::updateValue('PS_AUTOUPDATE_MODULE_IDTAB',$tab->id); Configuration::updateValue('PS_AUTOUPDATE_MODULE_IDTAB',$tab->id);
$autoupgradeDir = _PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'; $autoupgradeDir = _PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade';
if(!file_exists($autoupgradeDir)) if (!file_exists($autoupgradeDir))
$res &= @mkdir($autoupgradeDir); $res &= @mkdir($autoupgradeDir);
if(file_exists($autoupgradeDir.DIRECTORY_SEPARATOR.'ajax-upgradetab.php')) if (file_exists($autoupgradeDir.DIRECTORY_SEPARATOR.'ajax-upgradetab.php'))
$res &= unlink($autoupgradeDir.DIRECTORY_SEPARATOR.'ajax-upgradetab.php'); $res &= unlink($autoupgradeDir.DIRECTORY_SEPARATOR.'ajax-upgradetab.php');
if (!defined('_PS_MODULE_DIR_')) if (!defined('_PS_MODULE_DIR_'))
{ {
@@ -67,36 +93,35 @@ class Autoupgrade extends Module
$res &= copy(_PS_MODULE_DIR_.'autoupgrade/logo.gif',_PS_ROOT_DIR_. DIRECTORY_SEPARATOR . 'img/t/AdminSelfUpgrade.gif'); $res &= copy(_PS_MODULE_DIR_.'autoupgrade/logo.gif',_PS_ROOT_DIR_. DIRECTORY_SEPARATOR . 'img/t/AdminSelfUpgrade.gif');
if (!$res if (!$res
OR !Tab::getIdFromClassName('AdminSelfUpgrade') || !Tab::getIdFromClassName('AdminSelfUpgrade')
OR !parent::install() || !parent::install()
) )
return false; return false;
return true; return true;
} }
public function uninstall() public function uninstall()
{ {
$idtab = Configuration::get('PS_AUTOUPDATE_MODULE_IDTAB'); $idtab = Configuration::get('PS_AUTOUPDATE_MODULE_IDTAB');
$tab = new Tab($idtab,1); $tab = new Tab($idtab,1);
$res = $tab->delete(); $res = $tab->delete();
if(file_exists(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'tabs'.'AdminUpgrade.php')) if (file_exists(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'tabs'.'AdminUpgrade.php'))
{ {
// Should we create the correct AdminUpgrade tab (not the module) // Should we create the correct AdminUpgrade tab (not the module)
if($idOldTab = Tab::getIdFromClassName('AdminUpgrade')) if($idOldTab = Tab::getIdFromClassName('AdminUpgrade'))
{ {
$tab = new Tab($idOldTab); $tab = new Tab($idOldTab);
$res &= $tab->delete(); $res &= $tab->delete();
} }
$res &= unlink(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'tabs'.'AdminUpgrade.php'); $res &= unlink(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'tabs'.'AdminUpgrade.php');
} }
if (file_exists(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'.DIRECTORY_SEPARATOR.'ajax-upgradetab.php')) if (file_exists(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'.DIRECTORY_SEPARATOR.'ajax-upgradetab.php'))
$res &= @unlink(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'.DIRECTORY_SEPARATOR.'ajax-upgradetab.php'); $res &= @unlink(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'autoupgrade'.DIRECTORY_SEPARATOR.'ajax-upgradetab.php');
if (!$res OR !parent::uninstall()) if (!$res || !parent::uninstall())
return false; return false;
return true; return true;
} }
}
}
+3 -3
View File
@@ -116,13 +116,13 @@ class CarrierCompare extends Module
if (!Validate::isInt($id_state)) if (!Validate::isInt($id_state))
$errors[] = $this->l('Invalid state ID'); $errors[] = $this->l('Invalid state ID');
if ($id_state != 0 && !Validate::isLoadedObject(new State($id_state))) if ($id_state != 0 && !Validate::isLoadedObject(new State($id_state)))
$errors[] = $this->l('Invalid state ID'); $errors[] = $this->l('Please select a state');
if (!Validate::isInt($id_country) || !Validate::isLoadedObject(new Country($id_country))) if (!Validate::isInt($id_country) || !Validate::isLoadedObject(new Country($id_country)))
$errors[] = $this->l('Invalid country ID'); $errors[] = $this->l('Please select a country');
if (!$this->checkZipcode($zipcode, $id_country)) if (!$this->checkZipcode($zipcode, $id_country))
$errors[] = $this->l('Please use a valid zip/postal code depending on your country selection'); $errors[] = $this->l('Please use a valid zip/postal code depending on your country selection');
if (!Validate::isInt($id_carrier) || !Validate::isLoadedObject(new Carrier($id_carrier))) if (!Validate::isInt($id_carrier) || !Validate::isLoadedObject(new Carrier($id_carrier)))
$errors[] = $this->l('Invalid carrier ID'); $errors[] = $this->l('Please select a carrier');
if (sizeof($errors)) if (sizeof($errors))
return $errors; return $errors;
+2 -1
View File
@@ -2,10 +2,11 @@
<module> <module>
<name>ebay</name> <name>ebay</name>
<displayName><![CDATA[eBay]]></displayName> <displayName><![CDATA[eBay]]></displayName>
<version><![CDATA[1.2.8]]></version> <version><![CDATA[1.3]]></version>
<description><![CDATA[Open your shop on the eBay market place !]]></description> <description><![CDATA[Open your shop on the eBay market place !]]></description>
<author><![CDATA[PrestaShop]]></author> <author><![CDATA[PrestaShop]]></author>
<tab><![CDATA[market_place]]></tab> <tab><![CDATA[market_place]]></tab>
<confirmUninstall>Are you sure you want uninstall this module ? All your configuration will be lost.</confirmUninstall>
<is_configurable>1</is_configurable> <is_configurable>1</is_configurable>
<need_instance>1</need_instance> <need_instance>1</need_instance>
<limited_countries></limited_countries> <limited_countries></limited_countries>
+2 -2
View File
@@ -1163,8 +1163,8 @@ class eBayRequest
'status' => (string)$order->CheckoutStatus->Status, 'status' => (string)$order->CheckoutStatus->Status,
'date' => substr((string)$order->CreatedTime, 0, 10).' '.substr((string)$order->CreatedTime, 11, 8), 'date' => substr((string)$order->CreatedTime, 0, 10).' '.substr((string)$order->CreatedTime, 11, 8),
'name' => (string)$order->ShippingAddress->Name, 'name' => (string)$order->ShippingAddress->Name,
'firstname' => trim($name[0]), 'firstname' => substr(trim($name[0]), 0, 32),
'familyname' => (isset($name[1]) ? trim($name[1]) : trim($name[0])), 'familyname' => (isset($name[1]) ? substr(trim($name[1]), 0, 32) : substr(trim($name[0]), 0, 32)),
'address1' => (string)$order->ShippingAddress->Street1, 'address1' => (string)$order->ShippingAddress->Street1,
'address2' => (string)$order->ShippingAddress->Street2, 'address2' => (string)$order->ShippingAddress->Street2,
'city' => (string)$order->ShippingAddress->CityName, 'city' => (string)$order->ShippingAddress->CityName,
+6 -1
View File
@@ -59,7 +59,7 @@ class Ebay extends Module
{ {
$this->name = 'ebay'; $this->name = 'ebay';
$this->tab = 'market_place'; $this->tab = 'market_place';
$this->version = '1.2.8'; $this->version = '1.3';
$this->author = 'PrestaShop'; $this->author = 'PrestaShop';
parent::__construct (); parent::__construct ();
$this->displayName = $this->l('eBay'); $this->displayName = $this->l('eBay');
@@ -113,6 +113,9 @@ class Ebay extends Module
// Loading Shipping Method // Loading Shipping Method
$this->loadShippingMethod(); $this->loadShippingMethod();
// Warning uninstall
$this->confirmUninstall = $this->l('Are you sure you want uninstall this module ? All your configuration will be lost.');
} }
} }
@@ -434,6 +437,8 @@ class Ebay extends Module
$cartAdd->id_carrier = 1; $cartAdd->id_carrier = 1;
$cartAdd->id_lang = $this->id_lang; $cartAdd->id_lang = $this->id_lang;
$cartAdd->id_currency = Currency::getIdByIsoCode('EUR'); $cartAdd->id_currency = Currency::getIdByIsoCode('EUR');
$cartAdd->recyclable = 0;
$cartAdd->gift = 0;
$cartAdd->add(); $cartAdd->add();
foreach ($order['product_list'] as $product) foreach ($order['product_list'] as $product)
if ($cartAdd->updateQty((int)($product['quantity']), (int)($product['id_product']), ((isset($product['id_product_attribute']) && $product['id_product_attribute'] > 0) ? $product['id_product_attribute'] : NULL))) if ($cartAdd->updateQty((int)($product['quantity']), (int)($product['id_product']), ((isset($product['id_product_attribute']) && $product['id_product_attribute'] > 0) ? $product['id_product_attribute'] : NULL)))
+1
View File
@@ -9,6 +9,7 @@ $_MODULE['<{ebay}prestashop>ebay_8acabcc788c316f92b7850c76265b49b'] = 'Vous deve
$_MODULE['<{ebay}prestashop>ebay_d591cbc447d01e5a6165096ebfdf804e'] = 'Vous devez activer l\'extension cURL sur votre serveur si vous désirez utiliser ce module.'; $_MODULE['<{ebay}prestashop>ebay_d591cbc447d01e5a6165096ebfdf804e'] = 'Vous devez activer l\'extension cURL sur votre serveur si vous désirez utiliser ce module.';
$_MODULE['<{ebay}prestashop>ebay_1b18bd5d9d85f4f667614345ee20e3b2'] = 'Vous devez activer l\'option allow_url_fopen sur votre serveur si vous désirez utiliser ce module.'; $_MODULE['<{ebay}prestashop>ebay_1b18bd5d9d85f4f667614345ee20e3b2'] = 'Vous devez activer l\'option allow_url_fopen sur votre serveur si vous désirez utiliser ce module.';
$_MODULE['<{ebay}prestashop>ebay_8e64bc164aee46723ed2d70273c6f8ab'] = 'Vous devez enregistrer le module sur eBay'; $_MODULE['<{ebay}prestashop>ebay_8e64bc164aee46723ed2d70273c6f8ab'] = 'Vous devez enregistrer le module sur eBay';
$_MODULE['<{ebay}prestashop>ebay_55798d71e1cce07f08e25d9a4da60f4a'] = 'Etes-vous sûr de vouloir désinstaller ce module? Toute votre configuration sera perdue.';
$_MODULE['<{ebay}prestashop>ebay_5f8d9c30e0606a91c5d7b6e1bf1217ac'] = 'N\'a pas pu ajouté les produits au panier (peut être votre stock est il à 0)'; $_MODULE['<{ebay}prestashop>ebay_5f8d9c30e0606a91c5d7b6e1bf1217ac'] = 'N\'a pas pu ajouté les produits au panier (peut être votre stock est il à 0)';
$_MODULE['<{ebay}prestashop>ebay_25fff46a6fe5b9512e2f4054f4ff6060'] = 'N\'a pas pu trouvé les produits dans votre catalogue'; $_MODULE['<{ebay}prestashop>ebay_25fff46a6fe5b9512e2f4054f4ff6060'] = 'N\'a pas pu trouvé les produits dans votre catalogue';
$_MODULE['<{ebay}prestashop>ebay_eaa0d1591e6369a298dcd6cb1a8eba8a'] = 'E-mail invalide'; $_MODULE['<{ebay}prestashop>ebay_eaa0d1591e6369a298dcd6cb1a8eba8a'] = 'E-mail invalide';
@@ -63,7 +63,7 @@ class MRManagement extends MondialRelay
SET `id_method` = '.(int)$this->_params['id_mr_method'].', '; SET `id_method` = '.(int)$this->_params['id_mr_method'].', ';
if (is_array($this->_params['relayPointInfo'])) if (is_array($this->_params['relayPointInfo']))
foreach($this->_params['relayPointInfo'] as $nameKey => $value) foreach($this->_params['relayPointInfo'] as $nameKey => $value)
$query .= '`MR_Selected_'.$nameKey.'` = "'.$value.'", '; $query .= '`MR_Selected_'.pSQL($nameKey).'` = "'.pSQL($value).'", ';
else // Clean the existing relay point data else // Clean the existing relay point data
$query .= ' $query .= '
MR_Selected_Num = NULL, MR_Selected_Num = NULL,
@@ -82,14 +82,14 @@ class MRManagement extends MondialRelay
(`id_customer`, `id_method`, `id_cart`, '; (`id_customer`, `id_method`, `id_cart`, ';
if (is_array($this->_params['relayPointInfo'])) if (is_array($this->_params['relayPointInfo']))
foreach($this->_params['relayPointInfo'] as $nameKey => $value) foreach($this->_params['relayPointInfo'] as $nameKey => $value)
$query .= '`MR_Selected_'.$nameKey.'`, '; $query .= '`MR_Selected_'.pSQL($nameKey).'`, ';
$query = rtrim($query, ', ').') VALUES ( $query = rtrim($query, ', ').') VALUES (
'.$this->_params['id_customer'].', '.$this->_params['id_customer'].',
'.$this->_params['id_mr_method'].', '.$this->_params['id_mr_method'].',
'.$this->_params['id_cart'].', '; '.$this->_params['id_cart'].', ';
if (is_array($this->_params['relayPointInfo'])) if (is_array($this->_params['relayPointInfo']))
foreach($this->_params['relayPointInfo'] as $nameKey => $value) foreach($this->_params['relayPointInfo'] as $nameKey => $value)
$query .= '"'.$value.'", '; $query .= '"'.pSQL($value).'", ';
$query = rtrim($query, ', ').')'; $query = rtrim($query, ', ').')';
} }
Db::getInstance()->Execute($query); Db::getInstance()->Execute($query);
+6 -4
View File
@@ -922,12 +922,14 @@ class MondialRelay extends Module
<fieldset class="PS_MRFormStyle"> <fieldset class="PS_MRFormStyle">
<legend> <legend>
<img src="../modules/mondialrelay/images/logo.gif" />'.$this->l('Advanced Settings'). ' - <img src="../modules/mondialrelay/images/logo.gif" />'.$this->l('Advanced Settings'). ' -
<a href="javascript:void(0);" id="PS_MRDisplayPersonalizedOptions"><font style="color:#00b511;">'.$this->l('Click to display / hide the options').'</font> </a>'. <a href="javascript:void(0);" id="PS_MRDisplayPersonalizedOptions">
<font style="color:#00b511;">'.$this->l('Click to display / hide the options').'</font>
</a>'.
'</legend> '</legend>
<div id="PS_MRAdvancedSettings"> <div id="PS_MRAdvancedSettings">
<p> <p>'.
'.$this->l('URL Cron Task:').' '.Tools::getHttpHost(true, true) $this->l('URL Cron Task:').' '.Tools::getHttpHost(true, true).
._MODULE_DIR_.$this->name.'/cron.php?secure_key='. _MODULE_DIR_.$this->name.'/cron.php?secure_key='.
Configuration::get('MONDIAL_RELAY_SECURE_KEY'). Configuration::get('MONDIAL_RELAY_SECURE_KEY').
'</p> '</p>
</div> </div>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

+1
View File
@@ -96,6 +96,7 @@ class Ogone extends PaymentModule
<li><a href="../modules/'.$this->name.'/docs/en2.png">'.$this->l('See the screenshot for step').' 2</a></li> <li><a href="../modules/'.$this->name.'/docs/en2.png">'.$this->l('See the screenshot for step').' 2</a></li>
<li><a href="../modules/'.$this->name.'/docs/en3.png">'.$this->l('See the screenshot for step').' 3</a></li> <li><a href="../modules/'.$this->name.'/docs/en3.png">'.$this->l('See the screenshot for step').' 3</a></li>
<li><a href="../modules/'.$this->name.'/docs/en4.png">'.$this->l('See the screenshot for step').' 4</a></li> <li><a href="../modules/'.$this->name.'/docs/en4.png">'.$this->l('See the screenshot for step').' 4</a></li>
<li><a href="../modules/'.$this->name.'/docs/en5.png">'.$this->l('See the screenshot for step').' 5</a></li>
</ol> </ol>
</li> </li>
</ol> </ol>
+3 -3
View File
@@ -297,10 +297,10 @@ abstract class PSCPrepaidServices extends PaymentModule
foreach ($this->_getAllowedCurrencies() AS $currency) foreach ($this->_getAllowedCurrencies() AS $currency)
{ {
$mid = Configuration::get($this->prefix.'MERCHANT_ID_'.$currency['iso_code']); $mid = Configuration::get($this->prefix.'MERCHANT_ID_'.$currency['iso_code']);
$certificateExiste = ''; $certificate = '';
$passwordExist = ''; $passwordExist = '';
if (file_exists($this->certificat_dir.$mid.'.pem')) if (file_exists($this->certificat_dir.$mid.'.pem'))
$certificateExiste = '<div style="color:#00b511; text-align:center;">'.$this->l('A certificate has been found for this configuration').' : '.$mid.'.pem'.'</div><br />'; $certificate = '<div style="color:#00b511; text-align:center;">'.$this->l('A certificate has been found for this configuration').' : '.$mid.'.pem'.'</div><br />';
if (Configuration::get($this->prefix.'KEYRING_PW_'.$currency['iso_code'])) if (Configuration::get($this->prefix.'KEYRING_PW_'.$currency['iso_code']))
$passwordExist = '<div style="color:#00b511; text-align:center;">'.$this->l('A password has already been saved'); $passwordExist = '<div style="color:#00b511; text-align:center;">'.$this->l('A password has already been saved');
@@ -317,7 +317,7 @@ abstract class PSCPrepaidServices extends PaymentModule
<div class="margin-form"> <div class="margin-form">
<input type="file" name="ct_keyring_certificate_'.$currency['iso_code'].'" /> <input type="file" name="ct_keyring_certificate_'.$currency['iso_code'].'" />
</div> </div>
'.$certificateExiste.' '.$certificate.'
<label>'.$this->getL('keyring_pw').'</label> <label>'.$this->getL('keyring_pw').'</label>
<div class="margin-form"> <div class="margin-form">
<input type="password" name="ct_keyring_pw_'.$currency['iso_code'].'" value=""/> <input type="password" name="ct_keyring_pw_'.$currency['iso_code'].'" value=""/>
@@ -6,21 +6,24 @@
</head> </head>
<body> <body>
<table style="font-family: Verdana,sans-serif; font-size: 11px; color: #374953; width: 550px;"> <table style="font-family: Verdana,sans-serif; font-size: 11px; color: #374953; width: 550px;">
<tbody>
<tr> <tr>
<td align="left"><a title="{shop_name}" href="{shop_url}"><img style="border: none;" src="{shop_logo}" alt="{shop_name}" /></a></td> <td align="left">
<a href="{shop_url}" title="{shop_name}"><img alt="{shop_name}" src="{shop_logo}" style="border:none;" ></a>
</td>
</tr> </tr>
<tr> <tr>
<td align="left">Danke, dass Sie bei {shop_name} eingekauft haben. Waren Sie mit Ihrem Einkauf und unserem Service zufrieden? Hier können Sie {shop_name} bewerten, wir freuen uns auf Ihr Feedback. <td align="left">
Danke, dass Sie bei {shop_name} eingekauft haben. Waren Sie mit Ihrem Einkauf und unserem Service zufrieden? Hier können Sie {shop_name} bewerten, wir freuen uns auf Ihr Feedback.
<br /><br />
<center><a href="{rating_url}"><img border="0" src="{button_url}/apply_en.gif" alt="Wir freuen uns auf Ihr Feedback" /></a></center>
</td>
</tr> </tr>
<tr><td>&nbsp;</td></tr>
<tr> <tr>
<td>&nbsp;</td> <td align="center" style="font-size:10px; border-top: 1px solid #D9DADE;">
<a href="{shop_url}" style="color:#DB3484; font-weight:bold; text-decoration:none;">{shop_name}</a> powered with <a href="http://www.prestashop.com/" style="text-decoration:none; color:#374953;">PrestaShop™</a>
</td>
</tr> </tr>
<tr>
<td style="font-size: 10px; border-top: 1px solid #D9DADE;" align="center"><a style="color: #db3484; font-weight: bold; text-decoration: none;" href="{shop_url}">{shop_name}</a> powered with <a style="text-decoration: none; color: #374953;" href="http://www.prestashop.com/">PrestaShop&trade;</a></td>
</tr>
</tbody>
</table> </table>
</body> </body>
</html> </html>
@@ -13,7 +13,7 @@
</tr> </tr>
<tr> <tr>
<td align="left"> <td align="left">
Merci pour votre achat chez {shop_name}. Etes vous satisfait du service chez {shop_name}? Vous pouvez donner votre avis et nous évaluer. Merci pour votre achat chez {shop_name}. Etes-vous satisfait du service chez {shop_name}? Vous pouvez donner votre avis et nous évaluer.
<br /><br /> <br /><br />
<center><a href="{rating_url}"><img border="0" src="{button_url}/apply_fr.gif" alt="Evaluez nous" /></a></center> <center><a href="{rating_url}"><img border="0" src="{button_url}/apply_fr.gif" alt="Evaluez nous" /></a></center>
</td> </td>
@@ -1,3 +1,3 @@
Merci pour votre achat chez {shop_name}. Etes vous satisfait du service chez {shop_name}? Vous pouvez donner votre avis et nous évaluer sur {rating_url} Merci pour votre achat chez {shop_name}. Etes-vous satisfait du service chez {shop_name}? Vous pouvez donner votre avis et nous évaluer sur {rating_url}
{shop_url} réalisé par PrestaShop™ {shop_url} réalisé par PrestaShop™
+151 -3
View File
@@ -881,9 +881,11 @@ $_LANGADM['AdminEmployeesa9e4402481bd9b8e36752bf731f67eb6'] = 'Thème :';
$_LANGADM['AdminEmployeese4b41fb20213ac1461a81cb0c310bd97'] = 'Mode d\'interface'; $_LANGADM['AdminEmployeese4b41fb20213ac1461a81cb0c310bd97'] = 'Mode d\'interface';
$_LANGADM['AdminEmployeesf177aa999000021a3901ac78a2728b59'] = 'Affichage au survol'; $_LANGADM['AdminEmployeesf177aa999000021a3901ac78a2728b59'] = 'Affichage au survol';
$_LANGADM['AdminEmployeesd4e0f6342c209912053fec10be72c94b'] = 'Affichage au clic'; $_LANGADM['AdminEmployeesd4e0f6342c209912053fec10be72c94b'] = 'Affichage au clic';
$_LANGADM['AdminEmployees24a23d787190f2c4812ff9ab11847a72'] = 'Statut :'; $_LANGADM['AdminEmployees79f79257476673a2aea1b2a41adf3384'] = 'Afficher le screencast:';
$_LANGADM['AdminEmployees00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; $_LANGADM['AdminEmployees00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
$_LANGADM['AdminEmployeesb9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé'; $_LANGADM['AdminEmployeesb9f5c797ebbf55adccdd8539a65a0241'] = 'Désactivé';
$_LANGADM['AdminEmployees4d1f8c97363b784de6d8924bc655cab6'] = 'Afficher la vidéo de présentation sur le tableau de bord du panneau d\'administration';
$_LANGADM['AdminEmployees24a23d787190f2c4812ff9ab11847a72'] = 'Statut :';
$_LANGADM['AdminEmployees41bc9496fbde8565bd5fc699e513fbd9'] = 'Autoriser cet employé à se connecter au Back Office'; $_LANGADM['AdminEmployees41bc9496fbde8565bd5fc699e513fbd9'] = 'Autoriser cet employé à se connecter au Back Office';
$_LANGADM['AdminEmployees9fbf3617c6172a75648e9ac0a864bb56'] = 'Profil :'; $_LANGADM['AdminEmployees9fbf3617c6172a75648e9ac0a864bb56'] = 'Profil :';
$_LANGADM['AdminEmployees7bc873cba11f035df692c3549366c722'] = '-- Choisissez --'; $_LANGADM['AdminEmployees7bc873cba11f035df692c3549366c722'] = '-- Choisissez --';
@@ -2552,8 +2554,13 @@ $_LANGADM['AdminScenesc820e0c1d4ae16db218626f49e7916b1'] = 'Ko max.';
$_LANGADM['AdminScenes0b24516ee8c68a18020951583bc3b8ab'] = 'Automatiquement redimensionné à'; $_LANGADM['AdminScenes0b24516ee8c68a18020951583bc3b8ab'] = 'Automatiquement redimensionné à';
$_LANGADM['AdminScenes8a5c9824486e8c1f74cb4c4ec8f9e465'] = '(hauteur x largeur)'; $_LANGADM['AdminScenes8a5c9824486e8c1f74cb4c4ec8f9e465'] = '(hauteur x largeur)';
$_LANGADM['AdminScenesa5394858079fa378684b20a1abc0e9be'] = 'Note : Pour changer la dimension de base des images de scènes, veuillez modifier le paramètre \'large_scene\' avec les dimensions souhaitées (dans le Back office : Onglet \'Préférences\' > Onglet \'Image\').'; $_LANGADM['AdminScenesa5394858079fa378684b20a1abc0e9be'] = 'Note : Pour changer la dimension de base des images de scènes, veuillez modifier le paramètre \'large_scene\' avec les dimensions souhaitées (dans le Back office : Onglet \'Préférences\' > Onglet \'Image\').';
$_LANGADM['AdminScenes56a8a9eb05f9014da51a4f9b57322ac7'] = 'Catégorie(s) :'; $_LANGADM['AdminScenes8cf04a9734132302f96da8e113e80ce5'] = 'Accueil';
$_LANGADM['AdminScenes19f2cd1d239a894f67d4ac73058af014'] = 'Cochez les cases des catégories dans lesquelles la scène doit apparaître.'; $_LANGADM['AdminScenesef7de3f485174ff47f061ad27d83d0ee'] = 'selectionée(s)';
$_LANGADM['AdminScenesb56c3bda503a8dc4be356edb0cc31793'] = 'Tout replier';
$_LANGADM['AdminScenes5ffd7a335dd836b3373f5ec570a58bdc'] = 'Tout étendre';
$_LANGADM['AdminScenes5e9df908eafa83cb51c0a3720e8348c7'] = 'Tout cocher';
$_LANGADM['AdminScenes9747d23c8cc358c5ef78c51e59cd6817'] = 'Tout décocher';
$_LANGADM['AdminScenes8c38776925f7cf41c090646a43157024'] = 'Catégories :';
$_LANGADM['AdminScenesf16b5952df8d25ea30b25ff95ee8fedf'] = 'Boutiques associées'; $_LANGADM['AdminScenesf16b5952df8d25ea30b25ff95ee8fedf'] = 'Boutiques associées';
$_LANGADM['AdminScenesdf41d831253828e9852a25c72393fde8'] = 'Enregistrez la scène'; $_LANGADM['AdminScenesdf41d831253828e9852a25c72393fde8'] = 'Enregistrez la scène';
$_LANGADM['AdminScenesf5dae0e1b3d4bc66fadd2840b4f79227'] = 'Veuillez ajouter une image pour continuer'; $_LANGADM['AdminScenesf5dae0e1b3d4bc66fadd2840b4f79227'] = 'Veuillez ajouter une image pour continuer';
@@ -3073,6 +3080,147 @@ $_LANGADM['AdminTranslations52d83d7ed502b33d300a8c0af2c5b455'] = 'Liste des them
$_LANGADM['AdminTranslationsc21f969b5f03d33d43e04f8f136e7682'] = 'defaut'; $_LANGADM['AdminTranslationsc21f969b5f03d33d43e04f8f136e7682'] = 'defaut';
$_LANGADM['AdminTranslationsa9e4402481bd9b8e36752bf731f67eb6'] = 'Thème'; $_LANGADM['AdminTranslationsa9e4402481bd9b8e36752bf731f67eb6'] = 'Thème';
$_LANGADM['AdminTranslations53b3cae42737979c884275593a01f468'] = 'Module :'; $_LANGADM['AdminTranslations53b3cae42737979c884275593a01f468'] = 'Module :';
$_LANGADM['AdminUpgrade875b8a59022d232837491c0fdfacb4ab'] = 'Ne pas sauver les images';
$_LANGADM['AdminUpgradea8d6c6734da0083021561b23f2fa88cc'] = 'Vous pouvez exclure le dossier image de la sauvegarde si vous l\'avez déjà sauvegardé d\'une autre manière (non recommandé)';
$_LANGADM['AdminUpgradeaf98608eaedd4ba7ffd47a0204e84b23'] = 'Conserver le thème \"prestashop\" actuel';
$_LANGADM['AdminUpgrade4ea56ca1a757e426911ff20889c0e93c'] = 'Si vous avez personnalisé le thème par défaut de PrestaShop, vous pouvez le protéger de la mise à niveau (non recommandé)';
$_LANGADM['AdminUpgrade8413c63a6ef3717a974094785fd0b588'] = 'Garder les traductions';
$_LANGADM['AdminUpgrade51bbcf7afb0f8d35501d0a7b28979b06'] = 'Si \"oui\", vous conserverez toutes vos traductions';
$_LANGADM['AdminUpgrade8c8194a465f0163a6724907755ac1b82'] = 'Mode manuel';
$_LANGADM['AdminUpgradedd9dbd4916653d683244119a067ca467'] = 'Choisissze \"oui\" si vous voulez vous ';
$_LANGADM['AdminUpgradee7b6d601ff4e9069e726927e211274ea'] = 'Utiliser Subversion';
$_LANGADM['AdminUpgradea15b09729294cf7fea1096f970a0fed4'] = 'Choisissez \"oui\" si vous voulez utiliser une version non stable au lieu de l';
$_LANGADM['AdminUpgrade36be1130454bc8c4e0a41d36fa062a8b'] = 'Impossible de créer le répertoire %s';
$_LANGADM['AdminUpgradee21a52b9631b01c3f1821795b8de451c'] = 'Processus de mise à niveau terminé. Félicitations! Vous pouvez maintenant réactive de votre boutique.';
$_LANGADM['AdminUpgrade7b2f224649ef2ad10a2d73595d67a876'] = 'Démarrage mise à niveau ...';
$_LANGADM['AdminUpgrade6824d57b7af37f605bd97d34defc3761'] = 'Exportation svn terminée. Suppression des fichiers exemples...';
$_LANGADM['AdminUpgradef70307d8297e48a8783d41e6f3313d51'] = 'Erreur lors de l\'export SVN';
$_LANGADM['AdminUpgrade4eecd9c195e46c054ef7da6d9d1a738b'] = 'Extraction terminée. Suppression des fichiers exemples...';
$_LANGADM['AdminUpgrade0929f38eaac3ca38801f08b7269574e0'] = 'Impossible d\'extraire %1$s dans %2$s ...';
$_LANGADM['AdminUpgrade6b2d0404b7faba0e791e15a52586a149'] = 'Basculer vers svn checkout (useSvn activé)';
$_LANGADM['AdminUpgradef0e38ac0c558a7f216ae98382b9e58f5'] = 'Site désactivé. Téléchargement en cours (peut prendre ';
$_LANGADM['AdminUpgrade4f7c02592a962e40a920f32f3a24f2df'] = 'filesToUpgrade n\'est pas un tableau';
$_LANGADM['AdminUpgrade3f10faa8b44a7175ae8fc5dcb8dec5de'] = 'Tous les fichiers ont été mis à jour. Mise à jour de la base de données en cours.';
$_LANGADM['AdminUpgrade1ad932e3b85eb2907a817cd3e3e6907e'] = 'Erreur pour la mise à jour de %s';
$_LANGADM['AdminUpgrade078a325fbcc1dbd50bd9f969ce954965'] = 'encore %2$s fichiers à mettre à jour.';
$_LANGADM['AdminUpgrade62740df131433ec9d45bf1810eefb19b'] = 'erreur pendant la mise à jour de la base de données.';
$_LANGADM['AdminUpgrade9a2f2cf276ea9f79b31a815897c0e3e6'] = '%s ignoré.';
$_LANGADM['AdminUpgrade63ded4905ba41ac4bf00373df2739576'] = 'création du répertoire %2$s. encore %3$s fichiers à mettre à jour.';
$_LANGADM['AdminUpgrade11978affb3b0dbb16c50d571fd05de6d'] = 'erreur lors de la création du répertoire %s';
$_LANGADM['AdminUpgrade1b854285afc1988b6f83414fde5943ab'] = '%1$s copié dans %2$s. encore %3$s fichiers à mettre à jour.';
$_LANGADM['AdminUpgrade0e06ce0972ad338e1d96e8589dc21b9c'] = 'erreur lors de la copie de %1$s vers %2$s';
$_LANGADM['AdminUpgrade0511620a3a1d6036d3fbe47b131d7c4b'] = 'Fichiers restorés. Restauration de la base de données.';
$_LANGADM['AdminUpgrade791403f158965a3e19f8627c7b744126'] = 'Base de données restaurée.';
$_LANGADM['AdminUpgrade5f7f50973696d0a42c1efcc07f7820a0'] = 'Votre site est maintenant restauré.';
$_LANGADM['AdminUpgrade28517b8a291c50d80aa53a078407065b'] = 'Répertoire racine nettoyée.';
$_LANGADM['AdminUpgradebb71892737d721949538d6e1c4d3d22d'] = 'Fichiers restaurés. Sauvegarde de la base de données non trouvée. Restauration terminée.';
$_LANGADM['AdminUpgradecb7dce5f6a1934d54c0d3335c7ffe841'] = 'Fichiers restaurés.';
$_LANGADM['AdminUpgrade8efc36d230f76fbfd9e4d758964e9414'] = 'impossible d\'extraire %1$ s dans%2$s.';
$_LANGADM['AdminUpgraded7624db09c15d46cd37d7709ae05e44b'] = 'aucune sauvegarde trouvée. Il n\'y a rien à restaurer.';
$_LANGADM['AdminUpgrade09a362e2dd3800f8fbc55d3446513f65'] = 'Rien à restaurer (aucune requête trouvée)';
$_LANGADM['AdminUpgrade66c4cbfb21f294b233692b67356db647'] = 'Base de données sauvegardée dans %s. Mise à jour des fichiers ...';
$_LANGADM['AdminUpgrade48f95ff09327408a578e91655ed872a1'] = '%s fichiers à sauvegarder.';
$_LANGADM['AdminUpgrade70960f2aa87d307170d3a1bc3e06d904'] = 'sauvegarde des fichiers initilialisée dans %s';
$_LANGADM['AdminUpgrade8cf728d701c50a59ef78b7c55fc27cd4'] = 'Les fichiers de sauvegarde en cours. Encore %s ...';
$_LANGADM['AdminUpgrade15b353ca964fe816547e67e1508ff85d'] = 'Fichiers sauvegardés. Sauvegarde de la base de données ...';
$_LANGADM['AdminUpgradea25c4f085558c5f6e519e56257af531f'] = 'tous les fichiers ont été ajoutés à l\'archive.';
$_LANGADM['AdminUpgrade91f805cf850500bda66426aea042602f'] = '%1$ s ajouté à l\'archive. Encore %2$.';
$_LANGADM['AdminUpgradef79479c0de75d568def0afdc1e5de04e'] = 'Erreur lorsque vous essayez d\'ajouter %1$s à l\'archive %2$s.';
$_LANGADM['AdminUpgradeb9a2db69065827812dd4b7a7f9ffc0b1'] = 'impossible d\'ouvrir l\'archive';
$_LANGADM['AdminUpgrade2589a25910cd3d7fab7e45361c4cb39d'] = '%1$s supprimé. reste %2$s ';
$_LANGADM['AdminUpgraded82eef1ba081c54686767c555670c0fe'] = 'erreur lors de la suppression de %1$s, reste encore %2$s ';
$_LANGADM['AdminUpgrade344c592d141604c614c219fad3fa0dae'] = '%1$s fichiers exemple à supprimer';
$_LANGADM['AdminUpgrade0baf8c94d1d03d1621c17cd6eabf7b9f'] = 'Tous les exemples de fichiers supprimés. Sauvegarde des fichiers en cours...';
$_LANGADM['AdminUpgrade84e31682487d5a0937f9184ebcf594ba'] = 'copie de travail déjà %s à jour. exportation vers le répertoire latest';
$_LANGADM['AdminUpgrade8f4c8c87daa3bc0311cfb61b7d36e27b'] = 'Erreur d\'extraction du SVN';
$_LANGADM['AdminUpgrade0e81132066d433d212e237678e1193a3'] = 'non authorisé à utiliser SVN';
$_LANGADM['AdminUpgradeb0d51f91a1118b7c39ee1835cc6c926a'] = 'Téléchargement terminé. Extraction ...';
$_LANGADM['AdminUpgrade0c0db54fe8212c1a7215005fef75d7dd'] = 'Erreur pendant le téléchargement';
$_LANGADM['AdminUpgrade93120c07d8c5cee44042627cd493e0e0'] = 'vous avez besoin allow_url_fopen pour le téléchargement automatique. Vous pouvez également placer le fichier manuellement dans %s';
$_LANGADM['AdminUpgrade3bb38e7d0bfd5a02f7c06cae446fee86'] = 'l\'action %s ignorée';
$_LANGADM['AdminUpgrade19f823c6453c2b1ffd09cb715214813d'] = 'Champs requis';
$_LANGADM['AdminUpgrade760c4026bc5a0bd5378e6efc3f1370b4'] = 'Trop long !';
$_LANGADM['AdminUpgrade4f2e28904946a09d8c7f36dd3ee72457'] = 'Les champs sont différents !';
$_LANGADM['AdminUpgrade43b01d1a6c5065545c65f42003b0ab5c'] = 'Adresse incorrecte !';
$_LANGADM['AdminUpgrade2e170dfd78c2171a25605ececc0950a4'] = 'Impossible d\'envoyer l\'email !';
$_LANGADM['AdminUpgrade6deee80e4bdb8894331994116818558e'] = '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/)';
$_LANGADM['AdminUpgradeaa946cb00b1c23ff6553b6f9e05da151'] = '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.';
$_LANGADM['AdminUpgradee930e2474c664a3a7e89ecfb8793694b'] = 'Impossible d\'envoyer le fichier !';
$_LANGADM['AdminUpgrade774fc7a0f56391abc5d8856f2436ca07'] = 'L\'intégrité des données n\'est pas validée.';
$_LANGADM['AdminUpgrade8fd007bf08e0717537825a3e91cb4fcc'] = 'Impossible de lire le contenu d\'un des fichiers *.sql.';
$_LANGADM['AdminUpgradec71e825f6873f64b91efc26313614eab'] = 'Impossible d\'accéder au contenu d\'un des fichiers *.sql.';
$_LANGADM['AdminUpgrade3d5c8f1d29b1a1dc4ea0673122e0d277'] = 'Erreur lors de l\'insertion dans la base :';
$_LANGADM['AdminUpgrade17e1581d01152347bfaacd153b961379'] = 'Mot de passe incorrect (chaîne alpha-numérique d\'au moins 8 caractères)';
$_LANGADM['AdminUpgrade9b9f3b2f8a4dffcad9188c8fc4b468c8'] = 'Une base de données PrestaShop existe déjà avec ce préfixe, vous devez la supprimer manuellement ou changer son préfixe.';
$_LANGADM['AdminUpgradebc5e1163a15106f9e941a7603124709d'] = 'Ce n\'est pas un nom valide.';
$_LANGADM['AdminUpgradea9d82945b8603f0c8807958d7db9a24d'] = 'Ce n\'est pas une image valide.';
$_LANGADM['AdminUpgradeb37eef07b764ea58eec9afe624e20a40'] = 'Erreur lors de la création du fichier /config/settings.inc.php.';
$_LANGADM['AdminUpgrade3d9f514d46849760ef1b1412e314fd99'] = 'Erreur :';
$_LANGADM['AdminUpgrade504053ab4c6d648edf11624f1bea4bb4'] = 'Cette base de données PrestaShop existe déjà, merci de revalider vos informations d\'authentification à la base de données.';
$_LANGADM['AdminUpgraded7a99f61bb284d096ea4f221784af85a'] = 'Une erreur est survenue lors du redimensionnement de l\'image.';
$_LANGADM['AdminUpgrade428c933bafbf262d693fbf1c22c03e5d'] = 'La base de données a été trouvée !';
$_LANGADM['AdminUpgrade76bd190129b7aefb90fdf42f09ec3ec7'] = 'Le serveur de bases de données est disponible mais la base de données n\'a pas été trouvée';
$_LANGADM['AdminUpgrade045f4b5c3f990e5a26e2837495d68259'] = 'Le serveur de bases de données n\'a pas été trouvé, merci de vérifier vos identifiants ou le nom du serveur.';
$_LANGADM['AdminUpgrade757fc72e8d69106dd2cf9da22cc7adb1'] = 'Une erreur est survenue lors de l\'envoi de l\'email, merci de vérifier vos paramètres.';
$_LANGADM['AdminUpgraded18ad19290b3bfc3cd0d7badbb6cb6a3'] = 'Impossible d\'écrire l\'image /img/logo.jpg. Si celle-ci existe déjà, merci de la supprimer manuellement.';
$_LANGADM['AdminUpgrade2368e33e3e01d53abb9b60061ab83903'] = 'Le fichier envoyé dépasse la taille maximum autorisée.';
$_LANGADM['AdminUpgradea10ef376d9f4c877ac86d8e4350116bf'] = 'Le fichier envoyé dépasse la taille maximum autorisée.';
$_LANGADM['AdminUpgradef8fe8cba1625eaf8e5c253b041d57dbd'] = 'Le fichier a été envoyé partiellement.';
$_LANGADM['AdminUpgrade8c9067e52e4440d8a20e74fdc745b0c6'] = 'Aucun fichier n\'a été envoyé';
$_LANGADM['AdminUpgrade2384d693d9af53b4727c092af7570a19'] = 'Il manque le dossier temporaire de réception de vos envois de fichiers. Merci de consulter votre administrateur système.';
$_LANGADM['AdminUpgradef5985b2c059d5cc36968baab7585baba'] = 'Impossible d\'écrire le fichier sur le disque';
$_LANGADM['AdminUpgrade9e54dfe54e03b0010c1fe70bd65cd5e6'] = 'Envoi de fichier interrompu à cause de l\'extension incorrecte';
$_LANGADM['AdminUpgrade32af3a59b50e98d254d6c03c5b320a94'] = 'Impossible de convertir les données de votre base de données en utf-8.';
$_LANGADM['AdminUpgrade989a45a4ca01ee222f4370172bf8850d'] = 'Nom de boutique invalide';
$_LANGADM['AdminUpgrade68499acecfba9d3bf0ca8711f300d3ed'] = 'Votre prénom contient des caractères invalides';
$_LANGADM['AdminUpgrade2399cf4ca7b49f2706f6e147a32efa78'] = 'Votre nom contient des caractères invalides';
$_LANGADM['AdminUpgrade7d72600fcff52fb3a2d2f73572117311'] = 'Votre serveur de base de données ne supporte pas le jeu de caractère utf-8.';
$_LANGADM['AdminUpgrade5b9bbadcf96f15e7f112c13a9e5f076e'] = 'Le support de ce moteur de base de donnée n\'est pas supporté, veuillez en choisir un autre tel que MyISAM';
$_LANGADM['AdminUpgrade24b481455c1b72b0c2539e7d516b9582'] = 'Le fichier /img/logo.jpg n\'a pas les droits d\'écriture, merci d\'effectuer un CHMOD 755 ou 777 sur ce fichier';
$_LANGADM['AdminUpgrade5746b74663148afffd1350c97d4fcdfe'] = 'Champ mode catalog invalide';
$_LANGADM['AdminUpgrade9e5459c4deb20b7842ac01e97390b334'] = 'Erreur inconnue.';
$_LANGADM['AdminUpgradedafe44b99256a7783bc37f4f949da373'] = 'Cet installeur est trop vieux.';
$_LANGADM['AdminUpgrade37ce0f29c7377c827e7247fe5645a782'] = 'Vous êtes déjà en possession de la version %s';
$_LANGADM['AdminUpgrade89928a14f2090aec4fd7aff9ea983f95'] = 'Pas de version antérieur détectée. Avez-vous supprimé ou renommé le fichier settings.inc.php du dossier config ?';
$_LANGADM['AdminUpgrade5276a8cbd9e3e467396089b267564f51'] = 'Le fichier config/settings.inc.php n\'a pas été trouvé. L\'avez-vous supprimé ou renommé ?';
$_LANGADM['AdminUpgrade24784d9e80638781b74c017b33d8ca0c'] = 'Impossible de trouver un des fichiers de mise à jour SQL. Merci de vérifier que le dossier /install/sql/upgrade n\'est pas vide.';
$_LANGADM['AdminUpgrade580e4b216e324f675f0237cdb34b6c2d'] = 'Pas de mise à jour disponible';
$_LANGADM['AdminUpgradef15e7e7292b0c72894cf45a893e0d497'] = 'Erreur lors de l\'ouverture du fichier SQL';
$_LANGADM['AdminUpgradeb8286438fbb6c7df9129fadc5316c19f'] = 'Erreur lors de l\'insertion dans la base de données';
$_LANGADM['AdminUpgrade229ee8046cafc09ddaf46fb9db710e91'] = 'Malheureusement,';
$_LANGADM['AdminUpgradee805a556799b7cef40e9760c81d99218'] = 'erreurs SQL sont apparues.';
$_LANGADM['AdminUpgrade5627353fd6ac678497af3ece05087068'] = 'Le fichier config/defines.inc.php n\'a pas été trouvé. Ou est-il passé ?';
$_LANGADM['AdminUpgrade446c9e952debe114c86bbd9e5eea7d61'] = 'Restaurer';
$_LANGADM['AdminUpgrade4879913b16fa23f723f70a5067bda8d4'] = 'Aucune restauration disponible';
$_LANGADM['AdminUpgradefff66e9b3d962fa319c8068b5c1997cd'] = 'restaurer';
$_LANGADM['AdminUpgradeebdabc2d40aa563aabbb3ee57915a7a9'] = 'cliquer pour restaurer %s';
$_LANGADM['AdminUpgradee9c57c7fbc335e66282a32617b01b9be'] = 'Votre configuration actuelle';
$_LANGADM['AdminUpgrade2fc4ab825ce2ce9476e8a1c2211ac9b8'] = 'Dossier racine';
$_LANGADM['AdminUpgrade8786f48d9cf9618cd2f5c37312ab7e50'] = 'Statut du dossier racine';
$_LANGADM['AdminUpgraded16d80ca66261afba43f5736f6cec7e6'] = 'droits complets en écriture';
$_LANGADM['AdminUpgrade039552aa1d74b68f01a73821f3078158'] = 'pas de droits d\'écriture récursif';
$_LANGADM['AdminUpgrade31a962ffeb06a6cc6d58ef3ba5fae2b7'] = 'Autoupgrade autorisé';
$_LANGADM['AdminUpgrade9c30a74657158984997cca4930d6075b'] = 'Cette version autorise la mise à jour automatique';
$_LANGADM['AdminUpgradeaf566be1636d11ecc8ddb728a15520b8'] = 'Cette version n\'autorise pas la mise à jour automatique';
$_LANGADM['AdminUpgrade94af5df6182efd3591d0ccccaa04bd5c'] = 'Limite de temps PHP';
$_LANGADM['AdminUpgrade075ae3d2fc31640504f814f60e5ef713'] = 'désactivée';
$_LANGADM['AdminUpgrade783e8e29e6a8c3e22baa58a19420eb4f'] = 'secondes';
$_LANGADM['AdminUpgrade342299aeb786a06533ba00d9a04794dd'] = 'Modifiez vos options';
$_LANGADM['AdminUpgrade06933067aafd48425d67bcb01bba5cb6'] = 'Mettre à jour';
$_LANGADM['AdminUpgrade5d8b77b69c92370ec4e175a638019ca7'] = 'La version actuelle de votre boutique est : %s';
$_LANGADM['AdminUpgrade80e3d093272bc011b6bc661e408c7423'] = 'La dernière version est %1$s (%2$s)';
$_LANGADM['AdminUpgradeb47ba7568788e46dbc7fe81e525db863'] = 'La dernière version de prestashop disponible est:';
$_LANGADM['AdminUpgradec97dcfb0df6daa46292a0def8a567822'] = 'Sauvegardez la base de données, les fichiers de sauvegarde et faire la mise en un clic pardi !';
$_LANGADM['AdminUpgradea60ab62ed99ef0358b2efae592be0cdd'] = 'Mettre à jour PrestaShop Maintenant !';
$_LANGADM['AdminUpgrade48c7c41b72e1d678923ce3571aa65b2d'] = 'Etape';
$_LANGADM['AdminUpgradeeeb5a49c38d2d8c2baa51ed09beccf88'] = 'Etape de mise à jour';
$_LANGADM['AdminUpgradec5d769685704e7ddcd70e74a6ebe50b7'] = 'Votre configuration actuelle n\'autorise pas la mise à jour.';
$_LANGADM['AdminUpgrade6b3930a184368a458be6e4429f409877'] = 'Mise à jour terminée. Vérifiez votre boutique (essayez de faire une commande, vérifier le thème)';
$_LANGADM['AdminUpgrade91195bbbacc2147a736c849c46368ed8'] = 'Voulez vous restaurer votre boutique';
$_LANGADM['AdminUpgradea498f9476a893d51ee02b3601678d318'] = 'Cliquez pour restaurer la base de donnée';
$_LANGADM['AdminUpgradef34d5debb2bba76aa3e077937a07e373'] = 'Cliquez pour restaurer les fichiers';
$_LANGADM['AdminUpgrade60283aa37e2063b2ada2f99216e1332a'] = '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';
$_LANGADM['AdminUpgrade6ef7ebe46f6d16cdbf9e2169e3dd048e'] = 'Allez manuellement au bouton restaurer';
$_LANGADM['AdminWebservice897356954c2cd3d41b221e3f24f99bba'] = 'Clé'; $_LANGADM['AdminWebservice897356954c2cd3d41b221e3f24f99bba'] = 'Clé';
$_LANGADM['AdminWebservice00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé'; $_LANGADM['AdminWebservice00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
$_LANGADM['AdminWebservice52699c78843b98f98620186a59b0a3fa'] = 'Description de la clé'; $_LANGADM['AdminWebservice52699c78843b98f98620186a59b0a3fa'] = 'Description de la clé';