Merge branch 'development' of https://github.com/PrestaShop/PrestaShop into development
This commit is contained in:
@@ -30,14 +30,14 @@ echo ' </div>
|
|||||||
<div id="footer">
|
<div id="footer">
|
||||||
<div style="float:left;margin-left:10px;padding-top:6px">
|
<div style="float:left;margin-left:10px;padding-top:6px">
|
||||||
<a href="http://www.prestashop.com/" target="_blank" style="font-weight:700;color:#666666">PrestaShop™ '._PS_VERSION_.'</a><br />
|
<a href="http://www.prestashop.com/" target="_blank" style="font-weight:700;color:#666666">PrestaShop™ '._PS_VERSION_.'</a><br />
|
||||||
<span style="font-size:10px">'.translate('Load time:').' '.number_format(microtime(true) - $timerStart, 3, '.', '').'s</span>
|
<span style="font-size:10px">'.Translate::getAdminTranslation('Load time:').' '.number_format(microtime(true) - $timerStart, 3, '.', '').'s</span>
|
||||||
</div>
|
</div>
|
||||||
<div style="float:right;height:40px;margin-right:10px;line-height:38px;vertical-align:middle">';
|
<div style="float:right;height:40px;margin-right:10px;line-height:38px;vertical-align:middle">';
|
||||||
if (strtoupper(Context::getContext()->language->iso_code) == 'FR') echo '<span style="color: #812143; font-weight: bold;">Questions / Renseignements / Formations :</span> <strong>+33 (0)1.40.18.30.04</strong> de 09h à 18h ';
|
if (strtoupper(Context::getContext()->language->iso_code) == 'FR') echo '<span style="color: #812143; font-weight: bold;">Questions / Renseignements / Formations :</span> <strong>+33 (0)1.40.18.30.04</strong> de 09h à 18h ';
|
||||||
|
|
||||||
echo ' | <a href="http://www.prestashop.com/en/contact_us/" target="_blank" class="footer_link">'.translate('Contact').'</a>
|
echo ' | <a href="http://www.prestashop.com/en/contact_us/" target="_blank" class="footer_link">'.Translate::getAdminTranslation('Contact').'</a>
|
||||||
| <a href="http://forge.prestashop.com" target="_blank" class="footer_link">'.translate('Bug Tracker').'</a>
|
| <a href="http://forge.prestashop.com" target="_blank" class="footer_link">'.Translate::getAdminTranslation('Bug Tracker').'</a>
|
||||||
| <a href="http://www.prestashop.com/forums/" target="_blank" class="footer_link">'.translate('Forum').'</a>
|
| <a href="http://www.prestashop.com/forums/" target="_blank" class="footer_link">'.Translate::getAdminTranslation('Forum').'</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
+16
-9
@@ -223,8 +223,16 @@ function checkPSVersion()
|
|||||||
return $upgrader->checkPSVersion();
|
return $upgrader->checkPSVersion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Deprecated since > 1.5.4.1
|
||||||
|
* Use Translate::getAdminTranslation($string) instead
|
||||||
|
*
|
||||||
|
* @param string $string
|
||||||
|
*/
|
||||||
function translate($string)
|
function translate($string)
|
||||||
{
|
{
|
||||||
|
Tools::displayAsDeprecated();
|
||||||
|
|
||||||
global $_LANGADM;
|
global $_LANGADM;
|
||||||
if (!is_array($_LANGADM))
|
if (!is_array($_LANGADM))
|
||||||
return str_replace('"', '"', $string);
|
return str_replace('"', '"', $string);
|
||||||
@@ -233,7 +241,6 @@ function translate($string)
|
|||||||
return str_replace('"', '"', stripslashes($str));
|
return str_replace('"', '"', stripslashes($str));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a new Tab object
|
* Returns a new Tab object
|
||||||
*
|
*
|
||||||
@@ -461,7 +468,7 @@ function runAdminTab($tab, $ajaxMode = false)
|
|||||||
echo '<div class="path_bar">
|
echo '<div class="path_bar">
|
||||||
<div id="help-button" class="floatr" style="display: none; font-family: Verdana; font-size: 10px; margin-right: 4px; margin-top: 4px;">
|
<div id="help-button" class="floatr" style="display: none; font-family: Verdana; font-size: 10px; margin-right: 4px; margin-top: 4px;">
|
||||||
</div>
|
</div>
|
||||||
<a href="?token='.Tools::getAdminToken($tab.intval(Tab::getIdFromClassName($tab)).(int)Context::getContext()->employee->id).'">'.translate('Back Office').'</a>
|
<a href="?token='.Tools::getAdminToken($tab.intval(Tab::getIdFromClassName($tab)).(int)Context::getContext()->employee->id).'">'.Translate::getAdminTranslation('Back Office').'</a>
|
||||||
'.$bread.'</div>';
|
'.$bread.'</div>';
|
||||||
|
|
||||||
if (!$ajaxMode && Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && Context::getContext()->controller->multishop_context != Shop::CONTEXT_ALL)
|
if (!$ajaxMode && Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_ALL && Context::getContext()->controller->multishop_context != Shop::CONTEXT_ALL)
|
||||||
@@ -470,10 +477,10 @@ function runAdminTab($tab, $ajaxMode = false)
|
|||||||
if (Shop::getContext() == Shop::CONTEXT_GROUP)
|
if (Shop::getContext() == Shop::CONTEXT_GROUP)
|
||||||
{
|
{
|
||||||
$shop_group = new ShopGroup((int)Shop::getContextShopGroupID());
|
$shop_group = new ShopGroup((int)Shop::getContextShopGroupID());
|
||||||
printf(translate('You are configuring your store for group shop %s'), '<b>'.$shop_group->name.'</b>');
|
printf(Translate::getAdminTranslation('You are configuring your store for group shop %s'), '<b>'.$shop_group->name.'</b>');
|
||||||
}
|
}
|
||||||
elseif (Shop::getContext() == Shop::CONTEXT_SHOP)
|
elseif (Shop::getContext() == Shop::CONTEXT_SHOP)
|
||||||
printf(translate('You are configuring your store for shop %s'), '<b>'.Context::getContext()->shop->name.'</b>');
|
printf(Translate::getAdminTranslation('You are configuring your store for shop %s'), '<b>'.Context::getContext()->shop->name.'</b>');
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
if (Validate::isLoadedObject($adminObj))
|
if (Validate::isLoadedObject($adminObj))
|
||||||
@@ -546,8 +553,8 @@ function runAdminTab($tab, $ajaxMode = false)
|
|||||||
|
|
||||||
|
|
||||||
// we can display the correct url
|
// we can display the correct url
|
||||||
// die(Tools::jsonEncode(array(translate('Invalid security token'),$url)));
|
// die(Tools::jsonEncode(array(Translate::getAdminTranslation('Invalid security token'),$url)));
|
||||||
die(Tools::jsonEncode(translate('Invalid security token')));
|
die(Tools::jsonEncode(Translate::getAdminTranslation('Invalid security token')));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -559,17 +566,17 @@ function runAdminTab($tab, $ajaxMode = false)
|
|||||||
if (false === strpos($url, '?token=') AND false === strpos($url, '&token='))
|
if (false === strpos($url, '?token=') AND false === strpos($url, '&token='))
|
||||||
$url .= '&token='.$adminObj->token;
|
$url .= '&token='.$adminObj->token;
|
||||||
|
|
||||||
$message = translate('Invalid security token');
|
$message = Translate::getAdminTranslation('Invalid security token');
|
||||||
echo '<html><head><title>'.$message.'</title></head><body style="font-family:Arial,Verdana,Helvetica,sans-serif;background-color:#EC8686">
|
echo '<html><head><title>'.$message.'</title></head><body style="font-family:Arial,Verdana,Helvetica,sans-serif;background-color:#EC8686">
|
||||||
<div style="background-color:#FAE2E3;border:1px solid #000000;color:#383838;font-weight:700;line-height:20px;margin:0 0 10px;padding:10px 15px;width:500px">
|
<div style="background-color:#FAE2E3;border:1px solid #000000;color:#383838;font-weight:700;line-height:20px;margin:0 0 10px;padding:10px 15px;width:500px">
|
||||||
<img src="../img/admin/error2.png" style="margin:-4px 5px 0 0;vertical-align:middle">
|
<img src="../img/admin/error2.png" style="margin:-4px 5px 0 0;vertical-align:middle">
|
||||||
'.$message.'
|
'.$message.'
|
||||||
</div>';
|
</div>';
|
||||||
echo '<a href="'.htmlentities($url).'" method="get" style="float:left;margin:10px">
|
echo '<a href="'.htmlentities($url).'" method="get" style="float:left;margin:10px">
|
||||||
<input type="button" value="'.Tools::htmlentitiesUTF8(translate('I understand the risks and I really want to display this page')).'" style="height:30px;margin-top:5px" />
|
<input type="button" value="'.Tools::htmlentitiesUTF8(Translate::getAdminTranslation('I understand the risks and I really want to display this page')).'" style="height:30px;margin-top:5px" />
|
||||||
</a>
|
</a>
|
||||||
<a href="index.php" method="get" style="float:left;margin:10px">
|
<a href="index.php" method="get" style="float:left;margin:10px">
|
||||||
<input type="button" value="'.Tools::htmlentitiesUTF8(translate('Take me out of here!')).'" style="height:40px" />
|
<input type="button" value="'.Tools::htmlentitiesUTF8(Translate::getAdminTranslation('Take me out of here!')).'" style="height:40px" />
|
||||||
</a>
|
</a>
|
||||||
</body></html>';
|
</body></html>';
|
||||||
die;
|
die;
|
||||||
|
|||||||
+35
-35
@@ -41,7 +41,7 @@ echo '
|
|||||||
<link type="text/css" rel="stylesheet" href="'._PS_JS_DIR_.'jquery/plugins/cluetip/jquery.cluetip.css" />
|
<link type="text/css" rel="stylesheet" href="'._PS_JS_DIR_.'jquery/plugins/cluetip/jquery.cluetip.css" />
|
||||||
<link type="text/css" rel="stylesheet" href="themes/'.Context::getContext()->employee->bo_theme.'/css/admin.css" />
|
<link type="text/css" rel="stylesheet" href="themes/'.Context::getContext()->employee->bo_theme.'/css/admin.css" />
|
||||||
<link type="text/css" rel="stylesheet" href="'._PS_JS_DIR_.'jquery/plugins/chosen/jquery.chosen.css" />
|
<link type="text/css" rel="stylesheet" href="'._PS_JS_DIR_.'jquery/plugins/chosen/jquery.chosen.css" />
|
||||||
<title>PrestaShop™ - '.translate('Administration panel').'</title>
|
<title>PrestaShop™ - '.Translate::getAdminTranslation('Administration panel').'</title>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var helpboxes = '.Configuration::get('PS_HELPBOX').';
|
var helpboxes = '.Configuration::get('PS_HELPBOX').';
|
||||||
var roundMode = '.Configuration::get('PS_PRICE_ROUND_MODE').';
|
var roundMode = '.Configuration::get('PS_PRICE_ROUND_MODE').';
|
||||||
@@ -78,7 +78,7 @@ echo '
|
|||||||
html = "";
|
html = "";
|
||||||
nb_notifs = 0;
|
nb_notifs = 0;
|
||||||
$.each(json.order, function(property, value) {
|
$.each(json.order, function(property, value) {
|
||||||
html += "<li>'.translate('A new order has been made on your shop.').'<br />'.translate('Order number : ').'<strong>#" + parseInt(value.id_order) + "</strong><br />'.translate('Total : ').'<strong>" + value.total_paid_real + "</strong><br />'.translate('From : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminOrders&token='.Tools::getAdminTokenLite('AdminOrders').'&vieworder&id_order=" + parseInt(value.id_order) + "\">'.translate('Click here to see that order').'</a></li>";
|
html += "<li>'.Translate::getAdminTranslation('A new order has been made on your shop.').'<br />'.Translate::getAdminTranslation('Order number : ').'<strong>#" + parseInt(value.id_order) + "</strong><br />'.Translate::getAdminTranslation('Total : ').'<strong>" + value.total_paid_real + "</strong><br />'.Translate::getAdminTranslation('From : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminOrders&token='.Tools::getAdminTokenLite('AdminOrders').'&vieworder&id_order=" + parseInt(value.id_order) + "\">'.Translate::getAdminTranslation('Click here to see that order').'</a></li>";
|
||||||
});
|
});
|
||||||
|
|
||||||
if (html != "")
|
if (html != "")
|
||||||
@@ -99,7 +99,7 @@ echo '
|
|||||||
html = "";
|
html = "";
|
||||||
nb_notifs = 0;
|
nb_notifs = 0;
|
||||||
$.each(json.customer, function(property, value) {
|
$.each(json.customer, function(property, value) {
|
||||||
html += "<li>'.translate('A new customer registered on your shop.').'<br />'.translate('Customer name : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminCustomers&token='.Tools::getAdminTokenLite('AdminCustomers').'&viewcustomer&id_customer=" + parseInt(value.id_customer) + "\">'.translate('Click here to see that customer').'</a></li>";
|
html += "<li>'.Translate::getAdminTranslation('A new customer registered on your shop.').'<br />'.Translate::getAdminTranslation('Customer name : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminCustomers&token='.Tools::getAdminTokenLite('AdminCustomers').'&viewcustomer&id_customer=" + parseInt(value.id_customer) + "\">'.Translate::getAdminTranslation('Click here to see that customer').'</a></li>";
|
||||||
});
|
});
|
||||||
if (html != "")
|
if (html != "")
|
||||||
{
|
{
|
||||||
@@ -121,7 +121,7 @@ echo '
|
|||||||
html = "";
|
html = "";
|
||||||
nb_notifs = 0;
|
nb_notifs = 0;
|
||||||
$.each(json.customer_message, function(property, value) {
|
$.each(json.customer_message, function(property, value) {
|
||||||
html += "<li>'.translate('A new message posted on your shop.').'<br />'.translate('From : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminCustomerThreads&token='.Tools::getAdminTokenLite('AdminCustomerThreads').'&viewcustomer_thread&id_customer_thread=" + parseInt(value.id_customer_thread) + "\">'.translate('Click here to see that message').'</a></li>";
|
html += "<li>'.Translate::getAdminTranslation('A new message posted on your shop.').'<br />'.Translate::getAdminTranslation('From : ').'<strong>" + value.customer_name + "</strong><br /><a href=\"index.php?tab=AdminCustomerThreads&token='.Tools::getAdminTokenLite('AdminCustomerThreads').'&viewcustomer_thread&id_customer_thread=" + parseInt(value.id_customer_thread) + "\">'.Translate::getAdminTranslation('Click here to see that message').'</a></li>";
|
||||||
});
|
});
|
||||||
|
|
||||||
if (html != "")
|
if (html != "")
|
||||||
@@ -149,14 +149,14 @@ echo '
|
|||||||
if (Shop::isFeatureActive())
|
if (Shop::isFeatureActive())
|
||||||
{
|
{
|
||||||
if (Shop::getContext() == Shop::CONTEXT_ALL)
|
if (Shop::getContext() == Shop::CONTEXT_ALL)
|
||||||
$youEditFieldFor = translate('A modification of this field will be applied for all shops');
|
$youEditFieldFor = Translate::getAdminTranslation('A modification of this field will be applied for all shops');
|
||||||
elseif (Shop::getContext() == Shop::CONTEXT_GROUP)
|
elseif (Shop::getContext() == Shop::CONTEXT_GROUP)
|
||||||
{
|
{
|
||||||
$shop_group = new ShopGroup((int)Shop::getContextShopGroupID());
|
$shop_group = new ShopGroup((int)Shop::getContextShopGroupID());
|
||||||
$youEditFieldFor = sprintf(translate('A modification of this field will be applied for all shops of group %s'), '<b>'.$shop_group->name.'</b>');
|
$youEditFieldFor = sprintf(Translate::getAdminTranslation('A modification of this field will be applied for all shops of group %s'), '<b>'.$shop_group->name.'</b>');
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$youEditFieldFor = sprintf(translate('A modification of this field will be applied for the shop %s'), '<b>'.Context::getContext()->shop->name.'</b>');
|
$youEditFieldFor = sprintf(Translate::getAdminTranslation('A modification of this field will be applied for the shop %s'), '<b>'.Context::getContext()->shop->name.'</b>');
|
||||||
echo 'hints.html(hints.html()+\'<br /><span class="red">'.addslashes($youEditFieldFor).'</span>\');';
|
echo 'hints.html(hints.html()+\'<br /><span class="red">'.addslashes($youEditFieldFor).'</span>\');';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,10 +202,10 @@ echo ' var html = "";
|
|||||||
{
|
{
|
||||||
echo '<div id="orders_notif" class="notifs"><span id="orders_notif_number_wrapper" class="number_wrapper"><span id="orders_notif_value">0</span></span>
|
echo '<div id="orders_notif" class="notifs"><span id="orders_notif_number_wrapper" class="number_wrapper"><span id="orders_notif_value">0</span></span>
|
||||||
<div id="orders_notif_wrapper" class="notifs_wrapper">
|
<div id="orders_notif_wrapper" class="notifs_wrapper">
|
||||||
<h3>'.translate('Last orders').'</h3>
|
<h3>'.Translate::getAdminTranslation('Last orders').'</h3>
|
||||||
<p class="no_notifs">'.translate('No new orders has been made on your shop').'</p>
|
<p class="no_notifs">'.Translate::getAdminTranslation('No new orders has been made on your shop').'</p>
|
||||||
<ul id="list_orders_notif"></ul>
|
<ul id="list_orders_notif"></ul>
|
||||||
<p><a href="index.php?tab=AdminOrders&token='.Tools::getAdminTokenLite('AdminOrders').'">'.translate('Show all orders').'</a></p>
|
<p><a href="index.php?tab=AdminOrders&token='.Tools::getAdminTokenLite('AdminOrders').'">'.Translate::getAdminTranslation('Show all orders').'</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
@@ -213,10 +213,10 @@ echo ' var html = "";
|
|||||||
{
|
{
|
||||||
echo '<div id="customers_notif" class="notifs notifs_alternate"><span id="customers_notif_number_wrapper" class="number_wrapper"><span id="customers_notif_value">0</span></span>
|
echo '<div id="customers_notif" class="notifs notifs_alternate"><span id="customers_notif_number_wrapper" class="number_wrapper"><span id="customers_notif_value">0</span></span>
|
||||||
<div id="customers_notif_wrapper" class="notifs_wrapper">
|
<div id="customers_notif_wrapper" class="notifs_wrapper">
|
||||||
<h3>'.translate('Last customers').'</h3>
|
<h3>'.Translate::getAdminTranslation('Last customers').'</h3>
|
||||||
<p class="no_notifs">'.translate('No new customers registered on your shop').'</p>
|
<p class="no_notifs">'.Translate::getAdminTranslation('No new customers registered on your shop').'</p>
|
||||||
<ul id="list_customers_notif"></ul>
|
<ul id="list_customers_notif"></ul>
|
||||||
<p><a href="index.php?tab=AdminCustomers&token='.Tools::getAdminTokenLite('AdminCustomers').'">'.translate('Show all customers').'</a></p>
|
<p><a href="index.php?tab=AdminCustomers&token='.Tools::getAdminTokenLite('AdminCustomers').'">'.Translate::getAdminTranslation('Show all customers').'</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
@@ -224,26 +224,26 @@ echo ' var html = "";
|
|||||||
{
|
{
|
||||||
echo '<div id="customer_messages_notif" class="notifs"><span id="customer_messages_notif_number_wrapper" class="number_wrapper"><span id="customer_messages_notif_value">0</span></span>
|
echo '<div id="customer_messages_notif" class="notifs"><span id="customer_messages_notif_number_wrapper" class="number_wrapper"><span id="customer_messages_notif_value">0</span></span>
|
||||||
<div id="customer_messages_notif_wrapper" class="notifs_wrapper">
|
<div id="customer_messages_notif_wrapper" class="notifs_wrapper">
|
||||||
<h3>'.translate('Last messages').'</h3>
|
<h3>'.Translate::getAdminTranslation('Last messages').'</h3>
|
||||||
<p class="no_notifs">'.translate('No new messages posted on your shop').'</p>
|
<p class="no_notifs">'.Translate::getAdminTranslation('No new messages posted on your shop').'</p>
|
||||||
<ul id="list_customer_messages_notif"></ul>
|
<ul id="list_customer_messages_notif"></ul>
|
||||||
<p><a href="index.php?tab=AdminCustomerThreads&token='.Tools::getAdminTokenLite('AdminCustomerThreads').'">'.translate('Show all messages').'</a></p>
|
<p><a href="index.php?tab=AdminCustomerThreads&token='.Tools::getAdminTokenLite('AdminCustomerThreads').'">'.Translate::getAdminTranslation('Show all messages').'</a></p>
|
||||||
</div>
|
</div>
|
||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
echo '</div>
|
echo '</div>
|
||||||
|
|
||||||
<div id="employee_box">
|
<div id="employee_box">
|
||||||
<div id="employee_infos">
|
<div id="employee_infos">
|
||||||
<div class="employee_name">'.translate('Welcome,').' <strong>'.Context::getContext()->employee->firstname.' '.Context::getContext()->employee->lastname.'</strong></div>
|
<div class="employee_name">'.Translate::getAdminTranslation('Welcome,').' <strong>'.Context::getContext()->employee->firstname.' '.Context::getContext()->employee->lastname.'</strong></div>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
<ul id="employee_links">
|
<ul id="employee_links">
|
||||||
<li><a href="'.htmlentities(Context::getContext()->link->getAdminLink('AdminEmployees'), ENT_COMPAT, 'UTF-8').'&id_employee={$employee->id}&updateemployee">'.translate('My preferences').'</a></li>
|
<li><a href="'.htmlentities(Context::getContext()->link->getAdminLink('AdminEmployees'), ENT_COMPAT, 'UTF-8').'&id_employee={$employee->id}&updateemployee">'.Translate::getAdminTranslation('My preferences').'</a></li>
|
||||||
<li class="separator"> </li>
|
<li class="separator"> </li>
|
||||||
<li><a id="header_logout" href="index.php?logout">'.translate('logout').'</a></li>
|
<li><a id="header_logout" href="index.php?logout">'.Translate::getAdminTranslation('logout').'</a></li>
|
||||||
</ul>';
|
</ul>';
|
||||||
if (defined(_PS_BASE_URL_))
|
if (defined(_PS_BASE_URL_))
|
||||||
echo '<a href="'._PS_BASE_URL_.'" id="header_foaccess" target="_blank" title="'.translate('View my shop').'">'.translate('View my shop').'</a>';
|
echo '<a href="'._PS_BASE_URL_.'" id="header_foaccess" target="_blank" title="'.Translate::getAdminTranslation('View my shop').'">'.Translate::getAdminTranslation('View my shop').'</a>';
|
||||||
echo '</div>
|
echo '</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -252,18 +252,18 @@ echo ' var html = "";
|
|||||||
<form method="post" action="index.php?controller=AdminSearch&token='.Tools::getAdminTokenLite('AdminSearch').'">
|
<form method="post" action="index.php?controller=AdminSearch&token='.Tools::getAdminTokenLite('AdminSearch').'">
|
||||||
<input type="text" name="bo_query" id="bo_query" value="'.Tools::safeOutput(Tools::stripslashes(Tools::getValue('bo_query'))).'" />
|
<input type="text" name="bo_query" id="bo_query" value="'.Tools::safeOutput(Tools::stripslashes(Tools::getValue('bo_query'))).'" />
|
||||||
<select name="bo_search_type" id="bo_search_type" class="chosen no-search">
|
<select name="bo_search_type" id="bo_search_type" class="chosen no-search">
|
||||||
<option value="0">'.translate('everywhere').'</option>
|
<option value="0">'.Translate::getAdminTranslation('everywhere').'</option>
|
||||||
<option value="1" '.(Tools::getValue('bo_search_type') == 1 ? 'selected="selected"' : '').'>'.translate('catalog').'</option>
|
<option value="1" '.(Tools::getValue('bo_search_type') == 1 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('catalog').'</option>
|
||||||
<optgroup label="'.translate('customers').':">
|
<optgroup label="'.Translate::getAdminTranslation('customers').':">
|
||||||
<option value="2" '.(Tools::getValue('bo_search_type') == 2 ? 'selected="selected"' : '').'>'.translate('by name').'</option>
|
<option value="2" '.(Tools::getValue('bo_search_type') == 2 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('by name').'</option>
|
||||||
<option value="6" '.(Tools::getValue('bo_search_type') == 6 ? 'selected="selected"' : '').'>'.translate('by ip address').'</option>
|
<option value="6" '.(Tools::getValue('bo_search_type') == 6 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('by ip address').'</option>
|
||||||
</optgroup>
|
</optgroup>
|
||||||
<option value="3" '.(Tools::getValue('bo_search_type') == 3 ? 'selected="selected"' : '').'>'.translate('orders').'</option>
|
<option value="3" '.(Tools::getValue('bo_search_type') == 3 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('orders').'</option>
|
||||||
<option value="4" '.(Tools::getValue('bo_search_type') == 4 ? 'selected="selected"' : '').'>'.translate('invoices').'</option>
|
<option value="4" '.(Tools::getValue('bo_search_type') == 4 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('invoices').'</option>
|
||||||
<option value="5" '.(Tools::getValue('bo_search_type') == 5 ? 'selected="selected"' : '').'>'.translate('carts').'</option>
|
<option value="5" '.(Tools::getValue('bo_search_type') == 5 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('carts').'</option>
|
||||||
<option value="7" '.(Tools::getValue('bo_search_type') == 7 ? 'selected="selected"' : '').'>'.translate('modules').'</option>
|
<option value="7" '.(Tools::getValue('bo_search_type') == 7 ? 'selected="selected"' : '').'>'.Translate::getAdminTranslation('modules').'</option>
|
||||||
</select>
|
</select>
|
||||||
<input type="submit" id="bo_search_submit" class="button" value="'.translate('Search').'"/>
|
<input type="submit" id="bo_search_submit" class="button" value="'.Translate::getAdminTranslation('Search').'"/>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="header_quick">
|
<div id="header_quick">
|
||||||
@@ -277,7 +277,7 @@ echo ' var html = "";
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<select onchange="quickSelect(this);" id="quick_select">
|
<select onchange="quickSelect(this);" id="quick_select">
|
||||||
<option value="0">'.translate('Quick Access').'</option>';
|
<option value="0">'.Translate::getAdminTranslation('Quick Access').'</option>';
|
||||||
foreach (QuickAccess::getQuickAccesses(Context::getContext()->language->id) AS $quick)
|
foreach (QuickAccess::getQuickAccesses(Context::getContext()->language->id) AS $quick)
|
||||||
{
|
{
|
||||||
preg_match('/controller=(.+)(&.+)?$/', $quick['link'], $adminTab);
|
preg_match('/controller=(.+)(&.+)?$/', $quick['link'], $adminTab);
|
||||||
@@ -342,8 +342,8 @@ echo '
|
|||||||
<div id="main">
|
<div id="main">
|
||||||
<div id="content">'
|
<div id="content">'
|
||||||
.(file_exists(_PS_ADMIN_DIR_.'/../install') ? '<div style="background-color: #FFEBCC;border: 1px solid #F90;line-height: 20px;margin: 0px 0px 10px;padding: 10px 20px;">'
|
.(file_exists(_PS_ADMIN_DIR_.'/../install') ? '<div style="background-color: #FFEBCC;border: 1px solid #F90;line-height: 20px;margin: 0px 0px 10px;padding: 10px 20px;">'
|
||||||
.translate('For security reasons, you must also:').' '.
|
.Translate::getAdminTranslation('For security reasons, you must also:').' '.
|
||||||
translate('delete the /install folder').
|
Translate::getAdminTranslation('delete the /install folder').
|
||||||
'</div>' : '').'
|
'</div>' : '').'
|
||||||
';
|
';
|
||||||
if(defined('_PS_MODE_DEV_') && _PS_MODE_DEV_)
|
if(defined('_PS_MODE_DEV_') && _PS_MODE_DEV_)
|
||||||
@@ -352,7 +352,7 @@ echo '
|
|||||||
if (Shop::isFeatureActive() && Context::getContext()->controller->multishop_context != Shop::CONTEXT_ALL)
|
if (Shop::isFeatureActive() && Context::getContext()->controller->multishop_context != Shop::CONTEXT_ALL)
|
||||||
{
|
{
|
||||||
echo '<div class="multishop_toolbar">
|
echo '<div class="multishop_toolbar">
|
||||||
<span class="text_multishop">'.translate('Multistore configuration for').'</span>'.
|
<span class="text_multishop">'.Translate::getAdminTranslation('Multistore configuration for').'</span>'.
|
||||||
Helper::renderShopList();
|
Helper::renderShopList();
|
||||||
echo '</div>';
|
echo '</div>';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
<tr id="image_id">
|
<tr id="image_id">
|
||||||
<td style="padding: 4px;">
|
<td style="padding: 4px;">
|
||||||
<a href="{$smarty.const._THEME_PROD_DIR_}image_path.jpg" class="fancybox">
|
<a href="{$smarty.const._THEME_PROD_DIR_}image_path.jpg" class="fancybox">
|
||||||
<img src="{$smarty.const._THEME_PROD_DIR_}en-default-small_default.jpg" alt="image_id" title="image_id" />
|
<img src="{$smarty.const._THEME_PROD_DIR_}{$iso_lang}-default-small_default.jpg" alt="image_id" title="image_id" />
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td id="td_image_id" class="pointer dragHandle center positionImage">
|
<td id="td_image_id" class="pointer dragHandle center positionImage">
|
||||||
@@ -313,12 +313,13 @@
|
|||||||
{
|
{
|
||||||
line = $("#lineType").html();
|
line = $("#lineType").html();
|
||||||
line = line.replace(/image_id/g, id);
|
line = line.replace(/image_id/g, id);
|
||||||
line = line.replace(/en-default/g, path);
|
line = line.replace(/[a-z]{2}-default/g, path);
|
||||||
line = line.replace(/image_path/g, path);
|
line = line.replace(/image_path/g, path);
|
||||||
line = line.replace(/image_position/g, position);
|
line = line.replace(/image_position/g, position);
|
||||||
line = line.replace(/blank/g, cover);
|
line = line.replace(/blank/g, cover);
|
||||||
line = line.replace(/<tbody>/gi, "");
|
line = line.replace(/<tbody>/gi, "");
|
||||||
line = line.replace(/<\/tbody>/gi, "");
|
line = line.replace(/<\/tbody>/gi, "");
|
||||||
|
|
||||||
if (shops != false)
|
if (shops != false)
|
||||||
{
|
{
|
||||||
$.each(shops, function(key, value){
|
$.each(shops, function(key, value){
|
||||||
@@ -326,8 +327,10 @@
|
|||||||
line = line.replace('id="' + key + '' + id + '"','id="' + key + '' + id + '" checked=checked');
|
line = line.replace('id="' + key + '' + id + '"','id="' + key + '' + id + '" checked=checked');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#imageList").append(line);
|
$("#imageList").append(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
$('.fancybox').fancybox();
|
$('.fancybox').fancybox();
|
||||||
});
|
});
|
||||||
{/literal}
|
{/literal}
|
||||||
|
|||||||
@@ -234,10 +234,10 @@
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
{elseif $input.type == 'file'}
|
{elseif $input.type == 'file'}
|
||||||
{if isset($input.display_image) && $input.display_image}
|
{if isset($input.display_image) && $input.display_image}
|
||||||
{if isset($fields_value.image) && $fields_value.image}
|
{if isset($fields_value[$input.name].image) && $fields_value[$input.name].image}
|
||||||
<div id="image">
|
<div id="image">
|
||||||
{$fields_value.image}
|
{$fields_value[$input.name].image}
|
||||||
<p align="center">{l s='File size'} {$fields_value.size}kb</p>
|
<p align="center">{l s='File size'} {$fields_value[$input.name].size}kb</p>
|
||||||
<a href="{$current}&{$identifier}={$form_id}&token={$token}&deleteImage=1">
|
<a href="{$current}&{$identifier}={$form_id}&token={$token}&deleteImage=1">
|
||||||
<img src="../img/admin/delete.gif" alt="{l s='Delete'}" /> {l s='Delete'}
|
<img src="../img/admin/delete.gif" alt="{l s='Delete'}" /> {l s='Delete'}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ class CMSCore extends ObjectModel
|
|||||||
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
||||||
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'required' => true, 'size' => 128),
|
||||||
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
|
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
|
||||||
'content' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString', 'size' => 3999999999999),
|
'content' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 3999999999999),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
+14
-13
@@ -1104,29 +1104,30 @@ class CartRuleCore extends ObjectModel
|
|||||||
'.($context->customer->id ? 'OR cr.id_customer = '.(int)$context->cart->id_customer : '').'
|
'.($context->customer->id ? 'OR cr.id_customer = '.(int)$context->cart->id_customer : '').'
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
cr.carrier_restriction = 0
|
cr.`carrier_restriction` = 0
|
||||||
'.($context->cart->id_carrier ? 'OR c.id_carrier = '.(int)$context->cart->id_carrier : '').'
|
'.($context->cart->id_carrier ? 'OR c.id_carrier = '.(int)$context->cart->id_carrier : '').'
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
cr.shop_restriction = 0
|
cr.`shop_restriction` = 0
|
||||||
'.((Shop::isFeatureActive() && $context->shop->id) ? 'OR crs.id_shop = '.(int)$context->shop->id : '').'
|
'.((Shop::isFeatureActive() && $context->shop->id) ? 'OR crs.id_shop = '.(int)$context->shop->id : '').'
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
cr.group_restriction = 0
|
cr.`group_restriction` = 0
|
||||||
'.($context->customer->id ? 'OR 0 < (
|
'.($context->customer->id ? 'OR 0 < (
|
||||||
SELECT cg.id_group
|
SELECT cg.`id_group`
|
||||||
FROM '._DB_PREFIX_.'customer_group cg
|
FROM `'._DB_PREFIX_.'customer_group` cg
|
||||||
LEFT JOIN '._DB_PREFIX_.'cart_rule_group crg ON (cg.id_group = crg.id_group AND cg.id_group = '.(int)$context->customer->id_default_group.')
|
INNER JOIN `'._DB_PREFIX_.'cart_rule_group` crg ON cg.id_group = crg.id_group
|
||||||
WHERE cr.id_cart_rule = crg.id_cart_rule
|
WHERE cr.`id_cart_rule` = crg.`id_cart_rule`
|
||||||
AND cg.id_customer = '.(int)$context->customer->id.' LIMIT 1
|
AND cg.`id_customer` = '.(int)$context->customer->id.'
|
||||||
|
LIMIT 1
|
||||||
)' : '').'
|
)' : '').'
|
||||||
)
|
)
|
||||||
AND (
|
AND (
|
||||||
cr.reduction_product <= 0
|
cr.`reduction_product` <= 0
|
||||||
OR cr.reduction_product IN (
|
OR cr.`reduction_product` IN (
|
||||||
SELECT id_product
|
SELECT `id_product`
|
||||||
FROM '._DB_PREFIX_.'cart_product
|
FROM `'._DB_PREFIX_.'cart_product`
|
||||||
WHERE id_cart = '.(int)$context->cart->id.'
|
WHERE `id_cart` = '.(int)$context->cart->id.'
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AND cr.id_cart_rule NOT IN (SELECT id_cart_rule FROM '._DB_PREFIX_.'cart_cart_rule WHERE id_cart = '.(int)$context->cart->id.')
|
AND cr.id_cart_rule NOT IN (SELECT id_cart_rule FROM '._DB_PREFIX_.'cart_cart_rule WHERE id_cart = '.(int)$context->cart->id.')
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class CategoryCore extends ObjectModel
|
|||||||
// Lang fields
|
// Lang fields
|
||||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64),
|
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 64),
|
||||||
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 64),
|
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 64),
|
||||||
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
|
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
|
||||||
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
||||||
'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
||||||
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
||||||
|
|||||||
@@ -82,8 +82,12 @@ class ConnectionCore extends ObjectModel
|
|||||||
// The connection is created if it does not exist yet and we get the current page id
|
// The connection is created if it does not exist yet and we get the current page id
|
||||||
if (!isset($cookie->id_connections) || !strstr(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', Tools::getHttpHost(false, false)))
|
if (!isset($cookie->id_connections) || !strstr(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '', Tools::getHttpHost(false, false)))
|
||||||
$id_page = Connection::setNewConnection($cookie);
|
$id_page = Connection::setNewConnection($cookie);
|
||||||
|
// If we do not track the pages, no need to get the page id
|
||||||
|
if (!Configuration::get('PS_STATSDATA_PAGESVIEWS') && !Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
||||||
|
return array();
|
||||||
if (!isset($id_page) || !$id_page)
|
if (!isset($id_page) || !$id_page)
|
||||||
$id_page = Page::getCurrentId();
|
$id_page = Page::getCurrentId();
|
||||||
|
// If we do not track the page views by customer, the id_page is the only information needed
|
||||||
if (!Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
if (!Configuration::get('PS_STATSDATA_CUSTOMER_PAGESVIEWS'))
|
||||||
return array('id_page' => $id_page);
|
return array('id_page' => $id_page);
|
||||||
|
|
||||||
|
|||||||
@@ -70,6 +70,13 @@ class GroupCore extends ObjectModel
|
|||||||
|
|
||||||
protected $webserviceParameters = array();
|
protected $webserviceParameters = array();
|
||||||
|
|
||||||
|
public function __construct($id = null, $id_lang = null, $id_shop = null)
|
||||||
|
{
|
||||||
|
parent::__construct($id, $id_lang, $id_shop);
|
||||||
|
if ($this->id && !isset(Group::$group_price_display_method[$this->id]))
|
||||||
|
self::$group_price_display_method[$this->id] = $this->price_display_method;
|
||||||
|
}
|
||||||
|
|
||||||
public static function getGroups($id_lang, $id_shop = false)
|
public static function getGroups($id_lang, $id_shop = false)
|
||||||
{
|
{
|
||||||
$shop_criteria = '';
|
$shop_criteria = '';
|
||||||
|
|||||||
+21
-14
@@ -64,10 +64,10 @@ class HookCore extends ObjectModel
|
|||||||
'primary' => 'id_hook',
|
'primary' => 'id_hook',
|
||||||
'fields' => array(
|
'fields' => array(
|
||||||
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isHookName', 'required' => true, 'size' => 64),
|
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isHookName', 'required' => true, 'size' => 64),
|
||||||
'title' => array('type' => self::TYPE_STRING),
|
'title' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'),
|
||||||
'description' => array('type' => self::TYPE_HTML),
|
'description' => array('type' => self::TYPE_HTML, 'validate' => 'isCleanHtml'),
|
||||||
'position' => array('type' => self::TYPE_BOOL),
|
'position' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
|
||||||
'live_edit' => array('type' => self::TYPE_BOOL),
|
'live_edit' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool'),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ class HookCore extends ObjectModel
|
|||||||
|
|
||||||
public function add($autodate = true, $null_values = false)
|
public function add($autodate = true, $null_values = false)
|
||||||
{
|
{
|
||||||
Cache::clean('hook_idbyname_'.$this->name);
|
Cache::clean('hook_idsbyname');
|
||||||
return parent::add($autodate, $null_values);
|
return parent::add($autodate, $null_values);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,19 +113,26 @@ class HookCore extends ObjectModel
|
|||||||
if (!Validate::isHookName($hook_name))
|
if (!Validate::isHookName($hook_name))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$cache_id = 'hook_idbyname_'.$hook_name;
|
$cache_id = 'hook_idsbyname';
|
||||||
if (!Cache::isStored($cache_id))
|
if (!Cache::isStored($cache_id))
|
||||||
{
|
{
|
||||||
$retro_hook_name = Hook::getRetroHookName($hook_name);
|
// Get all hook ID by name and alias
|
||||||
Cache::store($cache_id, Db::getInstance()->getValue('
|
$hook_ids = array();
|
||||||
SELECT `id_hook`
|
$result = Db::getInstance()->ExecuteS('
|
||||||
FROM `'._DB_PREFIX_.'hook`
|
SELECT `id_hook`, `name`
|
||||||
WHERE `name` = \''.pSQL($hook_name).'\'
|
FROM `'._DB_PREFIX_.'hook`
|
||||||
OR `name` = \''.pSQL($retro_hook_name).'\'
|
UNION
|
||||||
'));
|
SELECT `id_hook`, ha.`alias` as name
|
||||||
|
FROM `ps_hook_alias` ha
|
||||||
|
INNER JOIN `ps_hook` h ON ha.name = h.name');
|
||||||
|
foreach ($result as $row)
|
||||||
|
$hook_ids[$row['name']] = $row['id_hook'];
|
||||||
|
Cache::store($cache_id, $hook_ids);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
$hook_ids = Cache::retrieve($cache_id);
|
||||||
|
|
||||||
return Cache::retrieve($cache_id);
|
return (isset($hook_ids[$hook_name]) ? $hook_ids[$hook_name] : false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ class LanguageCore extends ObjectModel
|
|||||||
$mPath_to = _PS_MAIL_DIR_.(string)$iso_to.'/';
|
$mPath_to = _PS_MAIL_DIR_.(string)$iso_to.'/';
|
||||||
}
|
}
|
||||||
|
|
||||||
$lFiles = array('admin.php', 'errors.php', 'fields.php', 'pdf.php', 'tabs.php', 'index.php');
|
$lFiles = array('admin.php', 'errors.php', 'fields.php', 'pdf.php', 'tabs.php');
|
||||||
|
|
||||||
// Added natives mails files
|
// Added natives mails files
|
||||||
$mFiles = array(
|
$mFiles = array(
|
||||||
@@ -297,7 +297,7 @@ class LanguageCore extends ObjectModel
|
|||||||
'test.html', 'test.txt',
|
'test.html', 'test.txt',
|
||||||
'voucher.html', 'voucher.txt',
|
'voucher.html', 'voucher.txt',
|
||||||
'voucher_new.html', 'voucher_new.txt',
|
'voucher_new.html', 'voucher_new.txt',
|
||||||
'order_changed.html', 'order_changed.txt', 'index.php'
|
'order_changed.html', 'order_changed.txt'
|
||||||
);
|
);
|
||||||
|
|
||||||
$number = -1;
|
$number = -1;
|
||||||
|
|||||||
@@ -78,8 +78,8 @@ class ManufacturerCore extends ObjectModel
|
|||||||
'date_upd' => array('type' => self::TYPE_DATE),
|
'date_upd' => array('type' => self::TYPE_DATE),
|
||||||
|
|
||||||
// Lang fields
|
// Lang fields
|
||||||
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
|
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
|
||||||
'short_description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString', 'size' => 254),
|
'short_description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 254),
|
||||||
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
||||||
'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
'meta_description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
||||||
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName'),
|
'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName'),
|
||||||
@@ -198,6 +198,7 @@ class ManufacturerCore extends ObjectModel
|
|||||||
LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)
|
LEFT JOIN `'._DB_PREFIX_.'manufacturer` as m ON (m.`id_manufacturer`= p.`id_manufacturer`)
|
||||||
WHERE m.`id_manufacturer` = '.(int)$manufacturer['id_manufacturer'].
|
WHERE m.`id_manufacturer` = '.(int)$manufacturer['id_manufacturer'].
|
||||||
($active ? ' AND product_shop.`active` = 1 ' : '').
|
($active ? ' AND product_shop.`active` = 1 ' : '').
|
||||||
|
' AND product_shop.`visibility` NOT IN ("none")'.
|
||||||
($all_group ? '' : ' AND p.`id_product` IN (
|
($all_group ? '' : ' AND p.`id_product` IN (
|
||||||
SELECT cp.`id_product`
|
SELECT cp.`id_product`
|
||||||
FROM `'._DB_PREFIX_.'category_group` cg
|
FROM `'._DB_PREFIX_.'category_group` cg
|
||||||
|
|||||||
+33
-12
@@ -242,16 +242,6 @@ abstract class ObjectModelCore
|
|||||||
$this->{$key} = $value;
|
$this->{$key} = $value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_array(self::$fieldsRequiredDatabase))
|
|
||||||
{
|
|
||||||
$fields = $this->getfieldsRequiredDatabase(true);
|
|
||||||
if ($fields)
|
|
||||||
foreach ($fields as $row)
|
|
||||||
self::$fieldsRequiredDatabase[$row['object_name']][(int)$row['id_required_field']] = pSQL($row['field_name']);
|
|
||||||
else
|
|
||||||
self::$fieldsRequiredDatabase = array();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -901,6 +891,7 @@ abstract class ObjectModelCore
|
|||||||
*/
|
*/
|
||||||
public function validateField($field, $value, $id_lang = null)
|
public function validateField($field, $value, $id_lang = null)
|
||||||
{
|
{
|
||||||
|
$this->cacheFieldsRequiredDatabase();
|
||||||
$data = $this->def['fields'][$field];
|
$data = $this->def['fields'][$field];
|
||||||
|
|
||||||
// Check if field is required
|
// Check if field is required
|
||||||
@@ -939,8 +930,22 @@ abstract class ObjectModelCore
|
|||||||
if (!method_exists('Validate', $data['validate']))
|
if (!method_exists('Validate', $data['validate']))
|
||||||
throw new PrestaShopException('Validation function not found. '.$data['validate']);
|
throw new PrestaShopException('Validation function not found. '.$data['validate']);
|
||||||
|
|
||||||
if (!empty($value) && !call_user_func(array('Validate', $data['validate']), $value))
|
if (!empty($value))
|
||||||
return 'Property '.get_class($this).'->'.$field.' is not valid';
|
{
|
||||||
|
$res = true;
|
||||||
|
if (Tools::strtolower($data['validate']) == 'iscleanhtml')
|
||||||
|
{
|
||||||
|
if (!call_user_func(array('Validate', $data['validate']), $value, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')))
|
||||||
|
$res = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (!call_user_func(array('Validate', $data['validate']), $value))
|
||||||
|
$res = false;
|
||||||
|
}
|
||||||
|
if (!$res)
|
||||||
|
return 'Property '.get_class($this).'->'.$field.' is not valid';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@@ -969,6 +974,7 @@ abstract class ObjectModelCore
|
|||||||
|
|
||||||
public function validateController($htmlentities = true)
|
public function validateController($htmlentities = true)
|
||||||
{
|
{
|
||||||
|
$this->cacheFieldsRequiredDatabase();
|
||||||
$errors = array();
|
$errors = array();
|
||||||
$required_fields_database = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
|
$required_fields_database = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
|
||||||
foreach ($this->def['fields'] as $field => $data)
|
foreach ($this->def['fields'] as $field => $data)
|
||||||
@@ -1015,6 +1021,7 @@ abstract class ObjectModelCore
|
|||||||
|
|
||||||
public function getWebserviceParameters($ws_params_attribute_name = null)
|
public function getWebserviceParameters($ws_params_attribute_name = null)
|
||||||
{
|
{
|
||||||
|
$this->cacheFieldsRequiredDatabase();
|
||||||
$default_resource_parameters = array(
|
$default_resource_parameters = array(
|
||||||
'objectSqlId' => $this->def['primary'],
|
'objectSqlId' => $this->def['primary'],
|
||||||
'retrieveData' => array(
|
'retrieveData' => array(
|
||||||
@@ -1125,6 +1132,7 @@ abstract class ObjectModelCore
|
|||||||
|
|
||||||
public function validateFieldsRequiredDatabase($htmlentities = true)
|
public function validateFieldsRequiredDatabase($htmlentities = true)
|
||||||
{
|
{
|
||||||
|
$this->cacheFieldsRequiredDatabase();
|
||||||
$errors = array();
|
$errors = array();
|
||||||
$required_fields = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
|
$required_fields = (isset(self::$fieldsRequiredDatabase[get_class($this)])) ? self::$fieldsRequiredDatabase[get_class($this)] : array();
|
||||||
|
|
||||||
@@ -1152,6 +1160,19 @@ abstract class ObjectModelCore
|
|||||||
FROM '._DB_PREFIX_.'required_field
|
FROM '._DB_PREFIX_.'required_field
|
||||||
'.(!$all ? 'WHERE object_name = \''.pSQL(get_class($this)).'\'' : ''));
|
'.(!$all ? 'WHERE object_name = \''.pSQL(get_class($this)).'\'' : ''));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function cacheFieldsRequiredDatabase()
|
||||||
|
{
|
||||||
|
if (!is_array(self::$fieldsRequiredDatabase))
|
||||||
|
{
|
||||||
|
$fields = $this->getfieldsRequiredDatabase(true);
|
||||||
|
if ($fields)
|
||||||
|
foreach ($fields as $row)
|
||||||
|
self::$fieldsRequiredDatabase[$row['object_name']][(int)$row['id_required_field']] = pSQL($row['field_name']);
|
||||||
|
else
|
||||||
|
self::$fieldsRequiredDatabase = array();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function addFieldsRequiredDatabase($fields)
|
public function addFieldsRequiredDatabase($fields)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ abstract class PaymentModuleCore extends Module
|
|||||||
'<tr style="background-color: '.($key % 2 ? '#DDE2E6' : '#EBECEE').';">
|
'<tr style="background-color: '.($key % 2 ? '#DDE2E6' : '#EBECEE').';">
|
||||||
<td style="padding: 0.6em 0.4em;width: 15%;">'.$product['reference'].'</td>
|
<td style="padding: 0.6em 0.4em;width: 15%;">'.$product['reference'].'</td>
|
||||||
<td style="padding: 0.6em 0.4em;width: 30%;"><strong>'.$product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : '').'</strong></td>
|
<td style="padding: 0.6em 0.4em;width: 30%;"><strong>'.$product['name'].(isset($product['attributes']) ? ' - '.$product['attributes'] : '').'</strong></td>
|
||||||
<td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt, $this->context->currency, false).'</td>
|
<td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(Product::getTaxCalculationMethod((int)$this->context->customer->id) == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt, $this->context->currency, false).'</td>
|
||||||
<td style="padding: 0.6em 0.4em; width: 15%;">'.((int)$product['cart_quantity'] - $customization_quantity).'</td>
|
<td style="padding: 0.6em 0.4em; width: 15%;">'.((int)$product['cart_quantity'] - $customization_quantity).'</td>
|
||||||
<td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(((int)$product['cart_quantity'] - $customization_quantity) * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt), $this->context->currency, false).'</td>
|
<td style="padding: 0.6em 0.4em; width: 20%;">'.Tools::displayPrice(((int)$product['cart_quantity'] - $customization_quantity) * (Product::getTaxCalculationMethod() == PS_TAX_EXC ? Tools::ps_round($price, 2) : $price_wt), $this->context->currency, false).'</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
@@ -431,9 +431,9 @@ abstract class PaymentModuleCore extends Module
|
|||||||
|
|
||||||
// Set the new voucher value
|
// Set the new voucher value
|
||||||
if ($voucher->reduction_tax)
|
if ($voucher->reduction_tax)
|
||||||
$voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt - $order->total_shipping_tax_incl;
|
$voucher->reduction_amount = $values['tax_incl'] - $order->total_products_wt - ($voucher->free_shipping == 1 ? $order->total_shipping_tax_incl : 0);
|
||||||
else
|
else
|
||||||
$voucher->reduction_amount = $values['tax_excl'] - $order->total_products - $order->total_shipping_tax_excl;
|
$voucher->reduction_amount = $values['tax_excl'] - $order->total_products - ($voucher->free_shipping == 1 ? $order->total_shipping_tax_excl : 0);
|
||||||
|
|
||||||
$voucher->id_customer = $order->id_customer;
|
$voucher->id_customer = $order->id_customer;
|
||||||
$voucher->quantity = 1;
|
$voucher->quantity = 1;
|
||||||
|
|||||||
+6
-4
@@ -297,8 +297,8 @@ class ProductCore extends ObjectModel
|
|||||||
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
'meta_title' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 128),
|
||||||
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
|
'link_rewrite' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isLinkRewrite', 'required' => true, 'size' => 128),
|
||||||
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
|
'name' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128),
|
||||||
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
|
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
|
||||||
'description_short' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isString'),
|
'description_short' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
|
||||||
'available_now' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
'available_now' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName', 'size' => 255),
|
||||||
'available_later' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'IsGenericName', 'size' => 255),
|
'available_later' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'IsGenericName', 'size' => 255),
|
||||||
),
|
),
|
||||||
@@ -2699,8 +2699,10 @@ class ProductCore extends ObjectModel
|
|||||||
// Group reduction
|
// Group reduction
|
||||||
if ($use_group_reduction)
|
if ($use_group_reduction)
|
||||||
{
|
{
|
||||||
if ($reduction_from_category = (float)GroupReduction::getValueForProduct($id_product, $id_group))
|
$reduction_from_category = GroupReduction::getValueForProduct($id_product, $id_group);
|
||||||
$price -= $price * $reduction_from_category;
|
|
||||||
|
if (!empty($reduction_from_category) && (float)$reduction_from_category == 0)
|
||||||
|
$price -= $price * (float)$reduction_from_category;
|
||||||
else // apply group reduction if there is no group reduction for this category
|
else // apply group reduction if there is no group reduction for this category
|
||||||
$price *= ((100 - Group::getReductionByIdGroup($id_group)) / 100);
|
$price *= ((100 - Group::getReductionByIdGroup($id_group)) / 100);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -571,6 +571,14 @@ class SearchCore
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function removeProductsSearchIndex($products)
|
||||||
|
{
|
||||||
|
if (count($products)) {
|
||||||
|
Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'search_index WHERE id_product IN ('.implode(',', $products).')');
|
||||||
|
ObjectModel::updateMultishopTable('Product', array('indexed' => 0), 'a.id_product IN ('.implode(',', $products).')');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected static function setProductsAsIndexed(&$products)
|
protected static function setProductsAsIndexed(&$products)
|
||||||
{
|
{
|
||||||
if (count($products))
|
if (count($products))
|
||||||
|
|||||||
@@ -140,6 +140,7 @@ class SupplierCore extends ObjectModel
|
|||||||
WHERE ps.`id_supplier` = '.(int)$supplier['id_supplier'].'
|
WHERE ps.`id_supplier` = '.(int)$supplier['id_supplier'].'
|
||||||
AND ps.id_product_attribute = 0'.
|
AND ps.id_product_attribute = 0'.
|
||||||
($active ? ' AND product_shop.`active` = 1' : '').
|
($active ? ' AND product_shop.`active` = 1' : '').
|
||||||
|
' AND product_shop.`visibility` NOT IN ("none")'.
|
||||||
($all_groups ? '' :'
|
($all_groups ? '' :'
|
||||||
AND ps.`id_product` IN (
|
AND ps.`id_product` IN (
|
||||||
SELECT cp.`id_product`
|
SELECT cp.`id_product`
|
||||||
|
|||||||
+16
-1
@@ -2430,7 +2430,7 @@ exit;
|
|||||||
return $pattern;
|
return $pattern;
|
||||||
return preg_replace('/\\\[px]\{[a-z]\}{1,2}|(\/[a-z]*)u([a-z]*)$/i', "$1$2", $pattern);
|
return preg_replace('/\\\[px]\{[a-z]\}{1,2}|(\/[a-z]*)u([a-z]*)$/i', "$1$2", $pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function addonsRequest($request, $params = array())
|
public static function addonsRequest($request, $params = array())
|
||||||
{
|
{
|
||||||
$addons_url = 'api.addons.prestashop.com';
|
$addons_url = 'api.addons.prestashop.com';
|
||||||
@@ -2516,6 +2516,21 @@ exit;
|
|||||||
// No content, return false
|
// No content, return false
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function fileAttachment($input = 'fileUpload')
|
||||||
|
{
|
||||||
|
$fileAttachment = null;
|
||||||
|
if (isset($_FILES[$input]['name']) && !empty($_FILES[$input]['name']) && !empty($_FILES[$input]['tmp_name']))
|
||||||
|
{
|
||||||
|
$fileAttachment['rename'] = uniqid(). self::strtolower(substr($_FILES[$input]['name'], -5));
|
||||||
|
$fileAttachment['content'] = file_get_contents($_FILES[$input]['tmp_name']);
|
||||||
|
$fileAttachment['tmp_name'] = $_FILES[$input]['tmp_name'];
|
||||||
|
$fileAttachment['name'] = $_FILES[$input]['name'];
|
||||||
|
$fileAttachment['mime'] = $_FILES[$input]['type'];
|
||||||
|
$fileAttachment['error'] = $_FILES[$input]['error'];
|
||||||
|
}
|
||||||
|
return $fileAttachment;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+10
-3
@@ -380,7 +380,7 @@ class ValidateCore
|
|||||||
*/
|
*/
|
||||||
public static function isGenericName($name)
|
public static function isGenericName($name)
|
||||||
{
|
{
|
||||||
return empty($name) || preg_match('/^[^<>=#{}]*$/u', $name);
|
return empty($name) || preg_match('/^[^<>={}]*$/u', $name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -389,7 +389,7 @@ class ValidateCore
|
|||||||
* @param string $html HTML field to validate
|
* @param string $html HTML field to validate
|
||||||
* @return boolean Validity is ok or not
|
* @return boolean Validity is ok or not
|
||||||
*/
|
*/
|
||||||
public static function isCleanHtml($html)
|
public static function isCleanHtml($html, $allow_iframe = false)
|
||||||
{
|
{
|
||||||
$events = 'onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange';
|
$events = 'onmousedown|onmousemove|onmmouseup|onmouseover|onmouseout|onload|onunload|onfocus|onblur|onchange';
|
||||||
$events .= '|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror|onselect|onreset|onabort|ondragdrop|onresize|onactivate|onafterprint|onmoveend';
|
$events .= '|onsubmit|ondblclick|onclick|onkeydown|onkeyup|onkeypress|onmouseenter|onmouseleave|onerror|onselect|onreset|onabort|ondragdrop|onresize|onactivate|onafterprint|onmoveend';
|
||||||
@@ -398,7 +398,14 @@ class ValidateCore
|
|||||||
$events .= '|ondragleave|ondragover|ondragstart|ondrop|onerrorupdate|onfilterchange|onfinish|onfocusin|onfocusout|onhashchange|onhelp|oninput|onlosecapture|onmessage|onmouseup|onmovestart';
|
$events .= '|ondragleave|ondragover|ondragstart|ondrop|onerrorupdate|onfilterchange|onfinish|onfocusin|onfocusout|onhashchange|onhelp|oninput|onlosecapture|onmessage|onmouseup|onmovestart';
|
||||||
$events .= '|onoffline|ononline|onpaste|onpropertychange|onreadystatechange|onresizeend|onresizestart|onrowenter|onrowexit|onrowsdelete|onrowsinserted|onscroll|onsearch|onselectionchange';
|
$events .= '|onoffline|ononline|onpaste|onpropertychange|onreadystatechange|onresizeend|onresizestart|onrowenter|onrowexit|onrowsdelete|onrowsinserted|onscroll|onsearch|onselectionchange';
|
||||||
$events .= '|onselectstart|onstart|onstop';
|
$events .= '|onselectstart|onstart|onstop';
|
||||||
return (!preg_match('/<[ \t\n]*script/ims', $html) && !preg_match('/('.$events.')[ \t\n]*=/ims', $html) && !preg_match('/.*script\:/ims', $html) && !preg_match('/<[ \t\n]*i?frame/ims', $html));
|
|
||||||
|
if (preg_match('/<[ \t\n]*script/ims', $html) || preg_match('/('.$events.')[ \t\n]*=/ims', $html) || preg_match('/.*script\:/ims', $html))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!$allow_iframe && preg_match('/<[ \t\n]*(i?frame|form|input|embed|object)/ims', $html))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -803,7 +803,7 @@ class AdminControllerCore extends Controller
|
|||||||
if (empty($this->redirect_after))
|
if (empty($this->redirect_after))
|
||||||
$this->redirect_after = self::$currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=4&token='.$this->token;
|
$this->redirect_after = self::$currentIndex.($parent_id ? '&'.$this->identifier.'='.$object->id : '').'&conf=4&token='.$this->token;
|
||||||
}
|
}
|
||||||
Logger::addLog(sprintf($this->l('%s edition'), $this->className), 1, null, $this->className, (int)$this->object->id, true, (int)$this->context->employee->id);
|
Logger::addLog(sprintf($this->l('%s edition'), $this->className), 1, null, $this->className, (int)$object->id, true, (int)$this->context->employee->id);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
$this->errors[] = Tools::displayError('An error occurred while updating an object.').
|
$this->errors[] = Tools::displayError('An error occurred while updating an object.').
|
||||||
@@ -3013,4 +3013,4 @@ class AdminControllerCore extends Controller
|
|||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -775,9 +775,11 @@ class FrontControllerCore extends Controller
|
|||||||
|
|
||||||
public function checkLiveEditAccess()
|
public function checkLiveEditAccess()
|
||||||
{
|
{
|
||||||
$live_token = Tools::getAdminToken('AdminModulesPositions'.(int)Tab::getIdFromClassName('AdminModulesPositions').(int)Tools::getValue('id_employee'));
|
if (!Tools::isSubmit('live_edit') || !Tools::getValue('ad') || !Tools::getValue('liveToken'))
|
||||||
$ad = Tools::getValue('ad');
|
return false;
|
||||||
return Tools::isSubmit('live_edit') && $ad && Tools::getValue('liveToken') == $live_token && is_dir(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$ad);
|
if (Tools::getValue('liveToken') != Tools::getAdminToken('AdminModulesPositions'.(int)Tab::getIdFromClassName('AdminModulesPositions').(int)Tools::getValue('id_employee')))
|
||||||
|
return false;
|
||||||
|
return is_dir(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.Tools::getValue('ad'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getLiveEditFooter()
|
public function getLiveEditFooter()
|
||||||
@@ -847,8 +849,8 @@ class FrontControllerCore extends Controller
|
|||||||
|
|
||||||
$range = 2; /* how many pages around page selected */
|
$range = 2; /* how many pages around page selected */
|
||||||
|
|
||||||
if ($this->p < 0)
|
if ($this->p < 1)
|
||||||
$this->p = 0;
|
$this->p = 1;
|
||||||
|
|
||||||
if (isset($this->context->cookie->nb_item_per_page) && $this->n != $this->context->cookie->nb_item_per_page && in_array($this->n, $nArray))
|
if (isset($this->context->cookie->nb_item_per_page) && $this->n != $this->context->cookie->nb_item_per_page && in_array($this->n, $nArray))
|
||||||
$this->context->cookie->nb_item_per_page = $this->n;
|
$this->context->cookie->nb_item_per_page = $this->n;
|
||||||
|
|||||||
@@ -25,8 +25,6 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class is currently only here for tests
|
|
||||||
*
|
|
||||||
* @since 1.5.0
|
* @since 1.5.0
|
||||||
*/
|
*/
|
||||||
class DbPDOCore extends Db
|
class DbPDOCore extends Db
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ class HelperListCore extends Helper
|
|||||||
);
|
);
|
||||||
|
|
||||||
if ($this->specificConfirmDelete !== false)
|
if ($this->specificConfirmDelete !== false)
|
||||||
$data['confirm'] = !is_null($this->specificConfirmDelete) ? '\r'.$this->specificConfirmDelete : self::$cache_lang['DeleteItem'].$name;
|
$data['confirm'] = !is_null($this->specificConfirmDelete) ? '\r'.$this->specificConfirmDelete : addcslashes(Tools::htmlentitiesDecodeUTF8(self::$cache_lang['DeleteItem'].$name), '\'');
|
||||||
|
|
||||||
$tpl->assign(array_merge($this->tpl_delete_link_vars, $data));
|
$tpl->assign(array_merge($this->tpl_delete_link_vars, $data));
|
||||||
|
|
||||||
|
|||||||
+36
-31
@@ -153,18 +153,22 @@ abstract class ModuleCore
|
|||||||
// If cache is not generated, we generate it
|
// If cache is not generated, we generate it
|
||||||
if (self::$modules_cache == null && !is_array(self::$modules_cache))
|
if (self::$modules_cache == null && !is_array(self::$modules_cache))
|
||||||
{
|
{
|
||||||
// Join clause is done to check if the module is activated in current shop context
|
$id_shop = (Validate::isLoadedObject($this->context->shop) ? $this->context->shop->id : 1);
|
||||||
$sql_limit_shop = 'SELECT COUNT(*) FROM `'._DB_PREFIX_.'module_shop` ms WHERE m.`id_module` = ms.`id_module` AND ms.`id_shop` = '.((is_object(Context::getContext()->shop) && $id = (int)Context::getContext()->shop->id) ? $id : 1);
|
|
||||||
|
|
||||||
$sql = 'SELECT m.`id_module`, m.`name`, ('.$sql_limit_shop.') as total FROM `'._DB_PREFIX_.'module` m';
|
|
||||||
|
|
||||||
// Result is cached
|
|
||||||
self::$modules_cache = array();
|
self::$modules_cache = array();
|
||||||
$result = Db::getInstance()->executeS($sql);
|
// Join clause is done to check if the module is activated in current shop context
|
||||||
|
$result = Db::getInstance()->executeS('
|
||||||
|
SELECT m.`id_module`, m.`name`, (
|
||||||
|
SELECT id_module
|
||||||
|
FROM `'._DB_PREFIX_.'module_shop` ms
|
||||||
|
WHERE m.`id_module` = ms.`id_module`
|
||||||
|
AND ms.`id_shop` = '.(int)$id_shop.'
|
||||||
|
LIMIT 1
|
||||||
|
) as mshop
|
||||||
|
FROM `'._DB_PREFIX_.'module` m');
|
||||||
foreach ($result as $row)
|
foreach ($result as $row)
|
||||||
{
|
{
|
||||||
self::$modules_cache[$row['name']] = $row;
|
self::$modules_cache[$row['name']] = $row;
|
||||||
self::$modules_cache[$row['name']]['active'] = ($row['total'] > 0) ? 1 : 0;
|
self::$modules_cache[$row['name']]['active'] = ($row['mshop'] > 0) ? 1 : 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1350,7 +1354,7 @@ abstract class ModuleCore
|
|||||||
elseif (isset($context->customer))
|
elseif (isset($context->customer))
|
||||||
{
|
{
|
||||||
$groups = $context->customer->getGroups();
|
$groups = $context->customer->getGroups();
|
||||||
if (empty($groups))
|
if (!count($groups))
|
||||||
$groups = array(Configuration::get('PS_UNIDENTIFIED_GROUP'));
|
$groups = array(Configuration::get('PS_UNIDENTIFIED_GROUP'));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1373,7 +1377,7 @@ abstract class ModuleCore
|
|||||||
'.(isset($billing) && $frontend ? 'AND mc.id_country = '.(int)$billing->id_country : '').'
|
'.(isset($billing) && $frontend ? 'AND mc.id_country = '.(int)$billing->id_country : '').'
|
||||||
AND (SELECT COUNT(*) FROM '._DB_PREFIX_.'module_shop ms WHERE ms.id_module = m.id_module AND ms.id_shop IN('.implode(', ', $list).')) = '.count($list).'
|
AND (SELECT COUNT(*) FROM '._DB_PREFIX_.'module_shop ms WHERE ms.id_module = m.id_module AND ms.id_shop IN('.implode(', ', $list).')) = '.count($list).'
|
||||||
AND hm.id_shop IN('.implode(', ', $list).')
|
AND hm.id_shop IN('.implode(', ', $list).')
|
||||||
'.(count($groups) && $frontend ? 'AND (mg.`id_group` IN('.implode(', ', $groups).'))' : '').$paypal_condition.'
|
'.((count($groups) && $frontend) ? 'AND (mg.`id_group` IN ('.implode(', ', $groups).'))' : '').$paypal_condition.'
|
||||||
GROUP BY hm.id_hook, hm.id_module
|
GROUP BY hm.id_hook, hm.id_module
|
||||||
ORDER BY hm.`position`, m.`name` DESC');
|
ORDER BY hm.`position`, m.`name` DESC');
|
||||||
}
|
}
|
||||||
@@ -1511,12 +1515,12 @@ abstract class ModuleCore
|
|||||||
* @param int $id_hook Hook ID
|
* @param int $id_hook Hook ID
|
||||||
* @return array Exceptions
|
* @return array Exceptions
|
||||||
*/
|
*/
|
||||||
protected static $exceptionsCache = null;
|
public function getExceptions($id_hook, $dispatch = false)
|
||||||
public function getExceptions($hookID, $dispatch = false)
|
|
||||||
{
|
{
|
||||||
if (self::$exceptionsCache === null)
|
$cache_id = 'exceptionsCache';
|
||||||
|
if (!Cache::isStored($cache_id))
|
||||||
{
|
{
|
||||||
self::$exceptionsCache = array();
|
$exceptionsCache = array();
|
||||||
$sql = 'SELECT * FROM `'._DB_PREFIX_.'hook_module_exceptions`
|
$sql = 'SELECT * FROM `'._DB_PREFIX_.'hook_module_exceptions`
|
||||||
WHERE `id_shop` IN ('.implode(', ', Shop::getContextListShopID()).')';
|
WHERE `id_shop` IN ('.implode(', ', Shop::getContextListShopID()).')';
|
||||||
$result = Db::getInstance()->executeS($sql);
|
$result = Db::getInstance()->executeS($sql);
|
||||||
@@ -1525,33 +1529,34 @@ abstract class ModuleCore
|
|||||||
if (!$row['file_name'])
|
if (!$row['file_name'])
|
||||||
continue;
|
continue;
|
||||||
$key = $row['id_hook'].'-'.$row['id_module'];
|
$key = $row['id_hook'].'-'.$row['id_module'];
|
||||||
if (!isset(self::$exceptionsCache[$key]))
|
if (!isset($exceptionsCache[$key]))
|
||||||
self::$exceptionsCache[$key] = array();
|
$exceptionsCache[$key] = array();
|
||||||
if (!isset(self::$exceptionsCache[$key][$row['id_shop']]))
|
if (!isset($exceptionsCache[$key][$row['id_shop']]))
|
||||||
self::$exceptionsCache[$key][$row['id_shop']] = array();
|
$exceptionsCache[$key][$row['id_shop']] = array();
|
||||||
self::$exceptionsCache[$key][$row['id_shop']][] = $row['file_name'];
|
$exceptionsCache[$key][$row['id_shop']][] = $row['file_name'];
|
||||||
}
|
}
|
||||||
|
Cache::store($cache_id, $exceptionsCache);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
$exceptionsCache = !Cache::retrieve($cache_id);
|
||||||
|
|
||||||
$key = $hookID.'-'.$this->id;
|
$key = $id_hook.'-'.$this->id;
|
||||||
if (!$dispatch)
|
$array_return = array();
|
||||||
|
if ($dispatch)
|
||||||
{
|
{
|
||||||
$files = array();
|
|
||||||
foreach (Shop::getContextListShopID() as $shop_id)
|
foreach (Shop::getContextListShopID() as $shop_id)
|
||||||
if (isset(self::$exceptionsCache[$key], self::$exceptionsCache[$key][$shop_id]))
|
if (isset($exceptionsCache[$key], $exceptionsCache[$key][$shop_id]))
|
||||||
foreach (self::$exceptionsCache[$key][$shop_id] as $file)
|
$array_return[$shop_id] = $exceptionsCache[$key][$shop_id];
|
||||||
if (!in_array($file, $files))
|
|
||||||
$files[] = $file;
|
|
||||||
return $files;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$list = array();
|
|
||||||
foreach (Shop::getContextListShopID() as $shop_id)
|
foreach (Shop::getContextListShopID() as $shop_id)
|
||||||
if (isset(self::$exceptionsCache[$key], self::$exceptionsCache[$key][$shop_id]))
|
if (isset($exceptionsCache[$key], $exceptionsCache[$key][$shop_id]))
|
||||||
$list[$shop_id] = self::$exceptionsCache[$key][$shop_id];
|
foreach ($exceptionsCache[$key][$shop_id] as $file)
|
||||||
return $list;
|
if (!in_array($file, $array_return))
|
||||||
|
$array_return[] = $file;
|
||||||
}
|
}
|
||||||
|
return $array_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function isInstalled($module_name)
|
public static function isInstalled($module_name)
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ class OrderHistoryCore extends ObjectModel
|
|||||||
$links .= ' '.Tools::htmlentitiesUTF8(sprintf(Tools::displayError('downloadable %d time(s)'), (int)$product['downloadable']));
|
$links .= ' '.Tools::htmlentitiesUTF8(sprintf(Tools::displayError('downloadable %d time(s)'), (int)$product['downloadable']));
|
||||||
$links .= '</li>';
|
$links .= '</li>';
|
||||||
}
|
}
|
||||||
$links .= '<ul>';
|
$links .= '</ul>';
|
||||||
$data = array(
|
$data = array(
|
||||||
'{lastname}' => $customer->lastname,
|
'{lastname}' => $customer->lastname,
|
||||||
'{firstname}' => $customer->firstname,
|
'{firstname}' => $customer->firstname,
|
||||||
|
|||||||
+16
-19
@@ -143,22 +143,21 @@ class ShopUrlCore extends ObjectModel
|
|||||||
return Db::getInstance()->getValue($sql);
|
return Db::getInstance()->getValue($sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getMainShopDomain($id_shop = null)
|
|
||||||
{
|
|
||||||
if (!self::$main_domain || $id_shop !== null)
|
|
||||||
self::$main_domain = Db::getInstance()->getValue('SELECT domain
|
|
||||||
FROM '._DB_PREFIX_.'shop_url
|
|
||||||
WHERE main=1 AND id_shop = '.($id_shop !== null ? (int)$id_shop : Context::getContext()->shop->id));
|
|
||||||
return self::$main_domain;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function cacheMainDomainForShop($id_shop)
|
public static function cacheMainDomainForShop($id_shop)
|
||||||
{
|
{
|
||||||
if (!Validate::isUnsignedId($id_shop))
|
if (!Validate::isUnsignedId($id_shop))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
ShopUrl::getMainShopDomain($id_shop);
|
if (!self::$main_domain_ssl || !self::$main_domain || $id_shop !== null)
|
||||||
ShopUrl::getMainShopDomainSSL($id_shop);
|
{
|
||||||
|
$row = Db::getInstance()->getRow('
|
||||||
|
SELECT domain, domain_ssl
|
||||||
|
FROM '._DB_PREFIX_.'shop_url
|
||||||
|
WHERE main = 1
|
||||||
|
AND id_shop = '.($id_shop !== null ? (int)$id_shop : Context::getContext()->shop->id));
|
||||||
|
self::$main_domain = $row['domain'];
|
||||||
|
self::$main_domain_ssl = $row['domain_ssl'];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function resetMainDomainCache()
|
public static function resetMainDomainCache()
|
||||||
@@ -167,17 +166,15 @@ class ShopUrlCore extends ObjectModel
|
|||||||
self::$main_domain_ssl = null;
|
self::$main_domain_ssl = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getMainShopDomain($id_shop = null)
|
||||||
|
{
|
||||||
|
ShopUrl::cacheMainDomainForShop($id_shop);
|
||||||
|
return self::$main_domain;
|
||||||
|
}
|
||||||
|
|
||||||
public static function getMainShopDomainSSL($id_shop = null)
|
public static function getMainShopDomainSSL($id_shop = null)
|
||||||
{
|
{
|
||||||
if (!self::$main_domain_ssl || $id_shop !== null)
|
ShopUrl::cacheMainDomainForShop($id_shop);
|
||||||
{
|
|
||||||
$sql = 'SELECT domain_ssl
|
|
||||||
FROM '._DB_PREFIX_.'shop_url
|
|
||||||
WHERE main = 1
|
|
||||||
AND id_shop = '.($id_shop !== null ? (int)$id_shop : Context::getContext()->shop->id);
|
|
||||||
self::$main_domain_ssl = Db::getInstance()->getValue($sql);
|
|
||||||
}
|
|
||||||
return self::$main_domain_ssl;
|
return self::$main_domain_ssl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,13 +53,22 @@ class TaxRulesGroupCore extends ObjectModel
|
|||||||
|
|
||||||
protected static $_taxes = array();
|
protected static $_taxes = array();
|
||||||
|
|
||||||
public static function getTaxRulesGroups($only_active = true)
|
public static function getTaxRulesGroups($only_active = true, $multiShop = false)
|
||||||
{
|
{
|
||||||
return Db::getInstance()->executeS('
|
if ((bool)$multiShop) {
|
||||||
SELECT *
|
return Db::getInstance()->executeS('
|
||||||
FROM `'._DB_PREFIX_.'tax_rules_group` g'
|
SELECT *
|
||||||
.($only_active ? ' WHERE g.`active` = 1' : '').'
|
FROM `'._DB_PREFIX_.'tax_rules_group` g'
|
||||||
ORDER BY name ASC');
|
.Shop::addSqlAssociation('tax_rules_group', 'g')
|
||||||
|
.($only_active ? ' WHERE g.`active` = 1' : '').'
|
||||||
|
ORDER BY name ASC');
|
||||||
|
} else {
|
||||||
|
return Db::getInstance()->executeS('
|
||||||
|
SELECT *
|
||||||
|
FROM `'._DB_PREFIX_.'tax_rules_group` g'
|
||||||
|
.($only_active ? ' WHERE g.`active` = 1' : '').'
|
||||||
|
ORDER BY name ASC');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
+15
-1
@@ -90,7 +90,21 @@ if (!isset($_SERVER['HTTP_HOST']) || empty($_SERVER['HTTP_HOST']))
|
|||||||
$context = Context::getContext();
|
$context = Context::getContext();
|
||||||
|
|
||||||
/* Initialize the current Shop */
|
/* Initialize the current Shop */
|
||||||
$context->shop = Shop::initialize();
|
try
|
||||||
|
{
|
||||||
|
$context->shop = Shop::initialize();
|
||||||
|
}
|
||||||
|
catch(Exception $e)
|
||||||
|
{
|
||||||
|
header('HTTP/1.1 503 temporarily overloaded');
|
||||||
|
|
||||||
|
define('_PS_SMARTY_DIR_', _PS_TOOL_DIR_.'smarty/');
|
||||||
|
require_once(_PS_SMARTY_DIR_.'Smarty.class.php');
|
||||||
|
$context->smarty = new Smarty();
|
||||||
|
$context->smarty->display('error500.html');
|
||||||
|
|
||||||
|
exit;
|
||||||
|
}
|
||||||
define('_THEME_NAME_', $context->shop->getTheme());
|
define('_THEME_NAME_', $context->shop->getTheme());
|
||||||
define('__PS_BASE_URI__', $context->shop->getBaseURI());
|
define('__PS_BASE_URI__', $context->shop->getBaseURI());
|
||||||
|
|
||||||
|
|||||||
@@ -231,7 +231,7 @@ class AdminCategoriesControllerCore extends AdminController
|
|||||||
{
|
{
|
||||||
if (empty($this->display))
|
if (empty($this->display))
|
||||||
{
|
{
|
||||||
if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE'))
|
if (Configuration::get('PS_MULTISHOP_FEATURE_ACTIVE') && count(Shop::getShops()) > 1)
|
||||||
$this->toolbar_btn['new-url'] = array(
|
$this->toolbar_btn['new-url'] = array(
|
||||||
'href' => self::$currentIndex.'&add'.$this->table.'root&token='.$this->token,
|
'href' => self::$currentIndex.'&add'.$this->table.'root&token='.$this->token,
|
||||||
'desc' => $this->l('Add new root category')
|
'desc' => $this->l('Add new root category')
|
||||||
|
|||||||
@@ -433,10 +433,10 @@ class AdminCountriesControllerCore extends AdminController
|
|||||||
|
|
||||||
public function processStatus()
|
public function processStatus()
|
||||||
{
|
{
|
||||||
$return = parent::processStatus();
|
parent::processStatus();
|
||||||
if (Validate::isLoadedObject($object = $this->loadObject()) && $object->active == 1)
|
if (Validate::isLoadedObject($object = $this->loadObject()) && $object->active == 1)
|
||||||
$return &= Country::addModuleRestrictions(array(), array(array('id_country' => $object->id)), array());
|
return Country::addModuleRestrictions(array(), array(array('id_country' => $object->id)), array());
|
||||||
return $return;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processBulkStatusSelection($way)
|
public function processBulkStatusSelection($way)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ class AdminCurrenciesControllerCore extends AdminController
|
|||||||
'iso_code' => array('title' => $this->l('ISO code'), 'align' => 'center', 'width' => 80),
|
'iso_code' => array('title' => $this->l('ISO code'), 'align' => 'center', 'width' => 80),
|
||||||
'iso_code_num' => array('title' => $this->l('ISO code number'), 'align' => 'center', 'width' => 120),
|
'iso_code_num' => array('title' => $this->l('ISO code number'), 'align' => 'center', 'width' => 120),
|
||||||
'sign' => array('title' => $this->l('Symbol'), 'width' => 20, 'align' => 'center', 'orderby' => false, 'search' => false),
|
'sign' => array('title' => $this->l('Symbol'), 'width' => 20, 'align' => 'center', 'orderby' => false, 'search' => false),
|
||||||
'conversion_rate' => array('title' => $this->l('Exchange rate'), 'type' => 'float', 'align' => 'center', 'width' => 130, 'search' => false),
|
'conversion_rate' => array('title' => $this->l('Exchange rate'), 'type' => 'float', 'align' => 'center', 'width' => 130, 'search' => false, 'filter_key' => 'currency_shop!conversion_rate'),
|
||||||
'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false),
|
'active' => array('title' => $this->l('Enabled'), 'width' => 25, 'align' => 'center', 'active' => 'status', 'type' => 'bool', 'orderby' => false),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -377,12 +377,13 @@ class AdminHomeControllerCore extends AdminController
|
|||||||
$chart = new Chart();
|
$chart = new Chart();
|
||||||
$chart->getCurve(1)->setType('bars');
|
$chart->getCurve(1)->setType('bars');
|
||||||
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
|
||||||
SELECT total_paid / conversion_rate as total_converted, left(invoice_date, 10) as invoice_date
|
SELECT SUM(total_paid / conversion_rate) as total_converted, left(invoice_date, 10) as invoice_date
|
||||||
FROM '._DB_PREFIX_.'orders o
|
FROM '._DB_PREFIX_.'orders o
|
||||||
WHERE valid = 1
|
WHERE valid = 1
|
||||||
AND total_paid > 0
|
AND total_paid > 0
|
||||||
AND invoice_date BETWEEN \''.date('Y-m-d', strtotime('-7 DAYS', time())).' 00:00:00\' AND \''.date('Y-m-d H:i:s').'\'
|
AND invoice_date BETWEEN \''.date('Y-m-d', strtotime('-7 DAYS', time())).' 00:00:00\' AND \''.date('Y-m-d H:i:s').'\'
|
||||||
'.Shop::addSqlRestriction(Shop::SHARE_ORDER).'
|
'.Shop::addSqlRestriction(Shop::SHARE_ORDER).'
|
||||||
|
GROUP BY DATE(invoice_date)
|
||||||
');
|
');
|
||||||
foreach ($result as $row)
|
foreach ($result as $row)
|
||||||
$chart->getCurve(1)->setPoint(strtotime($row['invoice_date'].' 02:00:00'), $row['total_converted']);
|
$chart->getCurve(1)->setPoint(strtotime($row['invoice_date'].' 02:00:00'), $row['total_converted']);
|
||||||
|
|||||||
@@ -375,6 +375,7 @@ class AdminImagesControllerCore extends AdminController
|
|||||||
|| !Configuration::updateValue('PS_PNG_QUALITY', Tools::getValue('PS_PNG_QUALITY')))
|
|| !Configuration::updateValue('PS_PNG_QUALITY', Tools::getValue('PS_PNG_QUALITY')))
|
||||||
$this->errors[] = Tools::displayError('Unknown error.');
|
$this->errors[] = Tools::displayError('Unknown error.');
|
||||||
else
|
else
|
||||||
|
$this->confirmations[] = $this->_conf[6];
|
||||||
return parent::postProcess();
|
return parent::postProcess();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -511,7 +511,7 @@ class AdminManufacturersControllerCore extends AdminController
|
|||||||
$this->fields_value = array(
|
$this->fields_value = array(
|
||||||
'name' => Manufacturer::getNameById($address->id_manufacturer),
|
'name' => Manufacturer::getNameById($address->id_manufacturer),
|
||||||
'alias' => 'manufacturer',
|
'alias' => 'manufacturer',
|
||||||
'id_country' => Configuration::get('PS_COUNTRY_DEFAULT')
|
'id_country' => $address->id_country
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->initToolbar();
|
$this->initToolbar();
|
||||||
@@ -671,6 +671,8 @@ class AdminManufacturersControllerCore extends AdminController
|
|||||||
|
|
||||||
if (Tools::isSubmit('editaddresses'))
|
if (Tools::isSubmit('editaddresses'))
|
||||||
$this->display = 'editaddresses';
|
$this->display = 'editaddresses';
|
||||||
|
else if (Tools::isSubmit('updateaddress'))
|
||||||
|
$this->display = 'editaddresses';
|
||||||
else if (Tools::isSubmit('addaddress'))
|
else if (Tools::isSubmit('addaddress'))
|
||||||
$this->display = 'addaddress';
|
$this->display = 'addaddress';
|
||||||
else if (Tools::isSubmit('submitAddaddress'))
|
else if (Tools::isSubmit('submitAddaddress'))
|
||||||
|
|||||||
@@ -95,6 +95,14 @@ class AdminPreferencesControllerCore extends AdminController
|
|||||||
'default' => '0',
|
'default' => '0',
|
||||||
'visibility' => Shop::CONTEXT_ALL
|
'visibility' => Shop::CONTEXT_ALL
|
||||||
),
|
),
|
||||||
|
'PS_ALLOW_HTML_IFRAME' => array(
|
||||||
|
'title' => $this->l('Allow iframes on html fields'),
|
||||||
|
'desc' => $this->l('Allow iframes on fields like product description. We recommend that you leave this option disabled'),
|
||||||
|
'validation' => 'isBool',
|
||||||
|
'cast' => 'intval',
|
||||||
|
'type' => 'bool',
|
||||||
|
'default' => '0'
|
||||||
|
),
|
||||||
'PS_PRICE_ROUND_MODE' => array(
|
'PS_PRICE_ROUND_MODE' => array(
|
||||||
'title' => $this->l('Round mode'),
|
'title' => $this->l('Round mode'),
|
||||||
'desc' => $this->l('You can choose how to round prices: Always round superior, always round inferior or classic rounding.'),
|
'desc' => $this->l('You can choose how to round prices: Always round superior, always round inferior or classic rounding.'),
|
||||||
|
|||||||
@@ -2058,17 +2058,28 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
// Check fields validity
|
// Check fields validity
|
||||||
foreach ($rules['validate'] as $field => $function)
|
foreach ($rules['validate'] as $field => $function)
|
||||||
if ($this->isProductFieldUpdated($field) && ($value = Tools::getValue($field)))
|
if ($this->isProductFieldUpdated($field) && ($value = Tools::getValue($field)))
|
||||||
if (!Validate::$function($value))
|
{
|
||||||
|
$res = true;
|
||||||
|
if (Tools::strtolower($function) == 'iscleanhtml')
|
||||||
|
{
|
||||||
|
if (!Validate::$function($value, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')))
|
||||||
|
$res = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
if (!Validate::$function($value))
|
||||||
|
$res = false;
|
||||||
|
|
||||||
|
if (!$res)
|
||||||
$this->errors[] = sprintf(
|
$this->errors[] = sprintf(
|
||||||
Tools::displayError('The %s field is invalid.'),
|
Tools::displayError('The %s field is invalid.'),
|
||||||
call_user_func(array($className, 'displayFieldName'), $field, $className)
|
call_user_func(array($className, 'displayFieldName'), $field, $className)
|
||||||
);
|
);
|
||||||
|
}
|
||||||
// Check multilingual fields validity
|
// Check multilingual fields validity
|
||||||
foreach ($rules['validateLang'] as $fieldLang => $function)
|
foreach ($rules['validateLang'] as $fieldLang => $function)
|
||||||
foreach ($languages as $language)
|
foreach ($languages as $language)
|
||||||
if ($this->isProductFieldUpdated('description_short', $language['id_lang']) && ($value = Tools::getValue($fieldLang.'_'.$language['id_lang'])))
|
if ($this->isProductFieldUpdated('description_short', $language['id_lang']) && ($value = Tools::getValue($fieldLang.'_'.$language['id_lang'])))
|
||||||
if (!Validate::$function($value))
|
if (!Validate::$function($value, (int)Configuration::get('PS_ALLOW_HTML_IFRAME')))
|
||||||
$this->errors[] = sprintf(
|
$this->errors[] = sprintf(
|
||||||
Tools::displayError('The %1$s field (%2$s) is invalid.'),
|
Tools::displayError('The %1$s field (%2$s) is invalid.'),
|
||||||
call_user_func(array($className, 'displayFieldName'), $fieldLang, $className),
|
call_user_func(array($className, 'displayFieldName'), $fieldLang, $className),
|
||||||
@@ -2543,7 +2554,7 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$this->tpl_form_vars['currentIndex'] = self::$currentIndex;
|
$this->tpl_form_vars['currentIndex'] = self::$currentIndex;
|
||||||
$this->tpl_form_vars['display_multishop_checkboxes'] = (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP && $this->display == 'edit');
|
$this->tpl_form_vars['display_multishop_checkboxes'] = (Shop::isFeatureActive() && Shop::getContext() != Shop::CONTEXT_SHOP && $this->display == 'edit');
|
||||||
$this->fields_form = array('');
|
$this->fields_form = array('');
|
||||||
$this->display = 'edit';
|
|
||||||
$this->tpl_form_vars['token'] = $this->token;
|
$this->tpl_form_vars['token'] = $this->token;
|
||||||
$this->tpl_form_vars['combinationImagesJs'] = $this->getCombinationImagesJs();
|
$this->tpl_form_vars['combinationImagesJs'] = $this->getCombinationImagesJs();
|
||||||
$this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL');
|
$this->tpl_form_vars['PS_ALLOW_ACCENTED_CHARS_URL'] = (int)Configuration::get('PS_ALLOW_ACCENTED_CHARS_URL');
|
||||||
@@ -2573,8 +2584,8 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$this->tpl_form_vars['upload_max_filesize'] = $upload_max_filesize;
|
$this->tpl_form_vars['upload_max_filesize'] = $upload_max_filesize;
|
||||||
$this->tpl_form_vars['country_display_tax_label'] = $this->context->country->display_tax_label;
|
$this->tpl_form_vars['country_display_tax_label'] = $this->context->country->display_tax_label;
|
||||||
$this->tpl_form_vars['has_combinations'] = $this->object->hasAttributes();
|
$this->tpl_form_vars['has_combinations'] = $this->object->hasAttributes();
|
||||||
|
|
||||||
$this->product_exists_in_shop = true;
|
$this->product_exists_in_shop = true;
|
||||||
|
|
||||||
if ($this->display == 'edit' && Validate::isLoadedObject($product) && Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP && !$product->isAssociatedToShop($this->context->shop->id))
|
if ($this->display == 'edit' && Validate::isLoadedObject($product) && Shop::isFeatureActive() && Shop::getContext() == Shop::CONTEXT_SHOP && !$product->isAssociatedToShop($this->context->shop->id))
|
||||||
{
|
{
|
||||||
$this->product_exists_in_shop = false;
|
$this->product_exists_in_shop = false;
|
||||||
@@ -2602,12 +2613,14 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$this->initPack($this->object);
|
$this->initPack($this->object);
|
||||||
$this->{'initForm'.$this->tab_display}($this->object);
|
$this->{'initForm'.$this->tab_display}($this->object);
|
||||||
$this->tpl_form_vars['product'] = $this->object;
|
$this->tpl_form_vars['product'] = $this->object;
|
||||||
|
|
||||||
if ($this->ajax)
|
if ($this->ajax)
|
||||||
if (!isset($this->tpl_form_vars['custom_form']))
|
if (!isset($this->tpl_form_vars['custom_form']))
|
||||||
throw new PrestaShopException('custom_form empty for action '.$this->tab_display);
|
throw new PrestaShopException('custom_form empty for action '.$this->tab_display);
|
||||||
else
|
else
|
||||||
return $this->tpl_form_vars['custom_form'];
|
return $this->tpl_form_vars['custom_form'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$parent = parent::renderForm();
|
$parent = parent::renderForm();
|
||||||
$this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch'));
|
$this->addJqueryPlugin(array('autocomplete', 'fancybox', 'typewatch'));
|
||||||
return $parent;
|
return $parent;
|
||||||
@@ -2999,7 +3012,7 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$data->assign(array(
|
$data->assign(array(
|
||||||
'link' => $this->context->link,
|
'link' => $this->context->link,
|
||||||
'currency' => $currency = $this->context->currency,
|
'currency' => $currency = $this->context->currency,
|
||||||
'tax_rules_groups' => TaxRulesGroup::getTaxRulesGroups(true),
|
'tax_rules_groups' => TaxRulesGroup::getTaxRulesGroups(true, true),
|
||||||
'taxesRatesByGroup' => TaxRulesGroup::getAssociatedTaxRatesByIdCountry($this->context->country->id),
|
'taxesRatesByGroup' => TaxRulesGroup::getAssociatedTaxRatesByIdCountry($this->context->country->id),
|
||||||
'ecotaxTaxRate' => Tax::getProductEcotaxRate(),
|
'ecotaxTaxRate' => Tax::getProductEcotaxRate(),
|
||||||
'tax_exclude_taxe_option' => Tax::excludeTaxeOption(),
|
'tax_exclude_taxe_option' => Tax::excludeTaxeOption(),
|
||||||
@@ -3490,7 +3503,7 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$data->assign('languages', $this->_languages);
|
$data->assign('languages', $this->_languages);
|
||||||
$data->assign('currency', $currency);
|
$data->assign('currency', $currency);
|
||||||
$this->object = $product;
|
$this->object = $product;
|
||||||
$this->display = 'edit';
|
//$this->display = 'edit';
|
||||||
$data->assign('product_name_redirected', Product::getProductName((int)$product->id_product_redirected, null, (int)$this->context->language->id));
|
$data->assign('product_name_redirected', Product::getProductName((int)$product->id_product_redirected, null, (int)$this->context->language->id));
|
||||||
/*
|
/*
|
||||||
* Form for adding a virtual product like software, mp3, etc...
|
* Form for adding a virtual product like software, mp3, etc...
|
||||||
@@ -3646,12 +3659,15 @@ class AdminProductsControllerCore extends AdminController
|
|||||||
$current_shop_id = (int)$this->context->shop->id;
|
$current_shop_id = (int)$this->context->shop->id;
|
||||||
else
|
else
|
||||||
$current_shop_id = 0;
|
$current_shop_id = 0;
|
||||||
|
|
||||||
|
$languages = Language::getLanguages(true);
|
||||||
|
|
||||||
$data->assign(array(
|
$data->assign(array(
|
||||||
'countImages' => $count_images,
|
'countImages' => $count_images,
|
||||||
'id_product' => (int)Tools::getValue('id_product'),
|
'id_product' => (int)Tools::getValue('id_product'),
|
||||||
'id_category_default' => (int)$this->_category->id,
|
'id_category_default' => (int)$this->_category->id,
|
||||||
'images' => $images,
|
'images' => $images,
|
||||||
|
'iso_lang' => $languages[0]['iso_code'],
|
||||||
'token' => $this->token,
|
'token' => $this->token,
|
||||||
'table' => $this->table,
|
'table' => $this->table,
|
||||||
'max_image_size' => $this->max_image_size / 1024 / 1024,
|
'max_image_size' => $this->max_image_size / 1024 / 1024,
|
||||||
|
|||||||
@@ -181,11 +181,13 @@ class AdminStockInstantStateControllerCore extends AdminController
|
|||||||
*/
|
*/
|
||||||
public function getList($id_lang, $order_by = null, $order_way = null, $start = 0, $limit = null, $id_lang_shop = false)
|
public function getList($id_lang, $order_by = null, $order_way = null, $start = 0, $limit = null, $id_lang_shop = false)
|
||||||
{
|
{
|
||||||
if (Tools::isSubmit('csv') && (int)Tools::getValue('id_warehouse') != -1)
|
if ((Tools::isSubmit('csv_quantities') || Tools::isSubmit('csv_prices')) &&
|
||||||
|
(int)Tools::getValue('id_warehouse') != -1)
|
||||||
$limit = false;
|
$limit = false;
|
||||||
|
|
||||||
$order_by_valuation = false;
|
$order_by_valuation = false;
|
||||||
$order_by_real_quantity = false;
|
$order_by_real_quantity = false;
|
||||||
|
|
||||||
if ($this->context->cookie->{$this->table.'Orderby'} == 'valuation')
|
if ($this->context->cookie->{$this->table.'Orderby'} == 'valuation')
|
||||||
{
|
{
|
||||||
unset($this->context->cookie->{$this->table.'Orderby'});
|
unset($this->context->cookie->{$this->table.'Orderby'});
|
||||||
@@ -200,6 +202,7 @@ class AdminStockInstantStateControllerCore extends AdminController
|
|||||||
parent::getList($id_lang, $order_by, $order_way, $start, $limit, $id_lang_shop);
|
parent::getList($id_lang, $order_by, $order_way, $start, $limit, $id_lang_shop);
|
||||||
|
|
||||||
$nb_items = count($this->_list);
|
$nb_items = count($this->_list);
|
||||||
|
|
||||||
for ($i = 0; $i < $nb_items; ++$i)
|
for ($i = 0; $i < $nb_items; ++$i)
|
||||||
{
|
{
|
||||||
$item = &$this->_list[$i];
|
$item = &$this->_list[$i];
|
||||||
|
|||||||
@@ -296,8 +296,12 @@ class AdminStoresControllerCore extends AdminController
|
|||||||
|
|
||||||
if (!($obj = $this->loadObject(true)))
|
if (!($obj = $this->loadObject(true)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (file_exists(_PS_TMP_IMG_DIR_.$this->table.'_'.(int)$obj->id.'.'.$this->imageType)) {
|
||||||
|
@unlink(_PS_TMP_IMG_DIR_.$this->table.'_'.(int)$obj->id.'.'.$this->imageType);
|
||||||
|
}
|
||||||
|
|
||||||
$image = ImageManager::thumbnail(_PS_STORE_IMG_DIR_.'/'.$obj->id.'.jpg', $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true);
|
$image = ImageManager::thumbnail(_PS_STORE_IMG_DIR_.DIRECTORY_SEPARATOR.$obj->id.'.jpg', $this->table.'_'.(int)$obj->id.'.'.$this->imageType, 350, $this->imageType, true, true);
|
||||||
|
|
||||||
$days = array();
|
$days = array();
|
||||||
$days[1] = $this->l('Monday');
|
$days[1] = $this->l('Monday');
|
||||||
@@ -316,7 +320,7 @@ class AdminStoresControllerCore extends AdminController
|
|||||||
'latitude' => $this->getFieldValue($obj, 'latitude') ? $this->getFieldValue($obj, 'latitude') : Configuration::get('PS_STORES_CENTER_LAT'),
|
'latitude' => $this->getFieldValue($obj, 'latitude') ? $this->getFieldValue($obj, 'latitude') : Configuration::get('PS_STORES_CENTER_LAT'),
|
||||||
'longitude' => $this->getFieldValue($obj, 'longitude') ? $this->getFieldValue($obj, 'longitude') : Configuration::get('PS_STORES_CENTER_LONG'),
|
'longitude' => $this->getFieldValue($obj, 'longitude') ? $this->getFieldValue($obj, 'longitude') : Configuration::get('PS_STORES_CENTER_LONG'),
|
||||||
'image' => $image ? $image : false,
|
'image' => $image ? $image : false,
|
||||||
'size' => $image ? filesize(_PS_STORE_IMG_DIR_.'/'.$obj->id.'.jpg') / 1000 : false,
|
'size' => $image ? filesize(_PS_STORE_IMG_DIR_.DIRECTORY_SEPARATOR.$obj->id.'.jpg') / 1000 : false,
|
||||||
'days' => $days,
|
'days' => $days,
|
||||||
'hours' => isset($hours_unserialized) ? $hours_unserialized : false
|
'hours' => isset($hours_unserialized) ? $hours_unserialized : false
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -77,8 +77,23 @@ class AdminTagsControllerCore extends AdminController
|
|||||||
public function postProcess()
|
public function postProcess()
|
||||||
{
|
{
|
||||||
if ($this->tabAccess['edit'] === '1' && Tools::getValue('submitAdd'.$this->table))
|
if ($this->tabAccess['edit'] === '1' && Tools::getValue('submitAdd'.$this->table))
|
||||||
|
{
|
||||||
if (($id = (int)Tools::getValue($this->identifier)) && ($obj = new $this->className($id)) && Validate::isLoadedObject($obj))
|
if (($id = (int)Tools::getValue($this->identifier)) && ($obj = new $this->className($id)) && Validate::isLoadedObject($obj))
|
||||||
|
{
|
||||||
|
$previousProducts = $obj->getProducts();
|
||||||
|
$removedProducts = array();
|
||||||
|
|
||||||
|
foreach ($previousProducts as $product)
|
||||||
|
if (!in_array($product['id_product'], $_POST['products']))
|
||||||
|
$removedProducts[] = $product['id_product'];
|
||||||
|
|
||||||
|
if (Configuration::get('PS_SEARCH_INDEXATION'))
|
||||||
|
Search::removeProductsSearchIndex($removedProducts);
|
||||||
|
|
||||||
$obj->setProducts($_POST['products']);
|
$obj->setProducts($_POST['products']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return parent::postProcess();
|
return parent::postProcess();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -614,7 +614,7 @@ class AdminThemesControllerCore extends AdminController
|
|||||||
|
|
||||||
$ext = ($field_name == 'PS_STORES_ICON') ? '.gif' : '.jpg';
|
$ext = ($field_name == 'PS_STORES_ICON') ? '.gif' : '.jpg';
|
||||||
$logo_name = $logo_prefix.'-'.(int)$id_shop.$ext;
|
$logo_name = $logo_prefix.'-'.(int)$id_shop.$ext;
|
||||||
if (Context::getContext()->shop->getContext() == Shop::CONTEXT_ALL || $id_shop == 0 || Shop::isFeatureActive()==false)
|
if (Context::getContext()->shop->getContext() == Shop::CONTEXT_ALL || $id_shop == 0 || Shop::isFeatureActive() == false)
|
||||||
$logo_name = $logo_prefix.$ext;
|
$logo_name = $logo_prefix.$ext;
|
||||||
|
|
||||||
if ($field_name == 'PS_STORES_ICON')
|
if ($field_name == 'PS_STORES_ICON')
|
||||||
|
|||||||
@@ -353,13 +353,15 @@ class AdminTranslationsControllerCore extends AdminController
|
|||||||
$items = Language::getFilesList($from_lang, $from_theme, $to_lang, $to_theme, false, false, true);
|
$items = Language::getFilesList($from_lang, $from_theme, $to_lang, $to_theme, false, false, true);
|
||||||
foreach ($items as $source => $dest)
|
foreach ($items as $source => $dest)
|
||||||
{
|
{
|
||||||
$bool &= $this->checkDirAndCreate($dest);
|
if (!$this->checkDirAndCreate($dest))
|
||||||
$bool &= @copy($source, $dest);
|
$this->errors[] = sprintf($this->l('Impossible to create the directory "%s".'), $dest);
|
||||||
|
elseif (!copy($source, $dest))
|
||||||
if (strpos($dest, 'modules') && basename($source) === $from_lang.'.php' && $bool !== false)
|
$this->errors[] = sprintf($this->l('Impossible to copy "%s" to "%s".'), $source, $dest);
|
||||||
$bool &= $this->changeModulesKeyTranslation($dest, $from_theme, $to_theme);
|
elseif (strpos($dest, 'modules') && basename($source) === $from_lang.'.php' && $bool !== false)
|
||||||
|
if (!$this->changeModulesKeyTranslation($dest, $from_theme, $to_theme))
|
||||||
|
$this->errors[] = sprintf($this->l('Impossible to translate "$dest".'), $dest);
|
||||||
}
|
}
|
||||||
if ($bool)
|
if (!count($this->errors))
|
||||||
$this->redirect(false, 14);
|
$this->redirect(false, 14);
|
||||||
$this->errors[] = $this->l('A part of the data has been copied but some of the language files could not be found.');
|
$this->errors[] = $this->l('A part of the data has been copied but some of the language files could not be found.');
|
||||||
}
|
}
|
||||||
@@ -1072,7 +1074,7 @@ class AdminTranslationsControllerCore extends AdminController
|
|||||||
if ($type_file == 'php')
|
if ($type_file == 'php')
|
||||||
$regex = '/this->l\(\''._PS_TRANS_PATTERN_.'\'[\)|\,]/U';
|
$regex = '/this->l\(\''._PS_TRANS_PATTERN_.'\'[\)|\,]/U';
|
||||||
else if ($type_file == 'specific')
|
else if ($type_file == 'specific')
|
||||||
$regex = '/translate\(\''._PS_TRANS_PATTERN_.'\'\)/U';
|
$regex = '/Translate::getAdminTranslation\(\''._PS_TRANS_PATTERN_.'\'\)/U';
|
||||||
else
|
else
|
||||||
$regex = '/\{l\s*s\s*=[\'\"]'._PS_TRANS_PATTERN_.'[\'\"](\s*sprintf=.*)?(\s*js=1)?(\s*slashes=1)?\s*\}/U';
|
$regex = '/\{l\s*s\s*=[\'\"]'._PS_TRANS_PATTERN_.'[\'\"](\s*sprintf=.*)?(\s*js=1)?(\s*slashes=1)?\s*\}/U';
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -37,15 +37,8 @@ class ContactControllerCore extends FrontController
|
|||||||
{
|
{
|
||||||
if (Tools::isSubmit('submitMessage'))
|
if (Tools::isSubmit('submitMessage'))
|
||||||
{
|
{
|
||||||
$fileAttachment = null;
|
$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
|
||||||
if (isset($_FILES['fileUpload']['name']) && !empty($_FILES['fileUpload']['name']) && !empty($_FILES['fileUpload']['tmp_name']))
|
$fileAttachment = Tools::fileAttachment('fileUpload');
|
||||||
{
|
|
||||||
$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
|
|
||||||
$filename = uniqid().substr($_FILES['fileUpload']['name'], -5);
|
|
||||||
$fileAttachment['content'] = file_get_contents($_FILES['fileUpload']['tmp_name']);
|
|
||||||
$fileAttachment['name'] = $_FILES['fileUpload']['name'];
|
|
||||||
$fileAttachment['mime'] = $_FILES['fileUpload']['type'];
|
|
||||||
}
|
|
||||||
$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
|
$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
|
||||||
if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from))
|
if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from))
|
||||||
$this->errors[] = Tools::displayError('Invalid email address.');
|
$this->errors[] = Tools::displayError('Invalid email address.');
|
||||||
@@ -55,9 +48,9 @@ class ContactControllerCore extends FrontController
|
|||||||
$this->errors[] = Tools::displayError('Invalid message');
|
$this->errors[] = Tools::displayError('Invalid message');
|
||||||
else if (!($id_contact = (int)(Tools::getValue('id_contact'))) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id))))
|
else if (!($id_contact = (int)(Tools::getValue('id_contact'))) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id))))
|
||||||
$this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
|
$this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
|
||||||
else if (!empty($_FILES['fileUpload']['name']) && $_FILES['fileUpload']['error'] != 0)
|
else if (!empty($fileAttachment['name']) && $fileAttachment['error'] != 0)
|
||||||
$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
|
$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
|
||||||
else if (!empty($_FILES['fileUpload']['name']) && !in_array(substr(Tools::strtolower($_FILES['fileUpload']['name']), -4), $extension) && !in_array(substr(Tools::strtolower($_FILES['fileUpload']['name']), -5), $extension))
|
else if (!empty($fileAttachment['name']) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -4)), $extension) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -5)), $extension))
|
||||||
$this->errors[] = Tools::displayError('Bad file extension');
|
$this->errors[] = Tools::displayError('Bad file extension');
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -152,8 +145,8 @@ class ContactControllerCore extends FrontController
|
|||||||
$cm = new CustomerMessage();
|
$cm = new CustomerMessage();
|
||||||
$cm->id_customer_thread = $ct->id;
|
$cm->id_customer_thread = $ct->id;
|
||||||
$cm->message = Tools::htmlentitiesUTF8($message);
|
$cm->message = Tools::htmlentitiesUTF8($message);
|
||||||
if (isset($filename) && rename($_FILES['fileUpload']['tmp_name'], _PS_MODULE_DIR_.'../upload/'.$filename))
|
if (isset($fileAttachment['rename']) && !empty($fileAttachment['rename']) && rename($fileAttachment['tmp_name'], _PS_MODULE_DIR_.'../upload/'.basename($fileAttachment['rename'])))
|
||||||
$cm->file_name = $filename;
|
$cm->file_name = $fileAttachment['rename'];
|
||||||
$cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']);
|
$cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']);
|
||||||
$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
|
$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
|
||||||
if (!$cm->add())
|
if (!$cm->add())
|
||||||
@@ -173,8 +166,8 @@ class ContactControllerCore extends FrontController
|
|||||||
'{product_name}' => '',
|
'{product_name}' => '',
|
||||||
);
|
);
|
||||||
|
|
||||||
if (isset($filename))
|
if (isset($fileAttachment['name']))
|
||||||
$var_list['{attached_file}'] = $_FILES['fileUpload']['name'];
|
$var_list['{attached_file}'] = $fileAttachment['name'];
|
||||||
|
|
||||||
$id_order = (int)Tools::getValue('id_order');
|
$id_order = (int)Tools::getValue('id_order');
|
||||||
|
|
||||||
@@ -197,10 +190,6 @@ class ContactControllerCore extends FrontController
|
|||||||
$var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
|
$var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (empty($contact->email))
|
if (empty($contact->email))
|
||||||
Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $fileAttachment);
|
Mail::Send($this->context->language->id, 'contact_form', ((isset($ct) && Validate::isLoadedObject($ct)) ? sprintf(Mail::l('Your message has been correctly sent #ct%1$s #tc%2$s'), $ct->id, $ct->token) : Mail::l('Your message has been correctly sent')), $var_list, $from, null, null, null, $fileAttachment);
|
||||||
else
|
else
|
||||||
@@ -296,5 +285,4 @@ class ContactControllerCore extends FrontController
|
|||||||
$this->context->smarty->assign('orderedProductList', $products);
|
$this->context->smarty->assign('orderedProductList', $products);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -113,6 +113,9 @@ class ManufacturerControllerCore extends FrontController
|
|||||||
{
|
{
|
||||||
$data = Manufacturer::getManufacturers(true, $this->context->language->id, true, false, false, false);
|
$data = Manufacturer::getManufacturers(true, $this->context->language->id, true, false, false, false);
|
||||||
$nbProducts = count($data);
|
$nbProducts = count($data);
|
||||||
|
$this->n = abs((int)(Tools::getValue('n', Configuration::get('PS_PRODUCTS_PER_PAGE'))));
|
||||||
|
$this->p = abs((int)(Tools::getValue('p', 1)));
|
||||||
|
$data = Manufacturer::getManufacturers(true, $this->context->language->id, true, $this->p, $this->n, false);
|
||||||
$this->pagination($nbProducts);
|
$this->pagination($nbProducts);
|
||||||
|
|
||||||
foreach ($data as &$item)
|
foreach ($data as &$item)
|
||||||
@@ -129,4 +132,4 @@ class ManufacturerControllerCore extends FrontController
|
|||||||
else
|
else
|
||||||
$this->context->smarty->assign('nbManufacturers', 0);
|
$this->context->smarty->assign('nbManufacturers', 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -158,7 +158,7 @@ class ProductControllerCore extends FrontController
|
|||||||
$this->category = new Category($regs[5], (int)$this->context->cookie->id_lang);
|
$this->category = new Category($regs[5], (int)$this->context->cookie->id_lang);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
if ( ! isset($this->category))
|
||||||
// Set default product category
|
// Set default product category
|
||||||
$this->category = new Category($this->product->id_category_default, (int)$this->context->cookie->id_lang);
|
$this->category = new Category($this->product->id_category_default, (int)$this->context->cookie->id_lang);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -567,6 +567,12 @@ select optgroup option {
|
|||||||
background: url(../img/admin/warning.gif) no-repeat 0 0;
|
background: url(../img/admin/warning.gif) no-repeat 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#blockNewVersionCheck .warn h3 {
|
||||||
|
padding: 0 0 0 5px;
|
||||||
|
margin: 0px;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
#content .error h3 {
|
#content .error h3 {
|
||||||
padding: 0 0 0 20px;
|
padding: 0 0 0 20px;
|
||||||
background: url(../img/admin/warning.gif) no-repeat 0 0;
|
background: url(../img/admin/warning.gif) no-repeat 0 0;
|
||||||
|
|||||||
@@ -86,7 +86,7 @@
|
|||||||
<name>displayCustomerAccount</name><title>Customer account displayed in Front Office</title><description>This hook displays new elements on the customer account page</description>
|
<name>displayCustomerAccount</name><title>Customer account displayed in Front Office</title><description>This hook displays new elements on the customer account page</description>
|
||||||
</hook>
|
</hook>
|
||||||
<hook id="actionOrderSlipAdd" live_edit="0">
|
<hook id="actionOrderSlipAdd" live_edit="0">
|
||||||
<name>actionOrderSlipAdd</name><title>Order slip creation</title><description>This hook is called when a product's quantity is modified</description>
|
<name>actionOrderSlipAdd</name><title>Order slip creation</title><description>This hook is called when a new credit slip is added regarding client order</description>
|
||||||
</hook>
|
</hook>
|
||||||
<hook id="displayProductTab" live_edit="0">
|
<hook id="displayProductTab" live_edit="0">
|
||||||
<name>displayProductTab</name><title>Tabs on product page</title><description>This hook is called on the product page's tab</description>
|
<name>displayProductTab</name><title>Tabs on product page</title><description>This hook is called on the product page's tab</description>
|
||||||
|
|||||||
@@ -24,3 +24,5 @@ ALTER TABLE `PREFIX_log` ADD `id_employee` INT(10) UNSIGNED NULL AFTER `object_i
|
|||||||
|
|
||||||
SET @id_parent = (SELECT IFNULL(id_tab, 1) FROM `PREFIX_tab` WHERE `class_name` = 'AdminPriceRule' LIMIT 1);
|
SET @id_parent = (SELECT IFNULL(id_tab, 1) FROM `PREFIX_tab` WHERE `class_name` = 'AdminPriceRule' LIMIT 1);
|
||||||
UPDATE `PREFIX_tab` SET id_parent = @id_parent WHERE `id_parent` = 1 AND `class_name` = 'AdminMarketing' LIMIT 1;
|
UPDATE `PREFIX_tab` SET id_parent = @id_parent WHERE `id_parent` = 1 AND `class_name` = 'AdminMarketing' LIMIT 1;
|
||||||
|
|
||||||
|
UPDATE `PREFIX_hook` SET `description` = 'This hook is called when a new credit slip is added regarding client order' WHERE `name` = 'actionOrderSlipAdd';
|
||||||
@@ -40,10 +40,6 @@
|
|||||||
|
|
||||||
// if backspace is hit with no input, remove the last tag
|
// if backspace is hit with no input, remove the last tag
|
||||||
if (pressed == 8) { // backspace
|
if (pressed == 8) { // backspace
|
||||||
if ( $this.val() == "" ) {
|
|
||||||
self.remove();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -20,7 +20,11 @@
|
|||||||
<td> </td>
|
<td> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td align="left">Customer e-mail address: <a href="mailto:{email}"><strong>{email}</strong></a> <br /><br /> Customer message: {message}</td>
|
<td align="left">Customer e-mail address: <a href="mailto:{email}"><strong>{email}</strong></a>
|
||||||
|
<br /><br />Customer message: {message}
|
||||||
|
<br /><br /> Order ID : {order_name}
|
||||||
|
<br /><br />Attached file : {attached_file}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
|
|||||||
@@ -8,4 +8,8 @@ Customer message:
|
|||||||
|
|
||||||
{message}
|
{message}
|
||||||
|
|
||||||
|
Order reference : {order_name}
|
||||||
|
|
||||||
|
Attached file : {attached_file}
|
||||||
|
|
||||||
{shop_url} powered by PrestaShop™
|
{shop_url} powered by PrestaShop™
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
<module>
|
<module>
|
||||||
<name>blockmyaccountfooter</name>
|
<name>blockmyaccountfooter</name>
|
||||||
<displayName><![CDATA[My account block for your website's footer]]></displayName>
|
<displayName><![CDATA[My account block for your website's footer]]></displayName>
|
||||||
<version><![CDATA[1.2]]></version>
|
<version><![CDATA[1.3]]></version>
|
||||||
<description><![CDATA[Displays a block with links relative to user accounts.]]></description>
|
<description><![CDATA[Displays a block with links relative to user accounts.]]></description>
|
||||||
<author><![CDATA[PrestaShop]]></author>
|
<author><![CDATA[PrestaShop]]></author>
|
||||||
<tab><![CDATA[front_office_features]]></tab>
|
<tab><![CDATA[front_office_features]]></tab>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<module>
|
<module>
|
||||||
<name>cheque</name>
|
<name>cheque</name>
|
||||||
<displayName><![CDATA[Payments by check]]></displayName>
|
<displayName><![CDATA[Payment by check]]></displayName>
|
||||||
<version><![CDATA[2.3]]></version>
|
<version><![CDATA[2.3]]></version>
|
||||||
<description><![CDATA[This module allows you to accept payments by check.]]></description>
|
<description><![CDATA[This module allows you to accept payments by check.]]></description>
|
||||||
<author><![CDATA[PrestaShop]]></author>
|
<author><![CDATA[PrestaShop]]></author>
|
||||||
|
|||||||
@@ -89,6 +89,7 @@ class LoyaltyDefaultModuleFrontController extends ModuleFrontController
|
|||||||
$cart_rule->date_to = date('Y-m-d H:i:s', strtotime($cart_rule->date_from.' +1 year'));
|
$cart_rule->date_to = date('Y-m-d H:i:s', strtotime($cart_rule->date_from.' +1 year'));
|
||||||
|
|
||||||
$cart_rule->minimum_amount = (float)Configuration::get('PS_LOYALTY_MINIMAL');
|
$cart_rule->minimum_amount = (float)Configuration::get('PS_LOYALTY_MINIMAL');
|
||||||
|
$cart_rule->minimum_amount_currency = (int)$this->context->currency->id;
|
||||||
$cart_rule->active = 1;
|
$cart_rule->active = 1;
|
||||||
|
|
||||||
$categories = Configuration::get('PS_LOYALTY_VOUCHER_CATEGORY');
|
$categories = Configuration::get('PS_LOYALTY_VOUCHER_CATEGORY');
|
||||||
|
|||||||
@@ -540,8 +540,7 @@ class MailAlerts extends Module
|
|||||||
$coverage = StockManagerFactory::getManager()->getProductCoverage($id_product, $id_product_attribute, $warning_coverage, $id_warehouse);
|
$coverage = StockManagerFactory::getManager()->getProductCoverage($id_product, $id_product_attribute, $warning_coverage, $id_warehouse);
|
||||||
|
|
||||||
// if we need to send a notification
|
// if we need to send a notification
|
||||||
if ($product->active == 1 &&
|
if ($product->active == 1 && $coverage !== -1 && ($coverage < $warning_coverage) && !empty($this->_merchant_mails) &&
|
||||||
($coverage < $warning_coverage) && !empty($this->_merchant_mails) &&
|
|
||||||
Configuration::getGlobalValue('MA_MERCHANT_COVERAGE'))
|
Configuration::getGlobalValue('MA_MERCHANT_COVERAGE'))
|
||||||
{
|
{
|
||||||
$id_lang = (int)Context::getContext()->language->id;
|
$id_lang = (int)Context::getContext()->language->id;
|
||||||
|
|||||||
@@ -131,6 +131,31 @@ class PSCleaner extends Module
|
|||||||
$db = Db::getInstance();
|
$db = Db::getInstance();
|
||||||
$logs = array();
|
$logs = array();
|
||||||
|
|
||||||
|
// Remove doubles in the configuration
|
||||||
|
$filtered_configuration = array();
|
||||||
|
$result = $db->ExecuteS('SELECT * FROM '._DB_PREFIX_.'configuration');
|
||||||
|
foreach ($result as $row)
|
||||||
|
{
|
||||||
|
$key = $row['id_shop_group'].'-|-'.$row['id_shop'].'-|-'.$row['name'];
|
||||||
|
if (in_array($key, $filtered_configuration))
|
||||||
|
{
|
||||||
|
$query = 'DELETE FROM '._DB_PREFIX_.'configuration WHERE id_configuration = '.(int)$row['id_configuration'];
|
||||||
|
$db->Execute($query);
|
||||||
|
$logs[$query] = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$filtered_configuration[] = $key;
|
||||||
|
}
|
||||||
|
unset($filtered_configuration);
|
||||||
|
|
||||||
|
// Remove inexisting or monolanguage configuration value from configuration_lang
|
||||||
|
$query = 'DELETE FROM `'._DB_PREFIX_.'configuration_lang`
|
||||||
|
WHERE `id_configuration` NOT IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration`)
|
||||||
|
OR `id_configuration` IN (SELECT `id_configuration` FROM `'._DB_PREFIX_.'configuration` WHERE name IS NOT NULL AND name != "")';
|
||||||
|
if ($db->Execute($query))
|
||||||
|
if ($affected_rows = $db->Affected_Rows())
|
||||||
|
$logs[$query] = $affected_rows;
|
||||||
|
|
||||||
// Simple Cascade Delete
|
// Simple Cascade Delete
|
||||||
$queries = array(
|
$queries = array(
|
||||||
// 0 => DELETE FROM __table__, 1 => WHERE __id__ NOT IN, 2 => NOT IN __table__, 3 => __id__ used in the "NOT IN" table, 4 => module_name
|
// 0 => DELETE FROM __table__, 1 => WHERE __id__ NOT IN, 2 => NOT IN __table__, 3 => __id__ used in the "NOT IN" table, 4 => module_name
|
||||||
@@ -347,6 +372,7 @@ class PSCleaner extends Module
|
|||||||
|
|
||||||
// @Todo: Remove attachment files, images...
|
// @Todo: Remove attachment files, images...
|
||||||
Image::clearTmpDir();
|
Image::clearTmpDir();
|
||||||
|
$this->clearAllCaches();
|
||||||
|
|
||||||
return $logs;
|
return $logs;
|
||||||
}
|
}
|
||||||
@@ -534,6 +560,9 @@ class PSCleaner extends Module
|
|||||||
|
|
||||||
protected function clearAllCaches()
|
protected function clearAllCaches()
|
||||||
{
|
{
|
||||||
|
$index = file_get_contents(_PS_TMP_IMG_DIR_.'index.php');
|
||||||
|
Tools::deleteDirectory(_PS_TMP_IMG_DIR_, false);
|
||||||
|
file_put_contents(_PS_TMP_IMG_DIR_.'index.php', $index);
|
||||||
Context::getContext()->smarty->clearAllCache();
|
Context::getContext()->smarty->clearAllCache();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -649,8 +649,7 @@ class ReferralProgram extends Module
|
|||||||
{
|
{
|
||||||
$cartRule = new CartRule((int)$referralprogram->id_cart_rule_sponsor);
|
$cartRule = new CartRule((int)$referralprogram->id_cart_rule_sponsor);
|
||||||
$currency = new Currency((int)$order->id_currency);
|
$currency = new Currency((int)$order->id_currency);
|
||||||
$discount_display = ReferralProgram::displayDiscount($cartRule->reduction_percent ? $cartRule->reduction_percent : $cartRule->reduction_amount, $cartRule->reduction_percent ? 1 : 2, $currency);
|
$discount_display = ReferralProgram::displayDiscount( (float) $cartRule->reduction_percent ? (float) $cartRule->reduction_percent : (int) $cartRule->reduction_amount, (float) $cartRule->reduction_percent ? 1 : 2, $currency); $data = array('{sponsored_firstname}' => $customer->firstname, '{sponsored_lastname}' => $customer->lastname, '{discount_display}' => $discount_display, '{discount_name}' => $cartRule->code);
|
||||||
$data = array('{sponsored_firstname}' => $customer->firstname, '{sponsored_lastname}' => $customer->lastname, '{discount_display}' => $discount_display, '{discount_name}' => $cartRule->code);
|
|
||||||
Mail::Send((int)$order->id_lang, 'referralprogram-congratulations', Mail::l('Congratulations!', (int)$order->id_lang), $data, $sponsor->email, $sponsor->firstname.' '.$sponsor->lastname, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), NULL, NULL, dirname(__FILE__).'/mails/');
|
Mail::Send((int)$order->id_lang, 'referralprogram-congratulations', Mail::l('Congratulations!', (int)$order->id_lang), $data, $sponsor->email, $sponsor->firstname.' '.$sponsor->lastname, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), NULL, NULL, dirname(__FILE__).'/mails/');
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -470,7 +470,7 @@ class StatsForecast extends Module
|
|||||||
$where = ' AND co.id_zone = '.(int)$this->context->cookie->stats_id_zone.' ';
|
$where = ' AND co.id_zone = '.(int)$this->context->cookie->stats_id_zone.' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = 'SELECT SUM(od.`product_price` * od.`product_quantity` / o.conversion_rate) as orderSum, COUNT(*) AS orderQty, cl.name, AVG(od.`product_price` / o.conversion_rate) as priveAvg
|
$sql = 'SELECT SUM(od.`product_price` * od.`product_quantity` / o.conversion_rate) as orderSum, SUM(od.product_quantity) as orderQty, cl.name, AVG(od.`product_price` / o.conversion_rate) as priveAvg
|
||||||
FROM `'._DB_PREFIX_.'orders` o
|
FROM `'._DB_PREFIX_.'orders` o
|
||||||
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
|
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
|
||||||
LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = od.product_id
|
LEFT JOIN `'._DB_PREFIX_.'product` p ON p.id_product = od.product_id
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
Hello,
|
||||||
|
|
||||||
|
Please read the documentation before trying to override something here.
|
||||||
|
http://doc.prestashop.com/display/PS15/Overriding+default+behaviors
|
||||||
|
|
||||||
|
Frequently Asked Questions
|
||||||
|
|
||||||
|
Q: I added an override file but it seems to be ignored by PrestaShop
|
||||||
|
A: You need to trigger the regeneration of the /cache/class_index.php file. This is done simply by deleting the file. It is the same when manually removing an override: in order to reinstate the default behavior, you must delete the /cache/class_index.php file.
|
||||||
@@ -89,8 +89,8 @@
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
</select>
|
</select>
|
||||||
{elseif !isset($customerThread.id_order) && !isset($isLogged)}
|
{elseif !isset($customerThread.id_order) && !isset($isLogged)}
|
||||||
<input type="text" name="id_order" id="id_order" value="{if isset($customerThread.id_order) && $customerThread.id_order > 0}{$customerThread.id_order|intval}{else}{if isset($smarty.post.id_order)}{$smarty.post.id_order|intval}{/if}{/if}" />
|
<input type="text" name="id_order" id="id_order" value="{if isset($customerThread.id_order) && $customerThread.id_order|intval > 0}{$customerThread.id_order|intval}{else}{if isset($smarty.post.id_order) && !empty($smarty.post.id_order)}{$smarty.post.id_order|intval}{/if}{/if}" />
|
||||||
{elseif $customerThread.id_order > 0}
|
{elseif $customerThread.id_order|intval > 0}
|
||||||
<input type="text" name="id_order" id="id_order" value="{$customerThread.id_order|intval}" readonly="readonly" />
|
<input type="text" name="id_order" id="id_order" value="{$customerThread.id_order|intval}" readonly="readonly" />
|
||||||
{/if}
|
{/if}
|
||||||
</p>
|
</p>
|
||||||
|
|||||||
@@ -53,42 +53,42 @@
|
|||||||
<ul class="pagination">
|
<ul class="pagination">
|
||||||
{if $p != 1}
|
{if $p != 1}
|
||||||
{assign var='p_previous' value=$p-1}
|
{assign var='p_previous' value=$p-1}
|
||||||
<li id="pagination_previous"><a {$no_follow_text} href="{$link->goPage($requestPage, $p_previous)|escape:'html'}">« {l s='Previous'}</a></li>
|
<li id="pagination_previous"><a {$no_follow_text} href="{$link->goPage($requestPage, $p_previous)}">« {l s='Previous'}</a></li>
|
||||||
{else}
|
{else}
|
||||||
<li id="pagination_previous" class="disabled"><span>« {l s='Previous'}</span></li>
|
<li id="pagination_previous" class="disabled"><span>« {l s='Previous'}</span></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $start==3}
|
{if $start==3}
|
||||||
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)|escape:'html'}">1</a></li>
|
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)}">1</a></li>
|
||||||
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 2)|escape:'html'}">2</a></li>
|
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 2)}">2</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $start==2}
|
{if $start==2}
|
||||||
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)|escape:'html'}">1</a></li>
|
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)}">1</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $start>3}
|
{if $start>3}
|
||||||
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)|escape:'html'}">1</a></li>
|
<li><a {$no_follow_text} href="{$link->goPage($requestPage, 1)}">1</a></li>
|
||||||
<li class="truncate">...</li>
|
<li class="truncate">...</li>
|
||||||
{/if}
|
{/if}
|
||||||
{section name=pagination start=$start loop=$stop+1 step=1}
|
{section name=pagination start=$start loop=$stop+1 step=1}
|
||||||
{if $p == $smarty.section.pagination.index}
|
{if $p == $smarty.section.pagination.index}
|
||||||
<li class="current"><span>{$p|escape:'htmlall':'UTF-8'}</span></li>
|
<li class="current"><span>{$p|escape:'htmlall':'UTF-8'}</span></li>
|
||||||
{else}
|
{else}
|
||||||
<li><a {$no_follow_text} href="{$link->goPage($requestPage, $smarty.section.pagination.index)|escape:'html'}">{$smarty.section.pagination.index|escape:'htmlall':'UTF-8'}</a></li>
|
<li><a {$no_follow_text} href="{$link->goPage($requestPage, $smarty.section.pagination.index)}">{$smarty.section.pagination.index|escape:'htmlall':'UTF-8'}</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{/section}
|
{/section}
|
||||||
{if $pages_nb>$stop+2}
|
{if $pages_nb>$stop+2}
|
||||||
<li class="truncate">...</li>
|
<li class="truncate">...</li>
|
||||||
<li><a href="{$link->goPage($requestPage, $pages_nb)|escape:'html'}">{$pages_nb|intval}</a></li>
|
<li><a href="{$link->goPage($requestPage, $pages_nb)}">{$pages_nb|intval}</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $pages_nb==$stop+1}
|
{if $pages_nb==$stop+1}
|
||||||
<li><a href="{$link->goPage($requestPage, $pages_nb)|escape:'html'}">{$pages_nb|intval}</a></li>
|
<li><a href="{$link->goPage($requestPage, $pages_nb)}">{$pages_nb|intval}</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $pages_nb==$stop+2}
|
{if $pages_nb==$stop+2}
|
||||||
<li><a href="{$link->goPage($requestPage, $pages_nb-1)|escape:'html'}">{$pages_nb-1|intval}</a></li>
|
<li><a href="{$link->goPage($requestPage, $pages_nb-1)}">{$pages_nb-1|intval}</a></li>
|
||||||
<li><a href="{$link->goPage($requestPage, $pages_nb)|escape:'html'}">{$pages_nb|intval}</a></li>
|
<li><a href="{$link->goPage($requestPage, $pages_nb)}">{$pages_nb|intval}</a></li>
|
||||||
{/if}
|
{/if}
|
||||||
{if $pages_nb > 1 AND $p != $pages_nb}
|
{if $pages_nb > 1 AND $p != $pages_nb}
|
||||||
{assign var='p_next' value=$p+1}
|
{assign var='p_next' value=$p+1}
|
||||||
<li id="pagination_next"><a {$no_follow_text} href="{$link->goPage($requestPage, $p_next)|escape:'html'}">{l s='Next'} »</a></li>
|
<li id="pagination_next"><a {$no_follow_text} href="{$link->goPage($requestPage, $p_next)}">{l s='Next'} »</a></li>
|
||||||
{else}
|
{else}
|
||||||
<li id="pagination_next" class="disabled"><span>{l s='Next'} »</span></li>
|
<li id="pagination_next" class="disabled"><span>{l s='Next'} »</span></li>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
Reference in New Issue
Block a user