// 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:
+5
-2
@@ -535,8 +535,11 @@ if (Tools::isSubmit('loadImportMatchs'))
|
||||
|
||||
if (Tools::isSubmit('toggleScreencast'))
|
||||
{
|
||||
$context->employee->show_screencast = (int)(!(bool)$context->employee->show_screencast);
|
||||
$context->employee->save();
|
||||
if (Validate::isLoadedObject($context->employee))
|
||||
{
|
||||
$context->employee->bo_show_screencast = !$context->employee->bo_show_screencast;
|
||||
$context->employee->update();
|
||||
}
|
||||
}
|
||||
|
||||
if (Tools::isSubmit('helpAccess'))
|
||||
|
||||
@@ -43,5 +43,5 @@ $smtpPort = $_GET['smtpPort'];
|
||||
$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));
|
||||
die($result ? 'ok' : 'fail');
|
||||
die($result === true ? 'ok' : $result);
|
||||
|
||||
|
||||
@@ -167,9 +167,9 @@ class AdminCarts extends AdminTab
|
||||
SELECT id_image
|
||||
FROM '._DB_PREFIX_.'image
|
||||
WHERE id_product = '.(int)($product['id_product']).' AND cover = 1');
|
||||
|
||||
|
||||
$productObj = new Product($product['id_product']);
|
||||
|
||||
|
||||
/* Customization display */
|
||||
$this->displayCustomizedDatas($customizedDatas, $product, $currency, $image, $tokenCatalog, $stock);
|
||||
if ($product['cart_quantity'] > $product['customizationQuantityTotal'])
|
||||
@@ -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 (isset($image['id_image']))
|
||||
$image = new Image($image['id_image']);
|
||||
else
|
||||
$image = new Image();
|
||||
if ($image = new Image($image['id_image']))
|
||||
echo '
|
||||
<tr>
|
||||
<td align="center">'.($image->id ? cacheImage(_PS_IMG_DIR_.'p/'.$image->getExistingImgPath().'.jpg',
|
||||
@@ -319,17 +316,17 @@ class AdminCarts extends AdminTab
|
||||
$this->displayList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected function _displayDeleteLink($token = NULL, $id)
|
||||
{
|
||||
{
|
||||
foreach ($this->_list as $cart)
|
||||
if ($id == $cart['id_cart'])
|
||||
if ($cart['id_order'])
|
||||
return;
|
||||
|
||||
|
||||
$_cacheLang['Delete'] = $this->l('Delete', __CLASS__, true, false);
|
||||
$_cacheLang['DeleteItem'] = $this->l('Delete item #', __CLASS__, true, false).$id.' ?)';
|
||||
|
||||
|
||||
echo '
|
||||
<a href="'.self::$currentIndex.'&'.$this->identifier.'='.$id.'&delete'.$this->table.'&token='.($token != null ? $token : $this->token).'" onclick="return confirm(\''.$_cacheLang['DeleteItem'].'\');">
|
||||
<img src="../img/admin/delete.gif" alt="'.$_cacheLang['Delete'].'" title="'.$_cacheLang['Delete'].'" /></a>
|
||||
|
||||
@@ -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" ' : '').'/>
|
||||
<label class="t" for="uimode_off">'.$this->l('Click on tabs').'</label>
|
||||
</div><div class="clear"> </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>
|
||||
<div class="margin-form">
|
||||
<input type="radio" name="active" id="active_on" value="1" '.($this->getFieldValue($obj, 'active') ? 'checked="checked" ' : '').'/>
|
||||
|
||||
@@ -101,6 +101,9 @@ class AdminImport extends AdminTab
|
||||
'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.')),
|
||||
'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(
|
||||
@@ -475,8 +478,7 @@ class AdminImport extends AdminTab
|
||||
$path = _PS_CAT_IMG_DIR_.(int)($id_entity);
|
||||
break;
|
||||
}
|
||||
|
||||
if (copy(trim($url), $tmpfile))
|
||||
if (copy(str_replace(' ', '%20', trim($url)), $tmpfile))
|
||||
{
|
||||
imageResize($tmpfile, $path.'.jpg');
|
||||
$imagesTypes = ImageType::getImagesTypes($entity);
|
||||
@@ -938,6 +940,11 @@ class AdminImport extends AdminTab
|
||||
|
||||
$product = new Product((int)($info['id_product']), false, $defaultLanguage);
|
||||
$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'])
|
||||
{
|
||||
|
||||
@@ -446,6 +446,7 @@ class AdminPerformance extends AdminTab
|
||||
</select>
|
||||
</div>
|
||||
<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>
|
||||
<div class="margin-form">
|
||||
<input type="text" name="ps_cache_fs_directory_depth" value="'.($depth ? $depth : 1).'" />
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
@@ -34,21 +34,21 @@ class AdminScenes extends AdminTab
|
||||
$this->lang = true;
|
||||
$this->edit = true;
|
||||
$this->delete = true;
|
||||
|
||||
|
||||
$this->fieldImageSettings = array(
|
||||
array('name' => 'image', 'dir' => 'scenes'),
|
||||
array('name' => 'thumb', 'dir' => 'scenes/thumbs')
|
||||
);
|
||||
|
||||
|
||||
$this->fieldsDisplay = array(
|
||||
'id_scene' => array('title' => $this->l('ID'), 'align' => 'center', 'width' => 25),
|
||||
'name' => array('title' => $this->l('Image Maps'), 'width' => 150, 'filter_key' => 'b!name'),
|
||||
'active' => array('title' => $this->l('Activated'), 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false)
|
||||
);
|
||||
|
||||
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
|
||||
public function afterImageUpload()
|
||||
{
|
||||
/* Generate image with differents size */
|
||||
@@ -73,64 +73,17 @@ class AdminScenes extends AdminTab
|
||||
}
|
||||
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;"/>
|
||||
<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)
|
||||
{
|
||||
parent::displayForm();
|
||||
|
||||
|
||||
if (!($obj = $this->loadObject(true)))
|
||||
return;
|
||||
|
||||
|
||||
$langtags = 'name';
|
||||
$active = $this->getFieldValue($obj, 'active');
|
||||
|
||||
|
||||
echo '
|
||||
<script type="text/javascript">';
|
||||
echo 'startingData = new Array();'."\n";
|
||||
@@ -139,7 +92,7 @@ class AdminScenes extends AdminTab
|
||||
$productObj = new Product($product['id_product'], true, $this->context->language->id);
|
||||
echo 'startingData['.$key.'] = new Array(\''.$productObj->name.'\', '.$product['id_product'].', '.$product['x_axis'].', '.$product['y_axis'].', '.$product['zone_width'].', '.$product['zone_height'].');';
|
||||
}
|
||||
|
||||
|
||||
echo
|
||||
'</script>
|
||||
<form id="scenesForm" action="'.self::$currentIndex.'&submitAdd'.$this->table.'=1&token='.$this->token.'" method="post" enctype="multipart/form-data">
|
||||
@@ -151,7 +104,7 @@ class AdminScenes extends AdminTab
|
||||
'.$this->l('When a customer hovers over the image with the mouse, a pop-up appears displaying a brief description of the product. The customer can then click to open the product\'s full product page. To achieve this, please define the \'mapping zone\' that, when hovered over, will display the pop-up. Left-click with your mouse to draw the four-sided mapping zone, then release. Then, begin typing the name of the associated product. A list of products appears. Click the appropriate product, then click OK. Repeat these steps for each mapping zone you wish to create. When you have finished mapping zones, click Save Image Map.').'
|
||||
</div>
|
||||
';
|
||||
|
||||
|
||||
echo '<label>'.$this->l('Image map name:').' </label>
|
||||
<div class="margin-form">';
|
||||
foreach ($this->_languages as $language)
|
||||
@@ -162,8 +115,8 @@ class AdminScenes extends AdminTab
|
||||
$this->displayFlags($this->_languages, $this->_defaultFormLanguage, $langtags, 'name');
|
||||
echo ' <div class="clear"></div>
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
|
||||
echo '<label>'.$this->l('Status:').' </label>
|
||||
<div class="margin-form">
|
||||
<input type="radio" name="active" id="active_on" value="1" '.((!$obj->id OR Tools::getValue('active', $obj->active)) ? 'checked="checked" ' : '').'/>
|
||||
@@ -172,8 +125,8 @@ class AdminScenes extends AdminTab
|
||||
<label class="t" for="active_off"> <img src="../img/admin/disabled.gif" alt="'.$this->l('Deactivated').'" title="'.$this->l('Deactivated').'" /></label>
|
||||
<p>'.$this->l('Activate or deactivate the image map').'</p>
|
||||
</div>';
|
||||
|
||||
|
||||
|
||||
|
||||
$sceneImageTypes = ImageType::getImagesTypes('scenes');
|
||||
$largeSceneImageType = NULL;
|
||||
$thumbSceneImageType = NULL;
|
||||
@@ -184,14 +137,14 @@ class AdminScenes extends AdminTab
|
||||
if ($sceneImageType['name'] == 'thumb_scene')
|
||||
$thumbSceneImageType = $sceneImageType;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
echo '<label>'.$this->l('Image to be mapped:').' </label>
|
||||
<div class="margin-form">
|
||||
<input type="hidden" id="stay_here" name="stay_here" value="" />
|
||||
<input type="file" name="image" id="image_input" /> <input type="button" value="'.$this->l('Upload image').'" onclick="{$(\'#stay_here\').val(\'true\');$(\'#scenesForm\').submit();}" class="button" /><br/>
|
||||
<p>'.$this->l('Format:').' JPG, GIF, PNG. '.$this->l('File size:').' '.(Tools::getMaxUploadSize() / 1024).''.$this->l('KB max.').' '.$this->l('If larger than the image size setting, the image will be reduced to ').' '.$largeSceneImageType['width'].'x'.$largeSceneImageType['height'].'px '.$this->l('(width x height). If smaller than the image-size setting, a white background will be added in order to achieve the correct image size.').'.<br />'.$this->l('Note: To change image dimensions, please change the \'large_scene\' image type settings to the desired size (in Back Office > Preferences > Images).').'</p>';
|
||||
|
||||
|
||||
if ($obj->id && file_exists(_PS_SCENE_IMG_DIR_.$obj->id.'-large_scene.jpg'))
|
||||
{
|
||||
echo '<img id="large_scene_image" style="clear:both;border:1px solid black;" alt="" src="'._THEME_SCENE_DIR_.$obj->id.'-large_scene.jpg" /><br />';
|
||||
@@ -223,29 +176,23 @@ class AdminScenes extends AdminTab
|
||||
echo '</div>
|
||||
';
|
||||
|
||||
echo '<label>'.$this->l('Category:').' </label>
|
||||
<div class="margin-form">
|
||||
<div style="overflow: auto; max-height: 300px; padding-top: 0.6em;" id="categoryList">
|
||||
<table cellspacing="0" cellpadding="0" class="table" style="width: 600px;">
|
||||
<tr>
|
||||
<th><input type="checkbox" name="checkme" class="noborder" onclick="checkDelBoxes(this.form, \'categories[]\', this.checked)" /></th>
|
||||
<th>'.$this->l('ID').'</th>
|
||||
<th>'.$this->l('Image map name:').'</th>
|
||||
</tr>';
|
||||
$categories = Category::getCategories($this->context->language->id, false);
|
||||
$done = array();
|
||||
$index = array();
|
||||
if (Tools::isSubmit('categories'))
|
||||
foreach (Tools::getValue('categories') AS $k => $row)
|
||||
$index[] = $row;
|
||||
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>';
|
||||
$selectedCat = array();
|
||||
if (Tools::isSubmit('categories'))
|
||||
foreach (Tools::getValue('categories') as $k => $row)
|
||||
$selectedCat[] = $row;
|
||||
else if ($obj->id)
|
||||
foreach (Scene::getIndexedCategories($obj->id) as $k => $row)
|
||||
$selectedCat[] = $row['id_category'];
|
||||
|
||||
$trads = array(
|
||||
'Home' => $this->l('Home'),
|
||||
'selected' => $this->l('selected'),
|
||||
'Collapse All' => $this->l('Collapse All'),
|
||||
'Expand All' => $this->l('Expand All'),
|
||||
'Check All' => $this->l('Check All'),
|
||||
'Uncheck All' => $this->l('Uncheck All')
|
||||
);
|
||||
|
||||
if (Shop::isMultiShopActivated())
|
||||
{
|
||||
echo '<label>'.$this->l('Shop association:').'</label><div class="margin-form">';
|
||||
@@ -253,9 +200,16 @@ class AdminScenes extends AdminTab
|
||||
echo '</div>';
|
||||
}
|
||||
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;"') .'>
|
||||
<input type="submit" name="save_image_map" value="'.$this->l('Save Image Map(s)').'" class="button" />
|
||||
</div>';
|
||||
</div>
|
||||
';
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -267,7 +221,7 @@ class AdminScenes extends AdminTab
|
||||
$this->displayAssoShop();
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
echo '
|
||||
<div class="small"><sup>*</sup> '.$this->l('Required field').'</div>
|
||||
@@ -275,7 +229,7 @@ class AdminScenes extends AdminTab
|
||||
</form>
|
||||
';
|
||||
}
|
||||
|
||||
|
||||
public function postProcess()
|
||||
{
|
||||
if (Tools::isSubmit('save_image_map'))
|
||||
|
||||
@@ -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 ='If you don\'t know how to do that, please contact your host administrator !'}</p><br />
|
||||
{/if}
|
||||
{if $show_screencast}
|
||||
{if $employee->bo_show_screencast}
|
||||
<div id="adminpresentation">
|
||||
<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">
|
||||
@@ -76,7 +76,7 @@ $(document).ready(function() {
|
||||
$('#adminpresentation').fadeIn('slow');
|
||||
else
|
||||
$('#adminpresentation').fadeOut('slow');
|
||||
|
||||
|
||||
$('#partner_preactivation').fadeOut('slow', function() {
|
||||
if (json.partner_preactivation != 'NOK')
|
||||
$('#partner_preactivation').html(json.partner_preactivation);
|
||||
@@ -84,7 +84,7 @@ $(document).ready(function() {
|
||||
$('#partner_preactivation').html('');
|
||||
$('#partner_preactivation').fadeIn('slow');
|
||||
});
|
||||
|
||||
|
||||
$('#discover_prestashop').fadeOut('slow', function() {
|
||||
if (json.discover_prestashop != 'NOK')
|
||||
$('#discover_prestashop').html(json.discover_prestashop);
|
||||
@@ -96,7 +96,7 @@ $(document).ready(function() {
|
||||
error: function(XMLHttpRequest, textStatus, errorThrown)
|
||||
{
|
||||
$('#adminpresentation').fadeOut('slow');
|
||||
$('#partner_preactivation').fadeOut('slow');
|
||||
$('#partner_preactivation').fadeOut('slow');
|
||||
$('#discover_prestashop').fadeOut('slow');
|
||||
}
|
||||
});
|
||||
|
||||
Vendored
+2
@@ -298,6 +298,8 @@
|
||||
'AdminAddressesController' => '',
|
||||
'AdminHomeControllerCore' => 'controllers/admin/AdminHomeController.php',
|
||||
'AdminHomeController' => 'override/controllers/admin/AdminHomeController.php',
|
||||
'AdminRequestSqlControllerCore' => 'controllers/admin/AdminRequestSqlController.php',
|
||||
'AdminRequestSqlController' => '',
|
||||
'AdminToolsControllerCore' => 'controllers/admin/AdminToolsController.php',
|
||||
'AdminToolsController' => 'override/controllers/admin/AdminToolsController.php',
|
||||
'AdminTrackingController' => 'controllers/admin/AdminTrackingController.php',
|
||||
|
||||
@@ -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));
|
||||
if (($type == 'date' OR $type == 'datetime') AND is_string($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))
|
||||
$sqlFilter = & $this->_tmpTableFilter;
|
||||
elseif (array_key_exists('havingFilter', $field))
|
||||
@@ -844,7 +844,7 @@ abstract class AdminTabCore
|
||||
if (!Validate::isDate($value[0]))
|
||||
$this->_errors[] = Tools::displayError('\'from:\' date format is invalid (YYYY-MM-DD)');
|
||||
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]))
|
||||
@@ -852,7 +852,7 @@ abstract class AdminTabCore
|
||||
if (!Validate::isDate($value[1]))
|
||||
$this->_errors[] = Tools::displayError('\'to:\' date format is invalid (YYYY-MM-DD)');
|
||||
else
|
||||
$sqlFilter .= ' AND '.bqSQL($key).' <= \''.pSQL(Tools::dateTo($value[1])).'\'';
|
||||
$sqlFilter .= ' AND '.$key.' <= \''.pSQL(Tools::dateTo($value[1])).'\'';
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ abstract class CacheCore
|
||||
{
|
||||
/** @var Cache */
|
||||
protected static $_instance;
|
||||
protected $_keysCached;
|
||||
protected $_keysCached = array();
|
||||
protected $_tablesCached = array();
|
||||
protected $_blackList = array('cart',
|
||||
'cart_discount',
|
||||
|
||||
+7
-5
@@ -98,15 +98,17 @@ class CacheFSCore extends Cache {
|
||||
public function setQuery($query, $result)
|
||||
{
|
||||
$md5_query = md5($query);
|
||||
if (isset($this->_keysCached[$md5_query]))
|
||||
return true;
|
||||
if ($this->isBlacklist($query))
|
||||
return true;
|
||||
$this->_setKeys();
|
||||
if (isset($this->_keysCached[$md5_query]))
|
||||
return true;
|
||||
$key = $this->set($md5_query, $result);
|
||||
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
|
||||
foreach($res[1] AS $table)
|
||||
if(!isset($this->_tablesCached[$table][$key]))
|
||||
$this->_tablesCached[$table][$key] = true;
|
||||
$this->_writeKeys();
|
||||
}
|
||||
|
||||
public function delete($key, $timeout = 0)
|
||||
@@ -126,7 +128,7 @@ class CacheFSCore extends Cache {
|
||||
|
||||
public function deleteQuery($query)
|
||||
{
|
||||
|
||||
$this->_setKeys();
|
||||
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
|
||||
foreach ($res[1] AS $table)
|
||||
if (isset($this->_tablesCached[$table]))
|
||||
@@ -138,15 +140,15 @@ class CacheFSCore extends Cache {
|
||||
}
|
||||
unset($this->_tablesCached[$table]);
|
||||
}
|
||||
$this->_writeKeys();
|
||||
}
|
||||
|
||||
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().'tablesCached', serialize($this->_tablesCached));
|
||||
|
||||
+2
-2
@@ -1288,12 +1288,12 @@ class CartCore extends ObjectModel
|
||||
if (isset($configuration['PS_SHIPPING_HANDLING']) AND $carrier->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
|
||||
foreach($products AS $product)
|
||||
$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
|
||||
if ($carrier->shipping_external)
|
||||
{
|
||||
|
||||
+50
-46
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2011 PrestaShop
|
||||
* 2007-2011 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
@@ -28,54 +28,57 @@
|
||||
class EmployeeCore extends ObjectModel
|
||||
{
|
||||
public $id;
|
||||
|
||||
|
||||
/** @var string Determine employee profile */
|
||||
public $id_profile;
|
||||
|
||||
|
||||
/** @var string employee language */
|
||||
public $id_lang;
|
||||
|
||||
|
||||
/** @var string Lastname */
|
||||
public $lastname;
|
||||
|
||||
|
||||
/** @var string Firstname */
|
||||
public $firstname;
|
||||
|
||||
|
||||
/** @var string e-mail */
|
||||
public $email;
|
||||
|
||||
|
||||
/** @var string Password */
|
||||
public $passwd;
|
||||
|
||||
|
||||
/** @var datetime Password */
|
||||
public $last_passwd_gen;
|
||||
|
||||
|
||||
public $stats_date_from;
|
||||
public $stats_date_to;
|
||||
|
||||
|
||||
/** @var string Display back office background in the specified color */
|
||||
public $bo_color;
|
||||
|
||||
|
||||
/** @var string employee's chosen theme */
|
||||
public $bo_theme;
|
||||
|
||||
|
||||
/** @var string / enum hover or click mode */
|
||||
public $bo_uimode;
|
||||
|
||||
|
||||
/** @var bool, true */
|
||||
public $bo_show_screencast;
|
||||
|
||||
/** @var boolean Status */
|
||||
public $active = 1;
|
||||
|
||||
|
||||
/** @var boolean show screencast */
|
||||
public $show_screencast = 1;
|
||||
|
||||
|
||||
public $remote_addr;
|
||||
|
||||
|
||||
protected $fieldsRequired = array('lastname', 'firstname', 'email', 'passwd', 'id_profile', 'id_lang');
|
||||
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',
|
||||
'passwd' => 'isPasswdAdmin', 'active' => 'isBool', 'id_profile' => 'isInt', 'bo_color' => 'isColor', 'bo_theme' => 'isGenericName',
|
||||
'bo_uimode' => 'isGenericName', 'show_screencast' => 'isBool');
|
||||
|
||||
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',
|
||||
'bo_uimode' => 'isGenericName', 'show_screencast' => 'isBool', 'bo_show_screencast' => 'isBool');
|
||||
|
||||
protected $table = 'employee';
|
||||
protected $identifier = 'id_employee';
|
||||
|
||||
@@ -88,12 +91,12 @@ class EmployeeCore extends ObjectModel
|
||||
'passwd' => array('setter' => 'setWsPasswd'),
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
public function getFields()
|
||||
{
|
||||
$this->validateFields();
|
||||
|
||||
|
||||
$fields['id_profile'] = (int)$this->id_profile;
|
||||
$fields['id_lang'] = (int)$this->id_lang;
|
||||
$fields['lastname'] = pSQL($this->lastname);
|
||||
@@ -101,21 +104,22 @@ class EmployeeCore extends ObjectModel
|
||||
$fields['email'] = pSQL($this->email);
|
||||
$fields['passwd'] = pSQL($this->passwd);
|
||||
$fields['last_passwd_gen'] = pSQL($this->last_passwd_gen);
|
||||
|
||||
|
||||
if (empty($this->stats_date_from))
|
||||
$this->stats_date_from = date('Y-m-d 00:00:00');
|
||||
$fields['stats_date_from'] = pSQL($this->stats_date_from);
|
||||
|
||||
|
||||
if (empty($this->stats_date_to))
|
||||
$this->stats_date_to = date('Y-m-d 23:59:59');
|
||||
$fields['stats_date_to'] = pSQL($this->stats_date_to);
|
||||
|
||||
|
||||
$fields['bo_color'] = pSQL($this->bo_color);
|
||||
$fields['bo_theme'] = pSQL($this->bo_theme);
|
||||
$fields['bo_uimode'] = pSQL($this->bo_uimode);
|
||||
$fields['bo_show_screencast'] = (int)$this->bo_show_screencast;
|
||||
$fields['active'] = (int)$this->active;
|
||||
$fields['show_screencast'] = (int)$this->show_screencast;
|
||||
|
||||
|
||||
return $fields;
|
||||
}
|
||||
|
||||
@@ -124,10 +128,10 @@ class EmployeeCore extends ObjectModel
|
||||
$this->last_passwd_gen = date('Y-m-d H:i:s', strtotime('-'.Configuration::get('PS_PASSWD_TIME_BACK').'minutes'));
|
||||
return parent::add($autodate, $nullValues);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return employee instance from its e-mail (optionnaly check password)
|
||||
*
|
||||
*
|
||||
* @param string $email e-mail
|
||||
* @param string $passwd Password is also checked if specified
|
||||
* @return Employee instance
|
||||
@@ -138,7 +142,7 @@ class EmployeeCore extends ObjectModel
|
||||
die(Tools::displayError());
|
||||
|
||||
$result = Db::getInstance()->getRow('
|
||||
SELECT *
|
||||
SELECT *
|
||||
FROM `'._DB_PREFIX_.'employee`
|
||||
WHERE `active` = 1
|
||||
AND `email` = \''.pSQL($email).'\'
|
||||
@@ -152,12 +156,12 @@ class EmployeeCore extends ObjectModel
|
||||
$this->{$key} = $value;
|
||||
return $this;
|
||||
}
|
||||
|
||||
|
||||
public static function employeeExists($email)
|
||||
{
|
||||
if (!Validate::isEmail($email))
|
||||
die (Tools::displayError());
|
||||
|
||||
|
||||
return (bool)Db::getInstance()->getValue('
|
||||
SELECT `id_employee`
|
||||
FROM `'._DB_PREFIX_.'employee`
|
||||
@@ -166,7 +170,7 @@ class EmployeeCore extends ObjectModel
|
||||
|
||||
/**
|
||||
* Check if employee password is the right one
|
||||
*
|
||||
*
|
||||
* @param string $passwd Password
|
||||
* @return boolean result
|
||||
*/
|
||||
@@ -174,7 +178,7 @@ class EmployeeCore extends ObjectModel
|
||||
{
|
||||
if (!Validate::isUnsignedId($id_employee) OR !Validate::isPasswd($passwd, 8))
|
||||
die (Tools::displayError());
|
||||
|
||||
|
||||
return Db::getInstance()->getValue('
|
||||
SELECT `id_employee`
|
||||
FROM `'._DB_PREFIX_.'employee`
|
||||
@@ -182,24 +186,24 @@ class EmployeeCore extends ObjectModel
|
||||
AND `passwd` = \''.pSQL($passwd).'\'
|
||||
AND active = 1');
|
||||
}
|
||||
|
||||
|
||||
public static function countProfile($id_profile, $activeOnly = false)
|
||||
{
|
||||
return Db::getInstance()->getValue('
|
||||
SELECT COUNT(*)
|
||||
FROM `'._DB_PREFIX_.'employee`
|
||||
FROM `'._DB_PREFIX_.'employee`
|
||||
WHERE `id_profile` = '.(int)$id_profile.'
|
||||
'.($activeOnly ? ' AND `active` = 1' : ''));
|
||||
}
|
||||
|
||||
|
||||
public function isLastAdmin()
|
||||
{
|
||||
return ($this->id_profile == _PS_ADMIN_PROFILE_
|
||||
AND Employee::countProfile($this->id_profile, true) == 1
|
||||
AND $this->active
|
||||
return ($this->id_profile == _PS_ADMIN_PROFILE_
|
||||
&& Employee::countProfile($this->id_profile, true) == 1
|
||||
&& $this->active
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
public function setWsPasswd($passwd)
|
||||
{
|
||||
if ($this->id != 0)
|
||||
@@ -211,7 +215,7 @@ class EmployeeCore extends ObjectModel
|
||||
$this->passwd = Tools::encrypt($passwd);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check employee informations saved into cookie and return employee validity
|
||||
*
|
||||
@@ -221,12 +225,12 @@ class EmployeeCore extends ObjectModel
|
||||
{
|
||||
/* Employee is valid only if it can be load and if cookie password is the same as database one */
|
||||
return ($this->id
|
||||
AND Validate::isUnsignedId($this->id)
|
||||
AND Employee::checkPassword($this->id, $this->passwd)
|
||||
AND (!isset($this->remote_addr) OR $this->remote_addr == ip2long(Tools::getRemoteAddr()) OR !Configuration::get('PS_COOKIE_CHECKIP'))
|
||||
&& Validate::isUnsignedId($this->id)
|
||||
&& Employee::checkPassword($this->id, $this->passwd)
|
||||
&& (!isset($this->remote_addr) || $this->remote_addr == ip2long(Tools::getRemoteAddr()) || !Configuration::get('PS_COOKIE_CHECKIP'))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Logout
|
||||
*/
|
||||
|
||||
+5
-2
@@ -94,6 +94,7 @@ class MCachedCore extends Cache
|
||||
if ($this->isBlacklist($query))
|
||||
return true;
|
||||
$md5_query = md5($query);
|
||||
$this->_setKeys();
|
||||
if (isset($this->_keysCached[$md5_query]))
|
||||
return true;
|
||||
$key = $this->set($md5_query, $result);
|
||||
@@ -101,6 +102,7 @@ class MCachedCore extends Cache
|
||||
foreach($res[1] AS $table)
|
||||
if(!isset($this->_tablesCached[$table][$key]))
|
||||
$this->_tablesCached[$table][$key] = true;
|
||||
$this->_writeKeys();
|
||||
}
|
||||
|
||||
public function delete($key, $timeout = 0)
|
||||
@@ -115,6 +117,7 @@ class MCachedCore extends Cache
|
||||
{
|
||||
if (!$this->_isConnected)
|
||||
return false;
|
||||
$this->_setKeys();
|
||||
if (preg_match_all('/('._DB_PREFIX_.'[a-z_-]*)`?.*/i', $query, $res))
|
||||
foreach ($res[1] AS $table)
|
||||
if (isset($this->_tablesCached[$table]))
|
||||
@@ -126,6 +129,7 @@ class MCachedCore extends Cache
|
||||
}
|
||||
unset($this->_tablesCached[$table]);
|
||||
}
|
||||
$this->_writeKeys();
|
||||
}
|
||||
|
||||
protected function close()
|
||||
@@ -144,9 +148,8 @@ class MCachedCore extends Cache
|
||||
return false;
|
||||
}
|
||||
|
||||
public function __destruct()
|
||||
private function _writeKeys()
|
||||
{
|
||||
parent::__destruct();
|
||||
if (!$this->_isConnected)
|
||||
return false;
|
||||
$this->_memcacheObj->set('keysCached', $this->_keysCached, 0, 0);
|
||||
|
||||
+9
-6
@@ -190,12 +190,11 @@ class MailCore
|
||||
public static function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption)
|
||||
{
|
||||
$swift = NULL;
|
||||
$result = NULL;
|
||||
$result = false;
|
||||
try
|
||||
{
|
||||
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->setUsername($smtpLogin);
|
||||
$smtp->setpassword($smtpPassword);
|
||||
@@ -209,13 +208,17 @@ class MailCore
|
||||
|
||||
if ($swift->send($message, $to, $from))
|
||||
$result = true;
|
||||
else
|
||||
$result = 999;
|
||||
|
||||
$swift->disconnect();
|
||||
}
|
||||
catch (Swift_Connection_Exception $e) { $result = $e->getCode(); }
|
||||
catch (Swift_Message_MimeException $e) { $result = $e->getCode(); }
|
||||
catch (Swift_ConnectionException $e)
|
||||
{
|
||||
$result = $e->getMessage();
|
||||
}
|
||||
catch (Swift_Message_MimeException $e)
|
||||
{
|
||||
$result = $e->getMessage();
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
+15
-3
@@ -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 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'));
|
||||
if (substr($file, 0, 5) == '<?php')
|
||||
$file = substr($file, 5);
|
||||
if (substr($file, -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;
|
||||
if (!$xml_exist OR $needNewConfigFile)
|
||||
@@ -654,7 +666,7 @@ abstract class ModuleCore
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
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)
|
||||
echo '<li>'.$error.'</li>';
|
||||
echo '</ol></div>';
|
||||
|
||||
+107
-100
@@ -173,7 +173,6 @@ class SearchCore
|
||||
{
|
||||
$word = str_replace('%', '\\%', $word);
|
||||
$word = str_replace('_', '\\_', $word);
|
||||
|
||||
$intersectArray[] = 'SELECT si.id_product
|
||||
FROM '._DB_PREFIX_.'search_word sw
|
||||
LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word
|
||||
@@ -337,6 +336,20 @@ class SearchCore
|
||||
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)
|
||||
{
|
||||
$db = Db::getInstance();
|
||||
@@ -399,15 +412,6 @@ class SearchCore
|
||||
'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
|
||||
$countWords = 0;
|
||||
$countProducts = 0;
|
||||
@@ -427,107 +431,110 @@ class SearchCore
|
||||
$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
|
||||
while ($product = $db->nextRow($products))
|
||||
{
|
||||
$product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']);
|
||||
$product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']);
|
||||
$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);
|
||||
// Retrieve the number of languages
|
||||
$nbLanguages = Db::getInstance()->getValue('SELECT COUNT(*) FROM '._DB_PREFIX_.'lang');
|
||||
|
||||
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))
|
||||
// Products are processed 50 by 50 in order to avoid overloading MySQL
|
||||
while ($products = Search::getProductsToIndex($nbLanguages, 50) AND count($products) > 0)
|
||||
{
|
||||
// Now each non-indexed product is processed one by one, langage by langage
|
||||
foreach ($products as $product)
|
||||
{
|
||||
$list = '';
|
||||
foreach ($pArray AS $word => $weight)
|
||||
$list .= '\''.$word.'\',';
|
||||
$list = rtrim($list, ',');
|
||||
$product['tags'] = Search::getTags($db, (int)$product['id_product'], (int)$product['id_lang']);
|
||||
$product['attributes'] = Search::getAttributes($db, (int)$product['id_product'], (int)$product['id_lang']);
|
||||
$product['features'] = Search::getFeatures($db, (int)$product['id_product'], (int)$product['id_lang']);
|
||||
|
||||
$queryArray = array();
|
||||
$queryArray2 = array();
|
||||
foreach ($pArray AS $word => $weight)
|
||||
if ($weight AND !isset($wordIdsByWord['_'.$word]))
|
||||
// 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))
|
||||
{
|
||||
$queryArray[$word] = '('.(int)$product['id_lang'].', '.(int)$product['id_shop'].', \''.pSQL($word).'\')';
|
||||
$queryArray2[] = '\''.pSQL($word).'\'';
|
||||
$wordIdsByWord[$product['id_shop']][$product['id_lang']]['_'.$word] = 0;
|
||||
$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];
|
||||
}
|
||||
}
|
||||
|
||||
$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))
|
||||
// If we find words that need to be indexed, they're added to the word table in the database
|
||||
if (count($pArray))
|
||||
{
|
||||
// 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'];
|
||||
$list = '';
|
||||
foreach ($pArray AS $word => $weight)
|
||||
$list .= '\''.$word.'\',';
|
||||
$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'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($pArray AS $word => $weight)
|
||||
{
|
||||
if (!$weight)
|
||||
continue;
|
||||
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);
|
||||
}
|
||||
foreach ($pArray AS $word => $weight)
|
||||
{
|
||||
if (!$weight)
|
||||
continue;
|
||||
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))
|
||||
$productsArray[] = (int)$product['id_product'];
|
||||
if (!in_array($product['id_product'], $productsArray))
|
||||
$productsArray[] = (int)$product['id_product'];
|
||||
}
|
||||
Search::setProductsAsIndexed($productsArray);
|
||||
|
||||
// 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);
|
||||
// One last save is done at the end in order to save what's left
|
||||
Search::saveIndex($queryArray3);
|
||||
}
|
||||
|
||||
// If it has been deleted, the index is created again once the indexation is done
|
||||
if (!$dropIndex)
|
||||
|
||||
+35
-12
@@ -165,18 +165,37 @@ class UpgraderCore
|
||||
}
|
||||
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)
|
||||
{
|
||||
$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)
|
||||
{
|
||||
$this->version_is_modified = true;
|
||||
$this->missing_files[] = $path;
|
||||
//array_unique($this->missingFile);
|
||||
}
|
||||
|
||||
protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1)
|
||||
@@ -190,18 +209,22 @@ class UpgraderCore
|
||||
}
|
||||
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++)
|
||||
$path .= $current_path[$i].'/';
|
||||
$path .= (string)$child['name'];
|
||||
$path = str_replace('ps_root_dir',_PS_ROOT_DIR_,$path);
|
||||
$relative_path .= $current_path[$i].'/';
|
||||
$relative_path .= (string)$child['name'];
|
||||
$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
|
||||
$path = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $path);
|
||||
if(!file_exists($path))
|
||||
$this->addMissingFile($path);
|
||||
else if (!$this->compareChecksum($path, (string)$child))
|
||||
$this->addChangedFile($path);
|
||||
$fullpath = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $fullpath);
|
||||
if (!file_exists($fullpath))
|
||||
$this->addMissingFile($relative_path);
|
||||
else if (!$this->compareChecksum($fullpath, (string)$child))
|
||||
$this->addChangedFile($relative_path);
|
||||
// else, file is original (and ok)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ if (!file_exists(dirname(__FILE__).'/settings.inc.php'))
|
||||
exit;
|
||||
}
|
||||
require_once(dirname(__FILE__).'/settings.inc.php');
|
||||
require_once(dirname(__FILE__).'/autoload.php');
|
||||
|
||||
/* Redefine REQUEST_URI if empty (on some webservers...) */
|
||||
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 */
|
||||
require_once(dirname(__FILE__).'/autoload.php');
|
||||
// Trying to redefine HTTP_HOST if empty (on some webservers...)
|
||||
if (!isset($_SERVER['HTTP_HOST']) || empty($_SERVER['HTTP_HOST']))
|
||||
$_SERVER['HTTP_HOST'] = @getenv('HTTP_HOST');
|
||||
|
||||
|
||||
if (!defined('_PS_MAGIC_QUOTES_GPC_'))
|
||||
define('_PS_MAGIC_QUOTES_GPC_', get_magic_quotes_gpc());
|
||||
|
||||
@@ -629,6 +629,7 @@ CREATE TABLE `PREFIX_employee` (
|
||||
`bo_color` varchar(32) default NULL,
|
||||
`bo_theme` varchar(32) default NULL,
|
||||
`bo_uimode` ENUM('hover','click') default 'click',
|
||||
`bo_show_screencast` tinyint(1) NOT NULL default '1',
|
||||
`active` tinyint(1) unsigned NOT NULL default '0',
|
||||
`show_screencast` tinyint(1) unsigned NOT NULL default '1',
|
||||
`id_last_order` tinyint(1) unsigned NOT NULL default '0',
|
||||
|
||||
@@ -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),
|
||||
('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`;
|
||||
|
||||
@@ -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_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)';
|
||||
|
||||
if (function_exists('mcrypt_encrypt'))
|
||||
|
||||
+1
-1
@@ -71,7 +71,7 @@ function verifyMail(testMsg, testSubject)
|
||||
else
|
||||
{
|
||||
mailIsOk = false;
|
||||
$("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(textSendError);
|
||||
$("#mailResultCheck").addClass("fail").removeClass("ok").removeClass('userInfos').html(textSendError + '<br />' + ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-3
@@ -140,9 +140,7 @@ function writeBookmarkLink(url, title, text, img)
|
||||
|
||||
function writeBookmarkLinkObject(url, title, insert)
|
||||
{
|
||||
if (window.navigator.userAgent.indexOf('Chrome') != -1)
|
||||
return ('');
|
||||
else if (window.sidebar || window.external)
|
||||
if (window.sidebar || window.external)
|
||||
return ('<a href="javascript:addBookmark(\'' + escape(url) + '\', \'' + escape(title) + '\')">' + insert + '</a>');
|
||||
else if (window.opera && window.print)
|
||||
return ('<a rel="sidebar" href="' + escape(url) + '" title="' + escape(title) + '">' + insert + '</a>');
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
if(!defined('_PS_ADMIN_DIR_'))
|
||||
define('_PS_ADMIN_DIR_', _PS_ADMIN_DIR_);
|
||||
if(!defined('_PS_USE_SQL_SLAVE_'))
|
||||
@@ -480,10 +481,11 @@ $this->standalone = true;
|
||||
else
|
||||
{
|
||||
// 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;
|
||||
}
|
||||
|
||||
public function ajaxProcessUpgradeNow()
|
||||
{
|
||||
$this->nextDesc = $this->l('Starting upgrade ...');
|
||||
@@ -1727,6 +1729,9 @@ echo '</script>';
|
||||
#dbResultCheck{ padding-left:20px;}
|
||||
#checkPrestaShopFilesVersion{margin-bottom:20px;}
|
||||
#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>';
|
||||
$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)
|
||||
{
|
||||
case 0: // getVersionFromDb
|
||||
result = "ok";
|
||||
resGlobal.result = "ok";
|
||||
break;
|
||||
case 1: // getVersionFromDb
|
||||
result = resGlobal.result;
|
||||
@@ -2134,6 +2139,19 @@ function handleError(res)
|
||||
}
|
||||
';
|
||||
// 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(){
|
||||
$.ajax({
|
||||
type:"POST",
|
||||
@@ -2155,16 +2173,15 @@ $js.= '$(document).ready(function(){
|
||||
$("#checkPrestaShopFilesVersion").prepend("<img src=\"../img/admin/warning.gif\" /> ");
|
||||
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("<div id=\"changedList\" style=\"display:none \">");
|
||||
|
||||
$("#changedList").html("<ul>");
|
||||
$(answer.result).each(function(k,v){
|
||||
$("#changedList ul").append("<li>"+v+"</li>");
|
||||
});
|
||||
$("#checkPrestaShopFilesVersion").append("<div id=\"changedList\" style=\"display:none \"><br/>");
|
||||
addModifiedFileList("'.$this->l('Core files').'", answer.result.core, "changedImportant");
|
||||
addModifiedFileList("'.$this->l('Mail files').'", answer.result.mail, "changedNotice");
|
||||
addModifiedFileList("'.$this->l('Translation files').'", answer.result.translation, "changedNotice");
|
||||
|
||||
$("#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;
|
||||
}
|
||||
|
||||
private function _cleanUp($path)
|
||||
{
|
||||
// as we need theses files for restore operation, we can't remove them.
|
||||
|
||||
@@ -165,18 +165,37 @@ class UpgraderCore
|
||||
}
|
||||
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)
|
||||
{
|
||||
$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)
|
||||
{
|
||||
$this->version_is_modified = true;
|
||||
$this->missing_files[] = $path;
|
||||
//array_unique($this->missingFile);
|
||||
}
|
||||
|
||||
protected function browseXmlAndCompare($node, &$current_path = array(), $level = 1)
|
||||
@@ -190,18 +209,22 @@ class UpgraderCore
|
||||
}
|
||||
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++)
|
||||
$path .= $current_path[$i].'/';
|
||||
$path .= (string)$child['name'];
|
||||
$path = str_replace('ps_root_dir',_PS_ROOT_DIR_,$path);
|
||||
$relative_path .= $current_path[$i].'/';
|
||||
$relative_path .= (string)$child['name'];
|
||||
$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
|
||||
$path = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $path);
|
||||
if(!file_exists($path))
|
||||
$this->addMissingFile($path);
|
||||
else if (!$this->compareChecksum($path, (string)$child))
|
||||
$this->addChangedFile($path);
|
||||
$fullpath = str_replace(_PS_ROOT_DIR_.'/admin', _PS_ADMIN_DIR_, $fullpath);
|
||||
if (!file_exists($fullpath))
|
||||
$this->addMissingFile($relative_path);
|
||||
else if (!$this->compareChecksum($fullpath, (string)$child))
|
||||
$this->addChangedFile($relative_path);
|
||||
// else, file is original (and ok)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,33 @@
|
||||
<?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
|
||||
{
|
||||
function __construct()
|
||||
public function __construct()
|
||||
{
|
||||
$this->name = 'autoupgrade';
|
||||
$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');
|
||||
|
||||
}
|
||||
function install()
|
||||
|
||||
public function install()
|
||||
{
|
||||
|
||||
$res = true;
|
||||
// before adding AdminSelfUpgrade, we should remove AdminUpgrade
|
||||
$idTab = Tab::getIdFromClassName('AdminUpgrade');
|
||||
$idTab = Tab::getIdFromClassName('AdminUpgrade');
|
||||
|
||||
if ($idTab)
|
||||
{
|
||||
if ($idTab)
|
||||
{
|
||||
$tab = new Tab($idTab);
|
||||
$res &= $tab->delete();
|
||||
}
|
||||
@@ -46,17 +72,17 @@ class Autoupgrade extends Module
|
||||
$tab->class_name = 'AdminSelfUpgrade';
|
||||
$tab->module = 'autoupgrade';
|
||||
$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();
|
||||
}
|
||||
else
|
||||
$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';
|
||||
if(!file_exists($autoupgradeDir))
|
||||
if (!file_exists($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');
|
||||
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');
|
||||
|
||||
if (!$res
|
||||
OR !Tab::getIdFromClassName('AdminSelfUpgrade')
|
||||
OR !parent::install()
|
||||
|| !Tab::getIdFromClassName('AdminSelfUpgrade')
|
||||
|| !parent::install()
|
||||
)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public function uninstall()
|
||||
{
|
||||
$idtab = Configuration::get('PS_AUTOUPDATE_MODULE_IDTAB');
|
||||
$tab = new Tab($idtab,1);
|
||||
$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)
|
||||
if($idOldTab = Tab::getIdFromClassName('AdminUpgrade'))
|
||||
{
|
||||
$tab = new Tab($idOldTab);
|
||||
$res &= $tab->delete();
|
||||
}
|
||||
}
|
||||
$res &= unlink(_PS_ADMIN_DIR_.DIRECTORY_SEPARATOR.'tabs'.'AdminUpgrade.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');
|
||||
if (!$res OR !parent::uninstall())
|
||||
if (!$res || !parent::uninstall())
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -116,13 +116,13 @@ class CarrierCompare extends Module
|
||||
if (!Validate::isInt($id_state))
|
||||
$errors[] = $this->l('Invalid state ID');
|
||||
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)))
|
||||
$errors[] = $this->l('Invalid country ID');
|
||||
$errors[] = $this->l('Please select a country');
|
||||
if (!$this->checkZipcode($zipcode, $id_country))
|
||||
$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)))
|
||||
$errors[] = $this->l('Invalid carrier ID');
|
||||
$errors[] = $this->l('Please select a carrier');
|
||||
|
||||
if (sizeof($errors))
|
||||
return $errors;
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
<module>
|
||||
<name>ebay</name>
|
||||
<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>
|
||||
<author><![CDATA[PrestaShop]]></author>
|
||||
<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>
|
||||
<need_instance>1</need_instance>
|
||||
<limited_countries></limited_countries>
|
||||
|
||||
@@ -1163,8 +1163,8 @@ class eBayRequest
|
||||
'status' => (string)$order->CheckoutStatus->Status,
|
||||
'date' => substr((string)$order->CreatedTime, 0, 10).' '.substr((string)$order->CreatedTime, 11, 8),
|
||||
'name' => (string)$order->ShippingAddress->Name,
|
||||
'firstname' => trim($name[0]),
|
||||
'familyname' => (isset($name[1]) ? trim($name[1]) : trim($name[0])),
|
||||
'firstname' => substr(trim($name[0]), 0, 32),
|
||||
'familyname' => (isset($name[1]) ? substr(trim($name[1]), 0, 32) : substr(trim($name[0]), 0, 32)),
|
||||
'address1' => (string)$order->ShippingAddress->Street1,
|
||||
'address2' => (string)$order->ShippingAddress->Street2,
|
||||
'city' => (string)$order->ShippingAddress->CityName,
|
||||
|
||||
@@ -59,7 +59,7 @@ class Ebay extends Module
|
||||
{
|
||||
$this->name = 'ebay';
|
||||
$this->tab = 'market_place';
|
||||
$this->version = '1.2.8';
|
||||
$this->version = '1.3';
|
||||
$this->author = 'PrestaShop';
|
||||
parent::__construct ();
|
||||
$this->displayName = $this->l('eBay');
|
||||
@@ -113,6 +113,9 @@ class Ebay extends Module
|
||||
|
||||
// Loading Shipping Method
|
||||
$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_lang = $this->id_lang;
|
||||
$cartAdd->id_currency = Currency::getIdByIsoCode('EUR');
|
||||
$cartAdd->recyclable = 0;
|
||||
$cartAdd->gift = 0;
|
||||
$cartAdd->add();
|
||||
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)))
|
||||
|
||||
@@ -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_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_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_25fff46a6fe5b9512e2f4054f4ff6060'] = 'N\'a pas pu trouvé les produits dans votre catalogue';
|
||||
$_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'].', ';
|
||||
if (is_array($this->_params['relayPointInfo']))
|
||||
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
|
||||
$query .= '
|
||||
MR_Selected_Num = NULL,
|
||||
@@ -82,14 +82,14 @@ class MRManagement extends MondialRelay
|
||||
(`id_customer`, `id_method`, `id_cart`, ';
|
||||
if (is_array($this->_params['relayPointInfo']))
|
||||
foreach($this->_params['relayPointInfo'] as $nameKey => $value)
|
||||
$query .= '`MR_Selected_'.$nameKey.'`, ';
|
||||
$query .= '`MR_Selected_'.pSQL($nameKey).'`, ';
|
||||
$query = rtrim($query, ', ').') VALUES (
|
||||
'.$this->_params['id_customer'].',
|
||||
'.$this->_params['id_mr_method'].',
|
||||
'.$this->_params['id_cart'].', ';
|
||||
if (is_array($this->_params['relayPointInfo']))
|
||||
foreach($this->_params['relayPointInfo'] as $nameKey => $value)
|
||||
$query .= '"'.$value.'", ';
|
||||
$query .= '"'.pSQL($value).'", ';
|
||||
$query = rtrim($query, ', ').')';
|
||||
}
|
||||
Db::getInstance()->Execute($query);
|
||||
|
||||
@@ -922,12 +922,14 @@ class MondialRelay extends Module
|
||||
<fieldset class="PS_MRFormStyle">
|
||||
<legend>
|
||||
<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>
|
||||
<div id="PS_MRAdvancedSettings">
|
||||
<p>
|
||||
'.$this->l('URL Cron Task:').' '.Tools::getHttpHost(true, true)
|
||||
._MODULE_DIR_.$this->name.'/cron.php?secure_key='.
|
||||
<p>'.
|
||||
$this->l('URL Cron Task:').' '.Tools::getHttpHost(true, true).
|
||||
_MODULE_DIR_.$this->name.'/cron.php?secure_key='.
|
||||
Configuration::get('MONDIAL_RELAY_SECURE_KEY').
|
||||
'</p>
|
||||
</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 |
@@ -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/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/en5.png">'.$this->l('See the screenshot for step').' 5</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
@@ -297,10 +297,10 @@ abstract class PSCPrepaidServices extends PaymentModule
|
||||
foreach ($this->_getAllowedCurrencies() AS $currency)
|
||||
{
|
||||
$mid = Configuration::get($this->prefix.'MERCHANT_ID_'.$currency['iso_code']);
|
||||
$certificateExiste = '';
|
||||
$certificate = '';
|
||||
$passwordExist = '';
|
||||
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']))
|
||||
$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">
|
||||
<input type="file" name="ct_keyring_certificate_'.$currency['iso_code'].'" />
|
||||
</div>
|
||||
'.$certificateExiste.'
|
||||
'.$certificate.'
|
||||
<label>'.$this->getL('keyring_pw').'</label>
|
||||
<div class="margin-form">
|
||||
<input type="password" name="ct_keyring_pw_'.$currency['iso_code'].'" value=""/>
|
||||
|
||||
@@ -6,21 +6,24 @@
|
||||
</head>
|
||||
<body>
|
||||
<table style="font-family: Verdana,sans-serif; font-size: 11px; color: #374953; width: 550px;">
|
||||
<tbody>
|
||||
<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>
|
||||
<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><td> </td></tr>
|
||||
<tr>
|
||||
<td> </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>
|
||||
<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™</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@@ -13,7 +13,7 @@
|
||||
</tr>
|
||||
<tr>
|
||||
<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 />
|
||||
<center><a href="{rating_url}"><img border="0" src="{button_url}/apply_fr.gif" alt="Evaluez nous" /></a></center>
|
||||
</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™
|
||||
+151
-3
@@ -881,9 +881,11 @@ $_LANGADM['AdminEmployeesa9e4402481bd9b8e36752bf731f67eb6'] = 'Thème :';
|
||||
$_LANGADM['AdminEmployeese4b41fb20213ac1461a81cb0c310bd97'] = 'Mode d\'interface';
|
||||
$_LANGADM['AdminEmployeesf177aa999000021a3901ac78a2728b59'] = 'Affichage au survol';
|
||||
$_LANGADM['AdminEmployeesd4e0f6342c209912053fec10be72c94b'] = 'Affichage au clic';
|
||||
$_LANGADM['AdminEmployees24a23d787190f2c4812ff9ab11847a72'] = 'Statut :';
|
||||
$_LANGADM['AdminEmployees79f79257476673a2aea1b2a41adf3384'] = 'Afficher le screencast:';
|
||||
$_LANGADM['AdminEmployees00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
|
||||
$_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['AdminEmployees9fbf3617c6172a75648e9ac0a864bb56'] = 'Profil :';
|
||||
$_LANGADM['AdminEmployees7bc873cba11f035df692c3549366c722'] = '-- Choisissez --';
|
||||
@@ -2552,8 +2554,13 @@ $_LANGADM['AdminScenesc820e0c1d4ae16db218626f49e7916b1'] = 'Ko max.';
|
||||
$_LANGADM['AdminScenes0b24516ee8c68a18020951583bc3b8ab'] = 'Automatiquement redimensionné à';
|
||||
$_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['AdminScenes56a8a9eb05f9014da51a4f9b57322ac7'] = 'Catégorie(s) :';
|
||||
$_LANGADM['AdminScenes19f2cd1d239a894f67d4ac73058af014'] = 'Cochez les cases des catégories dans lesquelles la scène doit apparaître.';
|
||||
$_LANGADM['AdminScenes8cf04a9734132302f96da8e113e80ce5'] = 'Accueil';
|
||||
$_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['AdminScenesdf41d831253828e9852a25c72393fde8'] = 'Enregistrez la scène';
|
||||
$_LANGADM['AdminScenesf5dae0e1b3d4bc66fadd2840b4f79227'] = 'Veuillez ajouter une image pour continuer';
|
||||
@@ -3073,6 +3080,147 @@ $_LANGADM['AdminTranslations52d83d7ed502b33d300a8c0af2c5b455'] = 'Liste des them
|
||||
$_LANGADM['AdminTranslationsc21f969b5f03d33d43e04f8f136e7682'] = 'defaut';
|
||||
$_LANGADM['AdminTranslationsa9e4402481bd9b8e36752bf731f67eb6'] = 'Thème';
|
||||
$_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['AdminWebservice00d23a76e43b46dae9ec7aa9dcbebb32'] = 'Activé';
|
||||
$_LANGADM['AdminWebservice52699c78843b98f98620186a59b0a3fa'] = 'Description de la clé';
|
||||
|
||||
Reference in New Issue
Block a user