Merge branch 'development' of https://github.com/PrestaShop/PrestaShop into development

This commit is contained in:
Fabio Chelly committed 2013-09-06 09:24:43 +02:00
commit 7e1c0d5a24
42 files changed
+243 -112

No files matched your search

+2 -1
View File
@@ -30,6 +30,7 @@ select[disabled="disabled"], input[disabled="disabled"],textarea[disabled="disab
/*BUTTON*/ /*BUTTON*/
.button{ .button{
cursor: pointer;
background: #e3e3e3 url('../img/bg-button-degrade.png') repeat-x scroll left top; background: #e3e3e3 url('../img/bg-button-degrade.png') repeat-x scroll left top;
background: -moz-linear-gradient(center top , #F9F9F9, #E3E3E3) repeat scroll 0 0 transparent; background: -moz-linear-gradient(center top , #F9F9F9, #E3E3E3) repeat scroll 0 0 transparent;
background: -webkit-gradient(linear, center top ,center bottom, from(#F9F9F9), to(#E3E3E3)) repeat scroll 0 0 transparent; background: -webkit-gradient(linear, center top ,center bottom, from(#F9F9F9), to(#E3E3E3)) repeat scroll 0 0 transparent;
@@ -673,4 +674,4 @@ ul.listForm li {padding-bottom:3px;}
/************** SCENE *****************/ /************** SCENE *****************/
#large_scene_image{clear:both;border:1px solid transparent;} #large_scene_image{clear:both;border:1px solid transparent;}
@@ -24,9 +24,9 @@
*} *}
<div class="width4"> <div class="width4">
{$localization_form} {if isset($localization_form)}{$localization_form}{/if}
</div> </div>
<br /> <br />
<div class="width4"> <div class="width4">
{$localization_options} {if isset($localization_options)}{$localization_options}{/if}
</div> </div>
@@ -30,9 +30,9 @@
function ajaxStoreStates(id_state_selected) function ajaxStoreStates(id_state_selected)
{ {
$.ajax({ $.ajax({
url: "ajax.php", url: "index.php",
cache: false, cache: false,
data: "ajaxStates=1&id_country="+$('#PS_SHOP_COUNTRY_ID').val() + "&id_state=" + $('#PS_SHOP_STATE_ID').val(), data: "ajax=1&tab=AdminStates&token={getAdminToken tab='AdminStates'}&action=states&id_country="+$('#PS_SHOP_COUNTRY_ID').val() + "&id_state=" + $('#PS_SHOP_STATE_ID').val(),
success: function(html) success: function(html)
{ {
if (html == 'false') if (html == 'false')
@@ -62,7 +62,7 @@
$.ajax({ $.ajax({
url: "index.php", url: "index.php",
cache: false, cache: false,
data: "ajax=1&tab=AdminTaxRulesGroup&token={getAdminToken tab='AdminStates'}&action=states&id_country="+id_country+"&id_state="+id_state+"&empty_value={l s='All'}", data: "ajax=1&tab=AdminStates&token={getAdminToken tab='AdminStates'}&action=states&id_country="+id_country+"&id_state="+id_state+"&empty_value={l s='All'}",
success: function(html){ success: function(html){
if (html == "false") if (html == "false")
{ {
+1 -1
View File
@@ -139,7 +139,7 @@ class Autoload
$filename_tmp = tempnam(dirname($filename), basename($filename.'.')); $filename_tmp = tempnam(dirname($filename), basename($filename.'.'));
if($filename_tmp !== FALSE and file_put_contents($filename_tmp, $content, LOCK_EX) !== FALSE) if($filename_tmp !== FALSE and file_put_contents($filename_tmp, $content, LOCK_EX) !== FALSE)
{ {
rename($filename_tmp, $filename); @rename($filename_tmp, $filename);
@chmod($filename, 0664); @chmod($filename, 0664);
} }
else else
+13 -7
View File
@@ -120,16 +120,22 @@ class ImageCore extends ObjectModel
* *
* @param integer $id_lang Language ID * @param integer $id_lang Language ID
* @param integer $id_product Product ID * @param integer $id_product Product ID
* @param integer $id_product_attribute Product Attribute ID
* @return array Images * @return array Images
*/ */
public static function getImages($id_lang, $id_product) public static function getImages($id_lang, $id_product, $id_product_attribute = NULL)
{ {
return Db::getInstance()->executeS(' $attribute_filter = ($id_product_attribute ? ' AND ai.`id_product_attribute` = '.(int)$id_product_attribute : '');
SELECT * $sql = 'SELECT *
FROM `'._DB_PREFIX_.'image` i FROM `'._DB_PREFIX_.'image` i
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image`) LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image`)';
WHERE i.`id_product` = '.(int)$id_product.' AND il.`id_lang` = '.(int)$id_lang.'
ORDER BY i.`position` ASC'); if ($id_product_attribute)
$sql .= ' LEFT JOIN `'._DB_PREFIX_.'product_attribute_image` ai ON (i.`id_image` = ai.`id_image`)';
$sql .= ' WHERE i.`id_product` = '.(int)$id_product.' AND il.`id_lang` = '.(int)$id_lang . $attribute_filter.'
ORDER BY i.`position` ASC';
return Db::getInstance()->executeS($sql);
} }
/** /**
+19 -5
View File
@@ -111,18 +111,22 @@ class LanguageCore extends ObjectModel
$iso_code = $newIso ? $newIso : $this->iso_code; $iso_code = $newIso ? $newIso : $this->iso_code;
if (!file_exists(_PS_TRANSLATIONS_DIR_.$iso_code)) if (!file_exists(_PS_TRANSLATIONS_DIR_.$iso_code))
mkdir(_PS_TRANSLATIONS_DIR_.$iso_code); {
if (@mkdir(_PS_TRANSLATIONS_DIR_.$iso_code))
@chmod(_PS_TRANSLATIONS_DIR_.$iso_code, 0777);
}
foreach ($this->translationsFilesAndVars as $file => $var) foreach ($this->translationsFilesAndVars as $file => $var)
{ {
$path_file = _PS_TRANSLATIONS_DIR_.$iso_code.'/'.$file.'.php'; $path_file = _PS_TRANSLATIONS_DIR_.$iso_code.'/'.$file.'.php';
if (!file_exists($path_file)) if (!file_exists($path_file))
if ($file != 'tabs') if ($file != 'tabs')
file_put_contents($path_file, '<?php @file_put_contents($path_file, '<?php
global $'.$var.'; global $'.$var.';
$'.$var.' = array(); $'.$var.' = array();
?>'); ?>');
else else
file_put_contents($path_file, '<?php @file_put_contents($path_file, '<?php
$'.$var.' = array(); $'.$var.' = array();
return $'.$var.'; return $'.$var.';
?>'); ?>');
@@ -460,7 +464,8 @@ class LanguageCore extends ObjectModel
} }
closedir($handle); closedir($handle);
} }
rmdir($dir); if (is_writable($dir))
rmdir($dir);
} }
public function delete() public function delete()
@@ -783,13 +788,22 @@ class LanguageCore extends ObjectModel
$lang_pack_ok = false; $lang_pack_ok = false;
$errors = array(); $errors = array();
$file = _PS_TRANSLATIONS_DIR_.$iso.'.gzip'; $file = _PS_TRANSLATIONS_DIR_.$iso.'.gzip';
if (!$lang_pack_link = Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/get_language_pack.php?version='.$version.'&iso_lang='.Tools::strtolower($iso))) if (!$lang_pack_link = Tools::file_get_contents('http://www.prestashop.com/download/lang_packs/get_language_pack.php?version='.$version.'&iso_lang='.Tools::strtolower($iso)))
$errors[] = Tools::displayError('Archive cannot be downloaded from prestashop.com.'); $errors[] = Tools::displayError('Archive cannot be downloaded from prestashop.com.');
elseif (!$lang_pack = Tools::jsonDecode($lang_pack_link)) elseif (!$lang_pack = Tools::jsonDecode($lang_pack_link))
$errors[] = Tools::displayError('Error occurred when language was checked according to your Prestashop version.'); $errors[] = Tools::displayError('Error occurred when language was checked according to your Prestashop version.');
elseif ($content = Tools::file_get_contents('http://translations.prestashop.com/download/lang_packs/gzip/'.$lang_pack->version.'/'.Tools::strtolower($lang_pack->iso_code.'.gzip'))) elseif ($content = Tools::file_get_contents('http://translations.prestashop.com/download/lang_packs/gzip/'.$lang_pack->version.'/'.Tools::strtolower($lang_pack->iso_code.'.gzip')))
if (!@file_put_contents($file, $content)) if (!@file_put_contents($file, $content))
$errors[] = Tools::displayError('Server does not have permissions for writing.'); {
if (is_writable(dirname($file)))
{
@unlink($file);
@file_put_contents($file, $content);
}
elseif (!is_writable($file))
$errors[] = Tools::displayError('Server does not have permissions for writing.').' ('.$file.')';
}
if (file_exists($file)) if (file_exists($file))
{ {
$gz = new Archive_Tar($file, true); $gz = new Archive_Tar($file, true);
+5
View File
@@ -149,6 +149,11 @@ class LoggerCore extends ObjectModel
return $this->hash; return $this->hash;
} }
public static function eraseAllLogs()
{
return Db::getInstance()->execute('TRUNCATE TABLE '._DB_PREFIX_.'log');
}
/** /**
* check if this log message already exists in database. * check if this log message already exists in database.
+1 -1
View File
@@ -79,7 +79,7 @@ class ManufacturerCore extends ObjectModel
// Lang fields // Lang fields
'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'), 'description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml'),
'short_description' => array('type' => self::TYPE_HTML, 'lang' => true, 'validate' => 'isCleanHtml', 'size' => 254), 'short_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'), 'meta_keywords' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName'),
+1 -1
View File
@@ -2914,7 +2914,7 @@ class ProductCore extends ObjectModel
* @param Shop $shop * @param Shop $shop
* @return string * @return string
*/ */
public static function sqlStock($product_alias, $product_attribute = 0, $inner_join = false, Shop $shop = null) public static function sqlStock($product_alias, $product_attribute = null, $inner_join = false, Shop $shop = null)
{ {
$id_shop = ($shop !== null ? (int)$shop->id : null); $id_shop = ($shop !== null ? (int)$shop->id : null);
$sql = (($inner_join) ? ' INNER ' : ' LEFT ').' $sql = (($inner_join) ? ' INNER ' : ' LEFT ').'
+1 -1
View File
@@ -72,7 +72,7 @@ class SupplierCore extends ObjectModel
'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'),
// Lang fields // Lang fields
'description' => array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isGenericName'), '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),
+5 -2
View File
@@ -34,9 +34,12 @@ class CacheApcCore extends Cache
public function __construct() public function __construct()
{ {
$this->keys = array(); $this->keys = array();
$cache_info = apc_cache_info('user'); $cache_info = apc_cache_info((extension_loaded('apcu') === true )? '' : 'user' );
foreach ($cache_info['cache_list'] as $entry) foreach ($cache_info['cache_list'] as $entry)
$this->keys[$entry['info']] = $entry['ttl']; if ( extension_loaded('apcu') === true )
$this->keys[$entry['key']] = $entry['ttl'];
else
$this->keys[$entry['info']] = $entry['ttl'];
} }
/** /**
+1 -1
View File
@@ -49,7 +49,7 @@ class CacheMemcacheCore extends Cache
if(is_array($servers) && count($servers) > 0) if(is_array($servers) && count($servers) > 0)
{ {
$this->keys = $this->memcache->get(_COOKIE_IV_); $this->keys = @$this->memcache->get(_COOKIE_IV_);
if (!is_array($this->keys)) if (!is_array($this->keys))
$this->keys = array(); $this->keys = array();
} }
+9 -2
View File
@@ -726,6 +726,8 @@ class AdminControllerCore extends Controller
*/ */
public function processAdd() public function processAdd()
{ {
if (!isset($this->className) || empty($this->className))
return false;
/* Checking fields validity */ /* Checking fields validity */
$this->validateRules(); $this->validateRules();
if (count($this->errors) <= 0) if (count($this->errors) <= 0)
@@ -1142,6 +1144,8 @@ class AdminControllerCore extends Controller
*/ */
protected function loadObject($opt = false) protected function loadObject($opt = false)
{ {
if (!isset($this->className) || empty($this->className))
return true;
$id = (int)Tools::getValue($this->identifier); $id = (int)Tools::getValue($this->identifier);
if ($id && Validate::isUnsignedId($id)) if ($id && Validate::isUnsignedId($id))
{ {
@@ -1540,10 +1544,13 @@ class AdminControllerCore extends Controller
file_put_contents(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, Tools::addonsRequest('native')); file_put_contents(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST, Tools::addonsRequest('native'));
$country_module_list_xml = simplexml_load_file(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST); $country_module_list_xml = simplexml_load_file(_PS_ROOT_DIR_.Module::CACHE_FILE_DEFAULT_COUNTRY_MODULES_LIST);
if($country_module_list_xml === TRUE)
{
$country_module_list = array(); $country_module_list = array();
foreach ($country_module_list_xml->module as $k => $m) foreach ($country_module_list_xml->module as $k => $m)
$country_module_list[] = (string)$m->name; $country_module_list[] = (string)$m->name;
$this->tab_modules_list['slider_list'] = array_intersect($this->tab_modules_list['slider_list'], $country_module_list); $this->tab_modules_list['slider_list'] = array_intersect($this->tab_modules_list['slider_list'], $country_module_list);
}
if (is_array($this->tab_modules_list['slider_list']) && count($this->tab_modules_list['slider_list'])) if (is_array($this->tab_modules_list['slider_list']) && count($this->tab_modules_list['slider_list']))
$this->toolbar_btn['modules-list'] = array( $this->toolbar_btn['modules-list'] = array(
@@ -2400,7 +2407,7 @@ class AdminControllerCore extends Controller
public function getFieldValue($obj, $key, $id_lang = null) public function getFieldValue($obj, $key, $id_lang = null)
{ {
if ($id_lang) if ($id_lang)
$default_value = ($obj->id && isset($obj->{$key}[$id_lang])) ? $obj->{$key}[$id_lang] : false; $default_value = (isset($obj->id) && $obj->id && isset($obj->{$key}[$id_lang])) ? $obj->{$key}[$id_lang] : false;
else else
$default_value = isset($obj->{$key}) ? $obj->{$key} : false; $default_value = isset($obj->{$key}) ? $obj->{$key} : false;
+9 -1
View File
@@ -1726,7 +1726,15 @@ abstract class ModuleCore
<need_instance>'.(int)$this->need_instance.'</need_instance>'.(isset($this->limited_countries) ? "\n\t".'<limited_countries>'.(count($this->limited_countries) == 1 ? $this->limited_countries[0] : '').'</limited_countries>' : '').' <need_instance>'.(int)$this->need_instance.'</need_instance>'.(isset($this->limited_countries) ? "\n\t".'<limited_countries>'.(count($this->limited_countries) == 1 ? $this->limited_countries[0] : '').'</limited_countries>' : '').'
</module>'; </module>';
if (is_writable(_PS_MODULE_DIR_.$this->name.'/')) if (is_writable(_PS_MODULE_DIR_.$this->name.'/'))
file_put_contents(_PS_MODULE_DIR_.$this->name.'/config.xml', $xml); {
$file = _PS_MODULE_DIR_.$this->name.'/config.xml';
if (!@file_put_contents($file, $xml))
if (!is_writable($file))
{
@unlink($file);
@file_put_contents($file, $xml);
}
}
} }
/** /**
+1 -2
View File
@@ -712,11 +712,10 @@ class OrderCore extends ObjectModel
} }
public function getCartRules() public function getCartRules()
{ {
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT * SELECT *
FROM `'._DB_PREFIX_.'order_cart_rule` ocr FROM `'._DB_PREFIX_.'order_cart_rule` ocr
LEFT JOIN `'._DB_PREFIX_.'cart_rule` cr ON cr.`id_cart_rule` = ocr.`id_cart_rule`
WHERE ocr.`id_order` = '.(int)$this->id); WHERE ocr.`id_order` = '.(int)$this->id);
} }
+5 -1
View File
@@ -46,6 +46,9 @@ class OrderCartRuleCore extends ObjectModel
/** @var float value (tax excl.) of voucher */ /** @var float value (tax excl.) of voucher */
public $value_tax_excl; public $value_tax_excl;
/** @var boolean value : voucher gives free shipping or not */
public $free_shipping;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -59,7 +62,8 @@ class OrderCartRuleCore extends ObjectModel
'id_order_invoice' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'id_order_invoice' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'),
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml', 'required' => true), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isCleanHtml', 'required' => true),
'value' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true), 'value' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true),
'value_tax_excl' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true) 'value_tax_excl' => array('type' => self::TYPE_FLOAT, 'validate' => 'isFloat', 'required' => true),
'free_shipping' => array('type' => self::TYPE_BOOL, 'validate' => 'isBool')
) )
); );
-13
View File
@@ -129,19 +129,6 @@ class OrderSlipCore extends ObjectModel
{ {
$products[$key] = $product; $products[$key] = $product;
$products[$key]['product_quantity'] = $slip_quantity[$product['id_order_detail']]; $products[$key]['product_quantity'] = $slip_quantity[$product['id_order_detail']];
if (count($cart_rules))
{
$order->setProductPrices($product);
$realProductPrice = $products[$key]['product_price'];
// Todo : must be updated to use the cart rules
foreach ($cart_rules as $cart_rule)
{
if ($cart_rule['reduction_percent'])
$products[$key]['product_price'] -= $realProductPrice * ($cart_rule['reduction_percent'] / 100);
elseif ($cart_rule['reduction_amount'])
$products[$key]['product_price'] -= (($cart_rule['reduction_amount'] * ($product['product_price_wt'] / $order->total_products_wt)) / (1.00 + ($product['tax_rate'] / 100)));
}
}
} }
return $order->getProducts($products); return $order->getProducts($products);
} }
+5 -10
View File
@@ -2435,17 +2435,12 @@ class AdminImportControllerCore extends AdminController
$discount_rate = (float)$info['discount_rate']; $discount_rate = (float)$info['discount_rate'];
$tax_rate = (float)$info['tax_rate']; $tax_rate = (float)$info['tax_rate'];
// checks if one product is there only once // checks if one product/attribute is there only once
if (isset($product['id_product'])) if (isset($products[$id_product][$id_product_attribute]))
{ $this->errors[] = sprintf($this->l('Product/Attribute (%d/%d) cannot be added twice (at line %d).'), $id_product,
if ($product['id_product'] == $id_product_attribute) $id_product_attribute, $current_line + 1);
$this->errors[] = sprintf($this->l('Product (%d/%D) cannot be added twice (at line %d).'), $id_product,
$id_product_attribute, $current_line + 1);
else
$product['id_product'] = $id_product_attribute;
}
else else
$product['id_product'] = 0; $products[$id_product][$id_product_attribute] = $quantity_expected;
// checks parameters // checks parameters
if (false === ($supplier_reference = ProductSupplier::getProductSupplierReference($id_product, $id_product_attribute, $supply_order->id_supplier))) if (false === ($supplier_reference = ProductSupplier::getProductSupplierReference($id_product, $id_product_attribute, $supply_order->id_supplier)))
@@ -28,9 +28,6 @@ class AdminLocalizationControllerCore extends AdminController
{ {
public function __construct() public function __construct()
{ {
$this->className = 'Configuration';
$this->table = 'configuration';
parent::__construct(); parent::__construct();
$this->fields_options = array( $this->fields_options = array(
+10
View File
@@ -64,10 +64,20 @@ class AdminLogsControllerCore extends AdminController
$this->_join .= ' LEFT JOIN '._DB_PREFIX_.'employee e ON (a.id_employee = e.id_employee)'; $this->_join .= ' LEFT JOIN '._DB_PREFIX_.'employee e ON (a.id_employee = e.id_employee)';
parent::__construct(); parent::__construct();
} }
public function processDelete()
{
return Logger::eraseAllLogs();
}
public function initToolbar() public function initToolbar()
{ {
parent::initToolbar(); parent::initToolbar();
$this->toolbar_btn['delete'] = array(
'short' => 'Erase',
'desc' => $this->l('Erase all'),
'js' => 'if (confirm(\''.$this->l('Are you sure?').'\')) document.location = \''.$this->context->link->getAdminLink('AdminLogs').'&amp;token='.$this->token.'&deletelog=1\';'
);
unset($this->toolbar_btn['new']); unset($this->toolbar_btn['new']);
} }
@@ -256,7 +256,7 @@ class AdminManufacturersControllerCore extends AdminController
'lang' => true, 'lang' => true,
'cols' => 60, 'cols' => 60,
'rows' => 10, 'rows' => 10,
'class' => 'rte', 'autoload_rte' => 'rte', //Enable TinyMCE editor for short description
'hint' => $this->l('Invalid characters:').' <>;=#{}' 'hint' => $this->l('Invalid characters:').' <>;=#{}'
), ),
array( array(
@@ -266,7 +266,7 @@ class AdminManufacturersControllerCore extends AdminController
'lang' => true, 'lang' => true,
'cols' => 60, 'cols' => 60,
'rows' => 10, 'rows' => 10,
'class' => 'rte', 'autoload_rte' => 'rte', //Enable TinyMCE editor for description
'hint' => $this->l('Invalid characters:').' <>;=#{}' 'hint' => $this->l('Invalid characters:').' <>;=#{}'
), ),
array( array(
@@ -730,4 +730,4 @@ class AdminManufacturersControllerCore extends AdminController
{ {
return true; return true;
} }
} }
+11 -1
View File
@@ -131,8 +131,13 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor
$modules = $this->getModules(); $modules = $this->getModules();
$module_instance = array(); $module_instance = array();
foreach ($modules as $module) foreach ($modules as $m => $module)
{
$module_instance[$module['name']] = Module::getInstanceByName($module['name']); $module_instance[$module['name']] = Module::getInstanceByName($module['name']);
$modules[$m]['displayName'] = $module_instance[$module['name']]->displayName;
}
uasort($modules, array($this, 'checkModulesNames'));
$tpl->assign(array( $tpl->assign(array(
'current' => self::$currentIndex, 'current' => self::$currentIndex,
@@ -143,6 +148,11 @@ abstract class AdminStatsTabControllerCore extends AdminPreferencesControllerCor
return $tpl->fetch(); return $tpl->fetch();
} }
public function checkModulesNames($a, $b)
{
return (bool)($a['displayName'] > $b['displayName']);
}
protected function getModules() protected function getModules()
{ {
@@ -94,7 +94,8 @@ class AdminSuppliersControllerCore extends AdminController
'rows' => 10, 'rows' => 10,
'lang' => true, 'lang' => true,
'hint' => $this->l('Invalid characters:').' <>;=#{}', 'hint' => $this->l('Invalid characters:').' <>;=#{}',
'desc' => $this->l('Will appear in the supplier list') 'desc' => $this->l('Will appear in the supplier list'),
'autoload_rte' => 'rte' //Enable TinyMCE editor for short description
), ),
array( array(
'type' => 'text', 'type' => 'text',
@@ -754,7 +754,7 @@ class AdminSupplyOrdersControllerCore extends AdminController
'orderby' => false, 'orderby' => false,
'filter' => false, 'filter' => false,
'search' => false, 'search' => false,
'hint' => 'Note that you can see details on the receptions - per products', 'hint' => $this->l('Note that you can see details on the receptions - per products'),
), ),
'quantity_expected' => array( 'quantity_expected' => array(
'title' => $this->l('Quantity expected'), 'title' => $this->l('Quantity expected'),
@@ -460,7 +460,9 @@ class AdminTranslationsControllerCore extends AdminController
if (!$default_language || !Validate::isLanguageIsoCode($default_language)) if (!$default_language || !Validate::isLanguageIsoCode($default_language))
return false; return false;
// 1 - Scan mails files // 1 - Scan mails files
$mails = scandir(_PS_MAIL_DIR_.$default_language.'/'); $mails = array();
if (Tools::file_exists_cache(_PS_MAIL_DIR_.$default_language.'/'))
$mails = scandir(_PS_MAIL_DIR_.$default_language.'/');
$mails_new_lang = array(); $mails_new_lang = array();
@@ -579,7 +581,9 @@ class AdminTranslationsControllerCore extends AdminController
if (preg_match('#^translations\/'.$iso_code.'\/tabs.php#Ui', $file['filename'], $matches) && Validate::isLanguageIsoCode($iso_code)) if (preg_match('#^translations\/'.$iso_code.'\/tabs.php#Ui', $file['filename'], $matches) && Validate::isLanguageIsoCode($iso_code))
{ {
// Include array width new translations tabs // Include array width new translations tabs
$tabs = include _PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$file['filename']; $tabs = array();
if (Tools::file_exists_cache(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$file['filename']))
$tabs = include_once(_PS_ROOT_DIR_.DIRECTORY_SEPARATOR.$file['filename']);
foreach ($tabs as $class_name => $translations) foreach ($tabs as $class_name => $translations)
{ {
+9 -1
View File
@@ -134,4 +134,12 @@ class ManufacturerControllerCore extends FrontController
else else
$this->context->smarty->assign('nbManufacturers', 0); $this->context->smarty->assign('nbManufacturers', 0);
} }
}
/**
* Get instance of current manufacturer
*/
public function getManufacturer()
{
return $this->manufacturer;
}
}
+1 -1
View File
@@ -936,7 +936,7 @@ CREATE TABLE `PREFIX_manufacturer_lang` (
`id_manufacturer` int(10) unsigned NOT NULL, `id_manufacturer` int(10) unsigned NOT NULL,
`id_lang` int(10) unsigned NOT NULL, `id_lang` int(10) unsigned NOT NULL,
`description` text, `description` text,
`short_description` varchar(254) default NULL, `short_description` text,
`meta_title` varchar(128) default NULL, `meta_title` varchar(128) default NULL,
`meta_keywords` varchar(255) default NULL, `meta_keywords` varchar(255) default NULL,
`meta_description` varchar(255) default NULL, `meta_description` varchar(255) default NULL,
@@ -26,11 +26,11 @@
function block_category_1521() function block_category_1521()
{ {
if (!Db::getInstance()->getValue('SELECT FROM `'._DB_PREFIX_.'configuration` WHERE `name` LIKE \'BLOCK_CATEG_MAX_DEPTH\' ')) if (!Db::getInstance()->getValue('SELECT value FROM `'._DB_PREFIX_.'configuration` WHERE `name` LIKE \'BLOCK_CATEG_MAX_DEPTH\' '))
Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'configuration` Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'configuration`
(`id_configuration` ,`id_shop_group` ,`id_shop` ,`name` ,`value` ,`date_add` ,`date_upd`) (`id_configuration` ,`id_shop_group` ,`id_shop` ,`name` ,`value` ,`date_add` ,`date_upd`)
VALUES (NULL, NULL, NULL, \'BLOCK_CATEG_MAX_DEPTH\', 4, NOW(), NOW())'); VALUES (NULL, NULL, NULL, \'BLOCK_CATEG_MAX_DEPTH\', 4, NOW(), NOW())');
else if ($maxdepth = (int)Db::getInstance()->getValue('SELECT FROM `'._DB_PREFIX_.'configuration` WHERE `value` IS NOT NULL AND `value` <> 0')) else if ($maxdepth = (int)Db::getInstance()->getValue('SELECT value FROM `'._DB_PREFIX_.'configuration` WHERE `value` IS NOT NULL AND `value` <> 0 AND `name` LIKE \'BLOCK_CATEG_MAX_DEPTH\''))
Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'configuration` SET `value` = '.($maxdepth + 1).' WHERE `name` LIKE\'BLOCK_CATEG_MAX_DEPTH\''); Db::getInstance()->Execute('UPDATE `'._DB_PREFIX_.'configuration` SET `value` = '.($maxdepth + 1).' WHERE `name` LIKE \'BLOCK_CATEG_MAX_DEPTH\'');
} }
@@ -27,5 +27,5 @@
function fix_download_product_feature_active() function fix_download_product_feature_active()
{ {
if (Db::getInstance()->getValue('SELECT COUNT(id_product_download) FROM `'._DB_PREFIX_.'product_download` WHERE `active` = 1 ;') > 0) if (Db::getInstance()->getValue('SELECT COUNT(id_product_download) FROM `'._DB_PREFIX_.'product_download` WHERE `active` = 1 ;') > 0)
Configuration::updateGlobaleValue('PS_VIRTUAL_PROD_FEATURE_ACTIVE'); Db::getInstance()->execute('UPDATE `'._DB_PREFIX_.'configuration` SET `value` = 1 WHERE `name` LIKE \'PS_VIRTUAL_PROD_FEATURE_ACTIVE\'');
} }
+5 -6
View File
@@ -95,7 +95,8 @@ function migrate_orders()
$reduction_amount_tax_incl = (float)$products['reduction_amount']; $reduction_amount_tax_incl = (float)$products['reduction_amount'];
// cart::getTaxesAverageUsed equivalent // cart::getTaxesAverageUsed equivalent
$sum_total_products += $products['total_wt']; $sum_total_products += $products['total_price'];
$sum_tax_amount += $products['total_wt'] - $products['total_price']; $sum_tax_amount += $products['total_wt'] - $products['total_price'];
$order_details['reduction_amount_tax_incl'] = $reduction_amount_tax_incl; $order_details['reduction_amount_tax_incl'] = $reduction_amount_tax_incl;
@@ -119,12 +120,11 @@ function migrate_orders()
$average_tax_used = 1; $average_tax_used = 1;
if ($sum_total_products > 0) if ($sum_total_products > 0)
$average_tax_used += ($sum_tax_amount / $sum_total_products) * 0.01; $average_tax_used += $sum_tax_amount / $sum_total_products;
$average_tax_used = round($average_tax_used, 4);
$carrier_tax_rate = 1 + ((float)$order['carrier_tax_rate'] / 100); $carrier_tax_rate = 1 + ((float)$order['carrier_tax_rate'] / 100);
$total_discount_tax_excl = $order['total_discounts'] / $average_tax_used; $total_discount_tax_excl = $order['total_discounts'] / $average_tax_used;
$order['total_discounts_tax_incl'] = (float)$order['total_discounts']; $order['total_discounts_tax_incl'] = (float)$order['total_discounts'];
$order['total_discounts_tax_excl'] = (float)$total_discount_tax_excl; $order['total_discounts_tax_excl'] = (float)$total_discount_tax_excl;
@@ -321,5 +321,4 @@ function mo_setProductPrices($row, $tax_calculation_method)
$row['total_price'] = $row['product_quantity'] * $row['product_price']; $row['total_price'] = $row['product_quantity'] * $row['product_price'];
return $row; return $row;
} }
@@ -29,17 +29,18 @@ function update_order_messages()
$step = 3000; $step = 3000;
$count_messages = Db::getInstance()->getValue('SELECT count(id_message) FROM '._DB_PREFIX_.'message'); $count_messages = Db::getInstance()->getValue('SELECT count(id_message) FROM '._DB_PREFIX_.'message');
$nb_loop = $start = 0; $nb_loop = $start = 0;
$pattern = '<br|&[a-zA-Z]{1,8};';
if($count_messages > 0) if($count_messages > 0)
$nb_loop = ceil($count_messages / $step); $nb_loop = ceil($count_messages / $step);
for($i = 0; $i < $nb_loop; $i++) for($i = 0; $i < $nb_loop; $i++)
{ {
$sql = 'SELECT id_message, message FROM `'._DB_PREFIX_.'message` WHERE message REGEXP \'<br|&[^;]{1,8}\' LIMIT '.(int)$start.', '.(int)$step; $sql = 'SELECT id_message, message FROM `'._DB_PREFIX_.'message` WHERE message REGEXP \''.pSQL($pattern, true).'\' LIMIT '.(int)$start.', '.(int)$step;
if ($messages = Db::getInstance()->query($sql)) if ($messages = Db::getInstance()->query($sql))
while ($message = Db::getInstance()->nextRow($messages)) while ($message = Db::getInstance()->nextRow($messages))
{ {
if(is_array($message)) if(is_array($message))
{ {
$sql = 'UPDATE `'._DB_PREFIX_.'message` SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(br2nl($message['message']))).'\' $sql = 'UPDATE `'._DB_PREFIX_.'message` SET message = \''.pSQL(preg_replace('/'.$pattern.'/', '', Tools::htmlentitiesDecodeUTF8(br2nl($message['message'])))).'\'
WHERE id_message = '.(int)$message['id_message']; WHERE id_message = '.(int)$message['id_message'];
$result = Db::getInstance()->execute($sql); $result = Db::getInstance()->execute($sql);
} }
@@ -50,13 +51,13 @@ function update_order_messages()
$nb_loop = ceil($count_messages / $step); $nb_loop = ceil($count_messages / $step);
for($i = 0; $i < $nb_loop; $i++) for($i = 0; $i < $nb_loop; $i++)
{ {
$sql = 'SELECT id_customer_message, message FROM `'._DB_PREFIX_.'customer_message` WHERE message REGEXP \'<br|&[^;]{1,8}\' LIMIT '.(int)$start.', '.(int)$step; $sql = 'SELECT id_customer_message, message FROM `'._DB_PREFIX_.'customer_message` WHERE message REGEXP \''.pSQL($pattern, true).'\' LIMIT '.(int)$start.', '.(int)$step;
if ($messages = Db::getInstance()->query($sql)) if ($messages = Db::getInstance()->query($sql))
while ($message = Db::getInstance()->nextRow($messages)) while ($message = Db::getInstance()->nextRow($messages))
{ {
if(is_array($message)) if(is_array($message))
{ {
$sql = 'UPDATE `'._DB_PREFIX_.'customer_message` SET message = \''.pSQL(Tools::htmlentitiesDecodeUTF8(str_replace('&amp;', '&', $message['message']))).'\' $sql = 'UPDATE `'._DB_PREFIX_.'customer_message` SET message = \''.pSQL(preg_replace('/'.$pattern.'/', '', Tools::htmlentitiesDecodeUTF8(str_replace('&amp;', '&', $message['message'])))).'\'
WHERE id_customer_message = '.(int)$message['id_customer_message']; WHERE id_customer_message = '.(int)$message['id_customer_message'];
Db::getInstance()->execute($sql); Db::getInstance()->execute($sql);
} }
+1 -1
View File
@@ -34,6 +34,6 @@ ALTER TABLE `PREFIX_product_shop` DROP INDEX `date_add`, ADD INDEX `date_add` (`
UPDATE `PREFIX_hook` SET `live_edit` = '1' WHERE `name` LIKE 'leftcolumn'; UPDATE `PREFIX_hook` SET `live_edit` = '1' WHERE `name` LIKE 'leftcolumn';
UPDATE `PREFIX_configuration` SET `name` = '0' WHERE `name` LIKE 'PS_LEGACY_IMAGES' AND `value` LIKE '1'; UPDATE `PREFIX_configuration` SET `value` = '0' WHERE `name` LIKE 'PS_LEGACY_IMAGES' AND `value` = 1;
INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES('PS_SMARTY_CONSOLE_KEY', 'SMARTY_DEBUG', NOW(), NOW()); INSERT INTO `PREFIX_configuration` (`name`, `value`, `date_add`, `date_upd`) VALUES('PS_SMARTY_CONSOLE_KEY', 'SMARTY_DEBUG', NOW(), NOW());
+1
View File
@@ -0,0 +1 @@
ALTER TABLE `PREFIX_manufacturer_lang` CHANGE `short_description` `short_description` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;
+33 -13
View File
@@ -214,26 +214,46 @@ var ajaxCart = {
$element = $('#bigpic'); $element = $('#bigpic');
var $picture = $element.clone(); var $picture = $element.clone();
var pictureOffsetOriginal = $element.offset(); var pictureOffsetOriginal = $element.offset();
pictureOffsetOriginal.right = $(window).innerWidth() - pictureOffsetOriginal.left - $element.width();
if ($picture.size()) if ($picture.length)
$picture.css({'position': 'absolute', 'top': pictureOffsetOriginal.top, 'left': pictureOffsetOriginal.left}); {
$picture.css({
position: 'absolute',
top: pictureOffsetOriginal.top,
right: pictureOffsetOriginal.right
});
}
var pictureOffset = $picture.offset(); var pictureOffset = $picture.offset();
if ($('#cart_block')[0] && $('#cart_block').offset().top && $('#cart_block').offset().left) var cartBlock = $('#cart_block');
var cartBlockOffset = $('#cart_block').offset(); if (!$('#cart_block')[0] || !$('#cart_block').offset().top || !$('#cart_block').offset().left)
else cartBlock = $('#shopping_cart');
var cartBlockOffset = $('#shopping_cart').offset(); var cartBlockOffset = cartBlock.offset();
cartBlockOffset.right = $(window).innerWidth() - cartBlockOffset.left - cartBlock.width();
// Check if the block cart is activated for the animation // Check if the block cart is activated for the animation
if (cartBlockOffset != undefined && $picture.size()) if (cartBlockOffset != undefined && $picture.length)
{ {
$picture.appendTo('body'); $picture.appendTo('body');
$picture.css({ 'position': 'absolute', 'top': $picture.css('top'), 'left': $picture.css('left'), 'z-index': 4242 }) $picture
.animate({ 'width': $element.attr('width')*0.66, 'height': $element.attr('height')*0.66, 'opacity': 0.2, 'top': cartBlockOffset.top + 30, 'left': cartBlockOffset.left + 15 }, 1000) .css({
.fadeOut(100, function() { position: 'absolute',
ajaxCart.updateCartInformation(jsonData, addedFromProductPage); top: pictureOffsetOriginal.top,
$(this).remove(); right: pictureOffsetOriginal.right,
}); zIndex: 4242
})
.animate({
width: $element.attr('width')*0.66,
height: $element.attr('height')*0.66,
opacity: 0.2,
top: cartBlockOffset.top + 30,
right: cartBlockOffset.right + 15
}, 1000)
.fadeOut(100, function() {
ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
$(this).remove();
});
} }
else else
ajaxCart.updateCartInformation(jsonData, addedFromProductPage); ajaxCart.updateCartInformation(jsonData, addedFromProductPage);
+3 -4
View File
@@ -445,10 +445,7 @@ class BlockLayered extends Module
static $_MODULES = array(); static $_MODULES = array();
global $_MODULE; global $_MODULE;
if (version_compare(_PS_VERSION_,'1.5','>'))
$file = _PS_MODULE_DIR_.$this->name.'/translations/'.Language::getIsoById($id_lang).'.php'; $file = _PS_MODULE_DIR_.$this->name.'/translations/'.Language::getIsoById($id_lang).'.php';
else
$file = _PS_MODULE_DIR_.$this->name.'/'.Language::getIsoById($id_lang).'.php';
if (!array_key_exists($id_lang, $_MODULES)) if (!array_key_exists($id_lang, $_MODULES))
{ {
@@ -2393,11 +2390,13 @@ class BlockLayered extends Module
MAX(image_shop.`id_image`) id_image, MAX(image_shop.`id_image`) id_image,
il.legend, il.legend,
m.name manufacturer_name, m.name manufacturer_name,
DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(int)$nb_day_new_product.' DAY)) > 0 AS new DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(int)$nb_day_new_product.' DAY)) > 0 AS new,
stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity
FROM `'._DB_PREFIX_.'category_product` cp FROM `'._DB_PREFIX_.'category_product` cp
LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category)
LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product`
'.Shop::addSqlAssociation('product', 'p').' '.Shop::addSqlAssociation('product', 'p').'
'.Product::sqlStock('p', null, false, Context::getContext()->shop).'
LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product'.Shop::addSqlRestrictionOnLang('pl').' AND pl.id_lang = '.(int)$cookie->id_lang.') LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product'.Shop::addSqlRestrictionOnLang('pl').' AND pl.id_lang = '.(int)$cookie->id_lang.')
LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'. LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product`)'.
Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').' Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').'
@@ -111,7 +111,10 @@ class BlockNewProducts extends Module
{ {
if (!$this->isCached('blocknewproducts.tpl', $this->getCacheId())) if (!$this->isCached('blocknewproducts.tpl', $this->getCacheId()))
{ {
if (!Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY') && !($newProducts = Product::getNewProducts((int)$params['cookie']->id_lang, 0, (int)Configuration::get('NEW_PRODUCTS_NBR')))) if (!Configuration::get('PS_BLOCK_NEWPRODUCTS_DISPLAY'))
return;
$newProducts = Product::getNewProducts((int) $params['cookie']->id_lang, 0, (int) Configuration::get('NEW_PRODUCTS_NBR'));
if (!$newProducts)
return; return;
$this->smarty->assign(array( $this->smarty->assign(array(
@@ -151,4 +154,4 @@ class BlockNewProducts extends Module
{ {
$this->_clearCache('blocknewproducts.tpl'); $this->_clearCache('blocknewproducts.tpl');
} }
} }
+35 -1
View File
@@ -221,6 +221,8 @@ class Blocktopmenu extends Module
// BEGIN SUPPLIER // BEGIN SUPPLIER
$this->_html .= '<optgroup label="'.$this->l('Supplier').'">'; $this->_html .= '<optgroup label="'.$this->l('Supplier').'">';
// Option to show all Suppliers
$this->_html .= '<option value="ALLSUP0">'.$this->l('All suppliers').'</option>';
$suppliers = Supplier::getSuppliers(false, $id_lang); $suppliers = Supplier::getSuppliers(false, $id_lang);
foreach ($suppliers as $supplier) foreach ($suppliers as $supplier)
$this->_html .= '<option value="SUP'.$supplier['id_supplier'].'">'.$spacer.$supplier['name'].'</option>'; $this->_html .= '<option value="SUP'.$supplier['id_supplier'].'">'.$spacer.$supplier['name'].'</option>';
@@ -228,6 +230,8 @@ class Blocktopmenu extends Module
// BEGIN Manufacturer // BEGIN Manufacturer
$this->_html .= '<optgroup label="'.$this->l('Manufacturer').'">'; $this->_html .= '<optgroup label="'.$this->l('Manufacturer').'">';
// Option to show all Manufacturers
$this->_html .= '<option value="ALLMAN0">'.$this->l('All manufacturers').'</option>';
$manufacturers = Manufacturer::getManufacturers(false, $id_lang); $manufacturers = Manufacturer::getManufacturers(false, $id_lang);
foreach ($manufacturers as $manufacturer) foreach ($manufacturers as $manufacturer)
$this->_html .= '<option value="MAN'.$manufacturer['id_manufacturer'].'">'.$spacer.$manufacturer['name'].'</option>'; $this->_html .= '<option value="MAN'.$manufacturer['id_manufacturer'].'">'.$spacer.$manufacturer['name'].'</option>';
@@ -472,12 +476,22 @@ class Blocktopmenu extends Module
$this->_html .= '<option value="CMS_CAT'.$id.'">'.$category->name.'</option>'.PHP_EOL; $this->_html .= '<option value="CMS_CAT'.$id.'">'.$category->name.'</option>'.PHP_EOL;
break; break;
// Case to handle the option to show all Manufacturers
case 'ALLMAN':
$this->_html .= '<option value="ALLMAN0">'.$this->l('All manufacturers').'</option>'.PHP_EOL;
break;
case 'MAN': case 'MAN':
$manufacturer = new Manufacturer((int)$id, (int)$id_lang); $manufacturer = new Manufacturer((int)$id, (int)$id_lang);
if (Validate::isLoadedObject($manufacturer)) if (Validate::isLoadedObject($manufacturer))
$this->_html .= '<option value="MAN'.$id.'">'.$manufacturer->name.'</option>'.PHP_EOL; $this->_html .= '<option value="MAN'.$id.'">'.$manufacturer->name.'</option>'.PHP_EOL;
break; break;
// Case to handle the option to show all Suppliers
case 'ALLSUP':
$this->_html .= '<option value="ALLSUP0">'.$this->l('All suppliers').'</option>'.PHP_EOL;
break;
case 'SUP': case 'SUP':
$supplier = new Supplier((int)$id, (int)$id_lang); $supplier = new Supplier((int)$id, (int)$id_lang);
if (Validate::isLoadedObject($supplier)) if (Validate::isLoadedObject($supplier))
@@ -549,6 +563,16 @@ class Blocktopmenu extends Module
} }
break; break;
// Case to handle the option to show all Manufacturers
case 'ALLMAN':
$link = new Link;
$this->_menu .= '<li><a href="'.$link->getPageLink('manufacturer').'">'.$this->l('All manufacturers').'</a><ul>'.PHP_EOL;
$manufacturers = Manufacturer::getManufacturers();
foreach ($manufacturers as $key => $manufacturer)
$this->_menu .= '<li><a href="'.$link->getManufacturerLink((int)$manufacturer['id_manufacturer'], $manufacturer['link_rewrite']).'">'.$manufacturer['name'].'</a></li>'.PHP_EOL;
$this->_menu .= '</ul>';
break;
case 'MAN': case 'MAN':
$selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : ''; $selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : '';
$manufacturer = new Manufacturer((int)$id, (int)$id_lang); $manufacturer = new Manufacturer((int)$id, (int)$id_lang);
@@ -563,6 +587,16 @@ class Blocktopmenu extends Module
} }
break; break;
// Case to handle the option to show all Suppliers
case 'ALLSUP':
$link = new Link;
$this->_menu .= '<li><a href="'.$link->getPageLink('supplier').'">'.$this->l('All suppliers').'</a><ul>'.PHP_EOL;
$suppliers = Supplier::getSuppliers();
foreach ($suppliers as $key => $supplier)
$this->_menu .= '<li><a href="'.$link->getSupplierLink((int)$supplier['id_supplier'], $supplier['link_rewrite']).'">'.$supplier['name'].'</a></li>'.PHP_EOL;
$this->_menu .= '</ul>';
break;
case 'SUP': case 'SUP':
$selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : ''; $selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : '';
$supplier = new Supplier((int)$id, (int)$id_lang); $supplier = new Supplier((int)$id, (int)$id_lang);
@@ -896,4 +930,4 @@ class Blocktopmenu extends Module
} }
} }
+1 -1
View File
@@ -224,7 +224,7 @@ class importerosc extends ImportModule
$keyLanguage = 'id_lang'; $keyLanguage = 'id_lang';
$identifier = 'id_category'; $identifier = 'id_category';
$categories = $this->executeS(' $categories = $this->executeS('
SELECT c.categories_id as id_category, c.parent_id as id_parent, level as level_depth, cd.language_id as id_lang, cd.categories_name as name , 1 as active, categories_image as images SELECT c.categories_id as id_category, c.parent_id as id_parent, level as level_depth, cd.language_id as id_lang, cd.categories_name as name , 1 as active, categories_image as images, c.date_added as date_add
FROM `'.bqSQL($this->prefix).'categories` c FROM `'.bqSQL($this->prefix).'categories` c
LEFT JOIN `'.bqSQL($this->prefix).'categories_description` cd ON (c.categories_id = cd.categories_id) LEFT JOIN `'.bqSQL($this->prefix).'categories_description` cd ON (c.categories_id = cd.categories_id)
WHERE cd.categories_name IS NOT NULL AND cd.language_id IS NOT NULL WHERE cd.categories_name IS NOT NULL AND cd.language_id IS NOT NULL
+9 -4
View File
@@ -83,7 +83,7 @@ class SEKeywords extends ModuleGraph
public function hookTop($params) public function hookTop($params)
{ {
if (!isset($_SERVER['HTTP_REFERER']) || strstr($_SERVER['HTTP_REFERER'], Tools::getHttpHost(false, false))) if (!isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], Tools::getHttpHost(false, false) == 0))
return; return;
if ($keywords = $this->getKeywords($_SERVER['HTTP_REFERER'])) if ($keywords = $this->getKeywords($_SERVER['HTTP_REFERER']))
@@ -161,6 +161,7 @@ class SEKeywords extends ModuleGraph
$parsedUrl = parse_url($url); $parsedUrl = parse_url($url);
if (!isset($parsedUrl['query']) && isset($parsedUrl['fragment'])) if (!isset($parsedUrl['query']) && isset($parsedUrl['fragment']))
$parsedUrl['query'] = $parsedUrl['fragment']; $parsedUrl['query'] = $parsedUrl['fragment'];
if (!isset($parsedUrl['query'])) if (!isset($parsedUrl['query']))
return false; return false;
@@ -172,13 +173,17 @@ class SEKeywords extends ModuleGraph
if (strstr($parsedUrl['host'], $host)) if (strstr($parsedUrl['host'], $host))
{ {
$kArray = array(); $kArray = array();
preg_match('/[^a-z]'.$varname.'=.+\&'.'/U', $parsedUrl['query'], $kArray); preg_match('/[^a-zA-Z&]?'.$varname.'=.*\&'.'/U', $parsedUrl['query'], $kArray);
if (!isset($kArray[0]) || empty($kArray[0])) if (!isset($kArray[0]) || empty($kArray[0]))
preg_match('/[^a-z]'.$varname.'=.+$'.'/', $parsedUrl['query'], $kArray); preg_match('/[^a-zA-Z&]?'.$varname.'=.*$'.'/', $parsedUrl['query'], $kArray);
if (!isset($kArray[0]) || empty($kArray[0])) if (!isset($kArray[0]) || empty($kArray[0]))
return false; return false;
if ($kArray[0][0] == '&')
if ($kArray[0][0] == '&' && Tools::strlen($kArray[0]) == 1)
return false; return false;
return urldecode(str_replace('+', ' ', ltrim(substr(rtrim($kArray[0], '&'), strlen($varname) + 1), '='))); return urldecode(str_replace('+', ' ', ltrim(substr(rtrim($kArray[0], '&'), strlen($varname) + 1), '=')));
} }
} }
+10 -2
View File
@@ -434,7 +434,7 @@ class shopimporter extends ImportModule
if ((sizeof($rules['requiredLang']) || sizeof($rules['sizeLang']) || sizeof($rules['validateLang']) || Tools::isSubmit('syncLang') || Tools::isSubmit('syncCurrency'))) if ((sizeof($rules['requiredLang']) || sizeof($rules['sizeLang']) || sizeof($rules['validateLang']) || Tools::isSubmit('syncLang') || Tools::isSubmit('syncCurrency')))
{ {
$moduleName = Tools::getValue('moduleName'); $moduleName = Tools::getValue('moduleName');
if (Validate::isModuleName($moduleName) && Validate::file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php')) if (Validate::isModuleName($moduleName) && file_exists('../../modules/'.$moduleName.'/'.$moduleName.'.php'))
{ {
require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php'); require_once('../../modules/'.$moduleName.'/'.$moduleName.'.php');
$importModule = new $moduleName(); $importModule = new $moduleName();
@@ -959,7 +959,15 @@ class shopimporter extends ImportModule
c.id_parent = c2.`id_category_'.bqSQL($moduleName).'` c.id_parent = c2.`id_category_'.bqSQL($moduleName).'`
SET SET
c.id_parent = c2.id_category c.id_parent = c2.id_category
WHERE c.`id_category_'.bqSQL($moduleName).'` != 0'); WHERE c.`id_category_'.bqSQL($moduleName).'` != 0
AND c.`id_parent` != 0');
// get PS home category
Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'category c
SET c.id_parent = '.Configuration::get('PS_HOME_CATEGORY').'
WHERE c.`id_category_'.bqSQL($moduleName).'` != 0
AND c.`id_parent` = 0');
$category = new Category(); $category = new Category();
$cats = $category->getSimpleCategories((int)Configuration::get('PS_LANG_DEFAULT')); $cats = $category->getSimpleCategories((int)Configuration::get('PS_LANG_DEFAULT'));
foreach($cats as $cat) foreach($cats as $cat)
+5 -3
View File
@@ -621,7 +621,7 @@ function updateCartSummary(json)
initial_price_text = '<span style="text-decoration:line-through;">' + initial_price + '</span><br />'; initial_price_text = '<span style="text-decoration:line-through;">' + initial_price + '</span><br />';
var key_for_blockcart = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + product_list[i].id_address_delivery; var key_for_blockcart = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + product_list[i].id_address_delivery;
var key_for_blockcart_nocustom = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + ((product_list[i].quantity_without_customization != product_list[i].quantity)? 'nocustom' : '0') + '_' + product_list[i].id_address_delivery; var key_for_blockcart_nocustom = product_list[i].id_product + '_' + product_list[i].id_product_attribute + '_' + ((product_list[i].id_customization && product_list[i].quantity_without_customization != product_list[i].quantity)? 'nocustom' : '0') + '_' + product_list[i].id_address_delivery;
if (priceDisplayMethod !== 0) if (priceDisplayMethod !== 0)
{ {
@@ -643,8 +643,10 @@ function updateCartSummary(json)
if (product_list[i].quantity_without_customization != product_list[i].quantity) if (product_list[i].quantity_without_customization != product_list[i].quantity)
$('#total_product_price_' + key_for_blockcart_nocustom).html(formatCurrency(product_list[i].total_wt, currencyFormat, currencySign, currencyBlank)); $('#total_product_price_' + key_for_blockcart_nocustom).html(formatCurrency(product_list[i].total_wt, currencyFormat, currencySign, currencyBlank));
} }
$('input[name=quantity_' + key_for_blockcart_nocustom + ']').val(product_list[i].quantity_without_customization);
$('input[name=quantity_' + key_for_blockcart_nocustom + '_hidden]').val(product_list[i].quantity_without_customization); $('input[name=quantity_' + key_for_blockcart_nocustom + ']').val(product_list[i].id_customization? product_list[i].quantity_without_customization : product_list[i].cart_quantity);
$('input[name=quantity_' + key_for_blockcart_nocustom + '_hidden]').val(product_list[i].id_customization? product_list[i].quantity_without_customization : product_list[i].cart_quantity);
if (typeof(product_list[i].customizationQuantityTotal) !== 'undefined' && product_list[i].customizationQuantityTotal > 0) if (typeof(product_list[i].customizationQuantityTotal) !== 'undefined' && product_list[i].customizationQuantityTotal > 0)
$('#cart_quantity_custom_' + key_for_blockcart).html(product_list[i].customizationQuantityTotal); $('#cart_quantity_custom_' + key_for_blockcart).html(product_list[i].customizationQuantityTotal);
nbrProducts += parseInt(product_list[i].quantity); nbrProducts += parseInt(product_list[i].quantity);