// Normalize some classes

This commit is contained in:
rMalie committed 2012-01-23 15:25:43 +00:00
1 parent 768cf756c8
commit 59e5dfe9bf
18 files changed
+373 -293

No files matched your search

+5 -5
View File
@@ -377,8 +377,9 @@ class ProductCore extends ObjectModel
const CUSTOMIZE_FILE = 0; const CUSTOMIZE_FILE = 0;
const CUSTOMIZE_TEXTFIELD = 1; const CUSTOMIZE_TEXTFIELD = 1;
/**
// Note: prefix is "PTYPE" because TYPE_ is used in ObjectModel (definition) * Note: prefix is "PTYPE" because TYPE_ is used in ObjectModel (definition)
*/
const PTYPE_SIMPLE = 0; const PTYPE_SIMPLE = 0;
const PTYPE_PACK = 1; const PTYPE_PACK = 1;
const PTYPE_VIRTUAL = 2; const PTYPE_VIRTUAL = 2;
@@ -1245,7 +1246,6 @@ class ProductCore extends ObjectModel
public function updateAttribute($id_product_attribute, $wholesale_price, $price, $weight, $unit, $ecotax, public function updateAttribute($id_product_attribute, $wholesale_price, $price, $weight, $unit, $ecotax,
$id_images, $reference, $ean13, $default, $location = null, $upc = null, $minimal_quantity, $available_date) $id_images, $reference, $ean13, $default, $location = null, $upc = null, $minimal_quantity, $available_date)
{ {
$price = str_replace(',', '.', $price); $price = str_replace(',', '.', $price);
$weight = str_replace(',', '.', $weight); $weight = str_replace(',', '.', $weight);
@@ -2369,7 +2369,7 @@ class ProductCore extends ObjectModel
} }
$result = self::$_pricesLevel2[$cache_id_2]; $result = self::$_pricesLevel2[$cache_id_2];
if (!$specific_price || $specific_price['price'] ==0) if (!$specific_price || $specific_price['price'] == 0)
$price = (float)$result['price']; $price = (float)$result['price'];
else else
$price = (float)$specific_price['price']; $price = (float)$specific_price['price'];
@@ -3386,7 +3386,7 @@ class ProductCore extends ObjectModel
$row['attribute_price'] = 0; $row['attribute_price'] = 0;
if (isset($row['id_product_attribute']) && $row['id_product_attribute']) if (isset($row['id_product_attribute']) && $row['id_product_attribute'])
$row['attribute_price'] = (float)Product::getProductAttributePrice($row['id_product_attribute']); $row['attribute_price'] = (float)Product::getProductAttributePrice($row['id_product_attribute']);
$row['price_tax_exc'] = Product::getPriceStatic( $row['price_tax_exc'] = Product::getPriceStatic(
(int)$row['id_product'], (int)$row['id_product'],
+38 -32
View File
@@ -103,9 +103,9 @@ class ProductDownloadCore extends ObjectModel
return $fields; return $fields;
} }
public function add($autodate = true, $nullValues = false) public function add($autodate = true, $null_values = false)
{ {
if (parent::add($autodate, $nullValues)) if (parent::add($autodate, $null_values))
{ {
// Set cache of feature detachable to true // Set cache of feature detachable to true
if ($this->active) if ($this->active)
@@ -115,9 +115,9 @@ class ProductDownloadCore extends ObjectModel
return false; return false;
} }
public function update($nullValues = false) public function update($null_values = false)
{ {
if (parent::update($nullValues)) if (parent::update($null_values))
{ {
// Refresh cache of feature detachable because the row can be deactive // Refresh cache of feature detachable because the row can be deactive
Configuration::updateGlobalValue('PS_VIRTUAL_PROD_FEATURE_ACTIVE', ProductDownload::isCurrentlyUsed($this->def['table'], true)); Configuration::updateGlobalValue('PS_VIRTUAL_PROD_FEATURE_ACTIVE', ProductDownload::isCurrentlyUsed($this->def['table'], true));
@@ -126,9 +126,9 @@ class ProductDownloadCore extends ObjectModel
return false; return false;
} }
public function delete($deleteFile = false) public function delete($delete = false)
{ {
if ($deleteFile) if ($delete)
return $this->deleteFile(); return $this->deleteFile();
return true; return true;
} }
@@ -139,14 +139,13 @@ class ProductDownloadCore extends ObjectModel
* *
* @return boolean * @return boolean
*/ */
public function deleteFile($id_product_download = NULL) public function deleteFile($id_product_download = null)
{ {
if (!$this->checkFile()) if (!$this->checkFile())
return false; return false;
return unlink(_PS_DOWNLOAD_DIR_.$this->filename) && Db::getInstance()->Execute('DELETE return unlink(_PS_DOWNLOAD_DIR_.$this->filename)
FROM `'._DB_PREFIX_.'product_download` && Db::getInstance()->delete(_DB_PREFIX_.'product_download', 'id_product_download = '.(int)$id_product_download);
WHERE `id_product_download` = '.(int)$id_product_download);
} }
/** /**
@@ -202,13 +201,17 @@ class ProductDownloadCore extends ObjectModel
{ {
if (!ProductDownload::isFeatureActive()) if (!ProductDownload::isFeatureActive())
return false; return false;
if (array_key_exists($id_product_attribute, self::$_productIds)) if (array_key_exists($id_product_attribute, self::$_productIds))
return self::$_productIds[$id_product]; return self::$_productIds[$id_product];
self::$_productIds[$id_product_attribute] = (int)Db::getInstance()->getValue(' self::$_productIds[$id_product_attribute] = (int)Db::getInstance()->getValue('
SELECT `id_product_download` SELECT `id_product_download`
FROM `'._DB_PREFIX_.'product_download` FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.' WHERE `id_product` = '.(int)$id_product.'
AND `id_product_attribute` = '.(int)$id_product_attribute.' AND `active` = 1'); AND `id_product_attribute` = '.(int)$id_product_attribute.'
AND `active` = 1'
);
return self::$_productIds[$id_product_attribute]; return self::$_productIds[$id_product_attribute];
} }
@@ -272,10 +275,11 @@ class ProductDownloadCore extends ObjectModel
public static function getFilenameFromIdProduct($id_product) public static function getFilenameFromIdProduct($id_product)
{ {
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `filename` SELECT `filename`
FROM `'._DB_PREFIX_.'product_download` FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.' WHERE `id_product` = '.(int)$id_product.'
AND `active` = 1'); AND `active` = 1
');
} }
/** /**
@@ -288,11 +292,12 @@ class ProductDownloadCore extends ObjectModel
public static function getFilenameFromIdAttribute($id_product, $id_product_attribute) public static function getFilenameFromIdAttribute($id_product, $id_product_attribute)
{ {
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `filename` SELECT `filename`
FROM `'._DB_PREFIX_.'product_download` FROM `'._DB_PREFIX_.'product_download`
WHERE `id_product` = '.(int)$id_product.' WHERE `id_product` = '.(int)$id_product.'
AND `id_product_attribute` = '.(int)$id_product_attribute.' AND `id_product_attribute` = '.(int)$id_product_attribute.'
AND `active` = 1'); AND `active` = 1
');
} }
/** /**
@@ -319,7 +324,7 @@ class ProductDownloadCore extends ObjectModel
*/ */
public function getTextLink($admin = true, $hash = false) public function getTextLink($admin = true, $hash = false)
{ {
$key = $this->filename . '-' . ($hash ? $hash : 'orderdetail'); $key = $this->filename.'-'.($hash ? $hash : 'orderdetail');
$link = ($admin) ? 'get-file-admin.php?' : _PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=get-file&'; $link = ($admin) ? 'get-file-admin.php?' : _PS_BASE_URL_.__PS_BASE_URI__.'index.php?controller=get-file&';
$link .= ($admin) ? 'file='.$this->filename : 'key='.$key; $link .= ($admin) ? 'file='.$this->filename : 'key='.$key;
return $link; return $link;
@@ -328,17 +333,18 @@ class ProductDownloadCore extends ObjectModel
/** /**
* Return html link * Return html link
* *
* @param string $class CSS selector (optionnal) * @param string $class CSS selector
* @param bool $admin specific to backend (optionnal) * @param bool $admin specific to backend
* @param string $hash hash code in table order detail (optionnal) * @param bool $hash hash code in table order detail
* @return string Html all the code for print a link to the file * @return string Html all the code for print a link to the file
*/ */
public function getHtmlLink($class=false, $admin=true, $hash=false) public function getHtmlLink($class = false, $admin = true, $hash = false)
{ {
$link = $this->getTextLink($admin, $hash); $link = $this->getTextLink($admin, $hash);
$html = '<a href="'.$link.'" title=""'; $html = '<a href="'.$link.'" title=""';
if ($class) $html.= ' class="'.$class.'"'; if ($class)
$html.= '>'.$this->display_filename.'</a>'; $html .= ' class="'.$class.'"';
$html .= '>'.$this->display_filename.'</a>';
return $html; return $html;
} }
@@ -349,9 +355,9 @@ class ProductDownloadCore extends ObjectModel
*/ */
public function getDeadline() public function getDeadline()
{ {
if (!(int)($this->nb_days_accessible)) if (!(int)$this->nb_days_accessible)
return '0000-00-00 00:00:00'; return '0000-00-00 00:00:00';
$timestamp = strtotime('+'.(int)($this->nb_days_accessible).' day'); $timestamp = strtotime('+'.(int)$this->nb_days_accessible.' day');
return date('Y-m-d H:i:s', $timestamp); return date('Y-m-d H:i:s', $timestamp);
} }
+54 -39
View File
@@ -44,7 +44,7 @@ class ProductSaleCore
** Get number of actives products sold ** Get number of actives products sold
** @return int number of actives products listed in product_sales ** @return int number of actives products listed in product_sales
*/ */
static public function getNbSales(Context $context = null) public static function getNbSales(Context $context = null)
{ {
if (!$context) if (!$context)
$context = Context::getContext(); $context = Context::getContext();
@@ -61,32 +61,38 @@ class ProductSaleCore
** Get required informations on best sales products ** Get required informations on best sales products
** **
** @param integer $id_lang Language id ** @param integer $id_lang Language id
** @param integer $pageNumber Start from (optional) ** @param integer $page_number Start from (optional)
** @param integer $nbProducts Number of products to return (optional) ** @param integer $nb_products Number of products to return (optional)
** @return array from Product::getProductProperties ** @return array from Product::getProductProperties
*/ */
static public function getBestSales($id_lang, $pageNumber = 0, $nbProducts = 10, $orderBy = NULL, $orderWay = NULL, Context $context = null) public static function getBestSales($id_lang, $page_number = 0, $nb_products = 10, $order_by = null, $order_way = null, Context $context = null)
{ {
if (!$context) if (!$context)
$context = Context::getContext(); $context = Context::getContext();
if ($pageNumber < 0) $pageNumber = 0; if ($page_number < 0) $page_number = 0;
if ($nbProducts < 1) $nbProducts = 10; if ($nb_products < 1) $nb_products = 10;
if (empty($orderBy) || $orderBy == 'position') $orderBy = 'sales'; if (empty($order_by) || $order_by == 'position') $order_by = 'sales';
if (empty($orderWay)) $orderWay = 'DESC'; if (empty($order_way)) $order_way = 'DESC';
$groups = FrontController::getCurrentCustomerGroups(); $groups = FrontController::getCurrentCustomerGroups();
$sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
$interval = Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20;
$sql = 'SELECT p.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, $sql = 'SELECT p.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity,
pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, m.`name` AS manufacturer_name, p.`id_manufacturer` as id_manufacturer, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`,
pl.`meta_keywords`, pl.`meta_title`, pl.`name`,
m.`name` AS manufacturer_name, p.`id_manufacturer` as id_manufacturer,
i.`id_image`, il.`legend`, i.`id_image`, il.`legend`,
ps.`quantity` AS sales, t.`rate`, pl.`meta_keywords`, pl.`meta_title`, pl.`meta_description`, ps.`quantity` AS sales, t.`rate`, pl.`meta_keywords`, pl.`meta_title`, pl.`meta_description`,
DATEDIFF(p.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new DATEDIFF(p.`date_add`, DATE_SUB(NOW(),
INTERVAL '.$interval.' DAY)) > 0 AS new
FROM `'._DB_PREFIX_.'product_sale` ps FROM `'._DB_PREFIX_.'product_sale` ps
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
'.$context->shop->addSqlAssociation('product', 'p', false).' '.$context->shop->addSqlAssociation('product', 'p', false).'
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('pl').') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
ON p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('pl').'
LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`) LEFT JOIN `'._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
@@ -100,15 +106,15 @@ class ProductSaleCore
SELECT cp.`id_product` SELECT cp.`id_product`
FROM `'._DB_PREFIX_.'category_group` cg FROM `'._DB_PREFIX_.'category_group` cg
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
WHERE cg.`id_group` '.$sqlGroups.' WHERE cg.`id_group` '.$sql_groups.'
) )
ORDER BY `'.pSQL($orderBy).'` '.pSQL($orderWay).' ORDER BY `'.pSQL($order_by).'` '.pSQL($order_way).'
LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)$nbProducts; LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
if ($orderBy == 'price') if ($order_by == 'price')
Tools::orderbyPrice($result,$orderWay); Tools::orderbyPrice($result, $order_way);
if (!$result) if (!$result)
return false; return false;
return Product::getProductsProperties($id_lang, $result); return Product::getProductsProperties($id_lang, $result);
@@ -118,41 +124,46 @@ class ProductSaleCore
** Get required informations on best sales products ** Get required informations on best sales products
** **
** @param integer $id_lang Language id ** @param integer $id_lang Language id
** @param integer $pageNumber Start from (optional) ** @param integer $page_number Start from (optional)
** @param integer $nbProducts Number of products to return (optional) ** @param integer $nb_products Number of products to return (optional)
** @return array keys : id_product, link_rewrite, name, id_image, legend, sales, ean13, upc, link ** @return array keys : id_product, link_rewrite, name, id_image, legend, sales, ean13, upc, link
*/ */
static public function getBestSalesLight($id_lang, $pageNumber = 0, $nbProducts = 10, Context $context = null) public static function getBestSalesLight($id_lang, $page_number = 0, $nb_products = 10, Context $context = null)
{ {
if (!$context) if (!$context)
$context = Context::getContext(); $context = Context::getContext();
if ($pageNumber < 0) $pageNumber = 0; if ($page_number < 0) $page_number = 0;
if ($nbProducts < 1) $nbProducts = 10; if ($nb_products < 1) $nb_products = 10;
$groups = FrontController::getCurrentCustomerGroups(); $groups = FrontController::getCurrentCustomerGroups();
$sqlGroups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1'); $sql_groups = (count($groups) ? 'IN ('.implode(',', $groups).')' : '= 1');
$sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, i.`id_image`, il.`legend`, ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category $sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, i.`id_image`, il.`legend`,
ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
FROM `'._DB_PREFIX_.'product_sale` ps FROM `'._DB_PREFIX_.'product_sale` ps
LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product` LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
'.$context->shop->addSqlAssociation('product', 'p').' '.$context->shop->addSqlAssociation('product', 'p').'
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('pl').') LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
ON p.`id_product` = pl.`id_product`
AND pl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('pl').'
LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1) LEFT JOIN `'._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.') LEFT JOIN `'._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON (cl.`id_category` = p.`id_category_default` AND cl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('cl').') LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
ON cl.`id_category` = p.`id_category_default`
AND cl.`id_lang` = '.(int)$id_lang.$context->shop->addSqlRestrictionOnLang('cl').'
WHERE p.`active` = 1 WHERE p.`active` = 1
AND p.`id_product` IN ( 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
LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`) LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
WHERE cg.`id_group` '.$sqlGroups.' WHERE cg.`id_group` '.$sql_groups.'
) )
ORDER BY sales DESC ORDER BY sales DESC
LIMIT '.(int)($pageNumber * $nbProducts).', '.(int)$nbProducts; LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql)) if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
return false; return false;
foreach ($result AS &$row) foreach ($result as &$row)
{ {
$row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']); $row['link'] = $context->link->getProductLink($row['id_product'], $row['link_rewrite'], $row['category'], $row['ean13']);
$row['id_image'] = Product::defineProductImage($row, $id_lang); $row['id_image'] = Product::defineProductImage($row, $id_lang);
@@ -165,25 +176,29 @@ class ProductSaleCore
return Db::getInstance()->execute(' return Db::getInstance()->execute('
INSERT INTO '._DB_PREFIX_.'product_sale INSERT INTO '._DB_PREFIX_.'product_sale
(`id_product`, `quantity`, `sale_nbr`, `date_upd`) (`id_product`, `quantity`, `sale_nbr`, `date_upd`)
VALUES ('.(int)($product_id).', '.(int)($qty).', 1, NOW()) VALUES ('.(int)$product_id.', '.(int)$qty.', 1, NOW())
ON DUPLICATE KEY UPDATE `quantity` = `quantity` + '.(int)($qty).', `sale_nbr` = `sale_nbr` + 1, `date_upd` = NOW()'); ON DUPLICATE KEY UPDATE `quantity` = `quantity` + '.(int)$qty.', `sale_nbr` = `sale_nbr` + 1, `date_upd` = NOW()');
} }
public static function getNbrSales($id_product) public static function getNbrSales($id_product)
{ {
$result = Db::getInstance()->getRow('SELECT `sale_nbr` FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)($id_product)); $result = Db::getInstance()->getRow('SELECT `sale_nbr` FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)$id_product);
if (!$result OR empty($result) OR !key_exists('sale_nbr', $result)) if (!$result || empty($result) || !key_exists('sale_nbr', $result))
return -1; return -1;
return (int)($result['sale_nbr']); return (int)$result['sale_nbr'];
} }
public static function removeProductSale($id_product, $qty = 1) public static function removeProductSale($id_product, $qty = 1)
{ {
$nbrSales = ProductSale::getNbrSales($id_product); $total_sales = ProductSale::getNbrSales($id_product);
if ($nbrSales > 1) if ($total_sales > 1)
return Db::getInstance()->execute('UPDATE '._DB_PREFIX_.'product_sale SET `quantity` = `quantity` - '.(int)($qty).', `sale_nbr` = `sale_nbr` - 1, `date_upd` = NOW() WHERE `id_product` = '.(int)($id_product)); return Db::getInstance()->execute('
elseif ($nbrSales == 1) UPDATE '._DB_PREFIX_.'product_sale
return Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'product_sale WHERE `id_product` = '.(int)($id_product)); SET `quantity` = `quantity` - '.(int)$qty.', `sale_nbr` = `sale_nbr` - 1, `date_upd` = NOW()
WHERE `id_product` = '.(int)$id_product
);
elseif ($total_sales == 1)
return Db::getInstance()->delete(_DB_PREFIX_.'product_sale', 'id_product = '.(int)$id_product);
return true; return true;
} }
} }
+23 -17
View File
@@ -28,7 +28,7 @@
class ProfileCore extends ObjectModel class ProfileCore extends ObjectModel
{ {
/** @var string Name */ /** @var string Name */
public $name; public $name;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -55,7 +55,7 @@ class ProfileCore extends ObjectModel
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT p.`id_profile`, `name` SELECT p.`id_profile`, `name`
FROM `'._DB_PREFIX_.'profile` p FROM `'._DB_PREFIX_.'profile` p
LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile` AND `id_lang` = '.(int)($id_lang).') LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile` AND `id_lang` = '.(int)$id_lang.')
ORDER BY `id_profile` ASC'); ORDER BY `id_profile` ASC');
} }
@@ -64,26 +64,32 @@ class ProfileCore extends ObjectModel
* *
* @return string Profile * @return string Profile
*/ */
public static function getProfile($id_profile, $id_lang = NULL) public static function getProfile($id_profile, $id_lang = null)
{ {
if ($id_lang == NULL) if (!$id_lang)
$id_lang = Configuration::get('PS_LANG_DEFAULT'); $id_lang = Configuration::get('PS_LANG_DEFAULT');
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
SELECT `name` SELECT `name`
FROM `'._DB_PREFIX_.'profile` p FROM `'._DB_PREFIX_.'profile` p
LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile`) LEFT JOIN `'._DB_PREFIX_.'profile_lang` pl ON (p.`id_profile` = pl.`id_profile`)
WHERE p.`id_profile` = '.(int)$id_profile.' WHERE p.`id_profile` = '.(int)$id_profile.'
AND pl.`id_lang` = '.(int)$id_lang); AND pl.`id_lang` = '.(int)$id_lang
);
} }
public function add($autodate = true, $null_values = false)
public function add($autodate = true, $nullValues = false)
{ {
if (parent::add($autodate, true)) if (parent::add($autodate, true))
return ( {
Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'access (SELECT '.(int)$this->id.', id_tab, 0, 0, 0, 0 FROM '._DB_PREFIX_.'tab)') $result = Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'access (SELECT '.(int)$this->id.', id_tab, 0, 0, 0, 0 FROM '._DB_PREFIX_.'tab)');
&& Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'module_access (`id_profile`, `id_module`, `configure`, `view`) (SELECT '.(int)$this->id.', id_module, 0, 1 FROM '._DB_PREFIX_.'module)') $result &= Db::getInstance()->execute('
); INSERT INTO '._DB_PREFIX_.'module_access
(`id_profile`, `id_module`, `configure`, `view`)
(SELECT '.(int)$this->id.', id_module, 0, 1 FROM '._DB_PREFIX_.'module)
');
return $result;
}
return false; return false;
} }
@@ -114,7 +120,7 @@ class ProfileCore extends ObjectModel
WHERE `id_profile` = '.(int)$id_profile); WHERE `id_profile` = '.(int)$id_profile);
self::$_cache_accesses[$id_profile] = array(); self::$_cache_accesses[$id_profile] = array();
foreach ($result AS $row) foreach ($result as $row)
{ {
if (!isset(self::$_cache_accesses[$id_profile][$row['id_tab']])) if (!isset(self::$_cache_accesses[$id_profile][$row['id_tab']]))
self::$_cache_accesses[$id_profile][$row['id_tab']] = array(); self::$_cache_accesses[$id_profile][$row['id_tab']] = array();
+7 -8
View File
@@ -27,9 +27,9 @@
class RangePriceCore extends ObjectModel class RangePriceCore extends ObjectModel
{ {
public $id_carrier; public $id_carrier;
public $delimiter1; public $delimiter1;
public $delimiter2; public $delimiter2;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -62,7 +62,7 @@ class RangePriceCore extends ObjectModel
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT * SELECT *
FROM `'._DB_PREFIX_.'range_price` FROM `'._DB_PREFIX_.'range_price`
WHERE `id_carrier` = '.(int)($id_carrier).' WHERE `id_carrier` = '.(int)$id_carrier.'
ORDER BY `delimiter1` ASC'); ORDER BY `delimiter1` ASC');
} }
@@ -80,18 +80,17 @@ class RangePriceCore extends ObjectModel
return false; return false;
$carrier = new Carrier((int)$this->id_carrier); $carrier = new Carrier((int)$this->id_carrier);
$priceList = array(); $price_list = array();
foreach ($carrier->getZones() as $zone) foreach ($carrier->getZones() as $zone)
$priceList[] = array( $price_list[] = array(
'id_range_price' => (int)$this->id, 'id_range_price' => (int)$this->id,
'id_range_weight' => 0, 'id_range_weight' => 0,
'id_carrier' => (int)$this->id_carrier, 'id_carrier' => (int)$this->id_carrier,
'id_zone' => (int)$zone['id_zone'], 'id_zone' => (int)$zone['id_zone'],
'price' => 0, 'price' => 0,
); );
$carrier->addDeliveryPrice($priceList); $carrier->addDeliveryPrice($price_list);
return true; return true;
} }
} }
+7 -8
View File
@@ -27,9 +27,9 @@
class RangeWeightCore extends ObjectModel class RangeWeightCore extends ObjectModel
{ {
public $id_carrier; public $id_carrier;
public $delimiter1; public $delimiter1;
public $delimiter2; public $delimiter2;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -62,7 +62,7 @@ class RangeWeightCore extends ObjectModel
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT * SELECT *
FROM `'._DB_PREFIX_.'range_weight` FROM `'._DB_PREFIX_.'range_weight`
WHERE `id_carrier` = '.(int)($id_carrier).' WHERE `id_carrier` = '.(int)$id_carrier.'
ORDER BY `delimiter1` ASC'); ORDER BY `delimiter1` ASC');
} }
@@ -80,18 +80,17 @@ class RangeWeightCore extends ObjectModel
return false; return false;
$carrier = new Carrier((int)$this->id_carrier); $carrier = new Carrier((int)$this->id_carrier);
$priceList = array(); $price_list = array();
foreach ($carrier->getZones() as $zone) foreach ($carrier->getZones() as $zone)
$priceList[] = array( $price_list[] = array(
'id_range_price' => 0, 'id_range_price' => 0,
'id_range_weight' => (int)$this->id, 'id_range_weight' => (int)$this->id,
'id_carrier' => (int)$this->id_carrier, 'id_carrier' => (int)$this->id_carrier,
'id_zone' => (int)$zone['id_zone'], 'id_zone' => (int)$zone['id_zone'],
'price' => 0, 'price' => 0,
); );
$carrier->addDeliveryPrice($priceList); $carrier->addDeliveryPrice($price_list);
return true; return true;
} }
} }
+21 -19
View File
@@ -79,9 +79,9 @@ class ReferrerCore extends ObjectModel
AND (r.http_referer_regexp_not IS NULL OR r.http_referer_regexp_not = \'\' OR cs.http_referer NOT REGEXP r.http_referer_regexp_not) AND (r.http_referer_regexp_not IS NULL OR r.http_referer_regexp_not = \'\' OR cs.http_referer NOT REGEXP r.http_referer_regexp_not)
AND (r.request_uri_regexp_not IS NULL OR r.request_uri_regexp_not = \'\' OR cs.request_uri NOT REGEXP r.request_uri_regexp_not)'; AND (r.request_uri_regexp_not IS NULL OR r.request_uri_regexp_not = \'\' OR cs.request_uri NOT REGEXP r.request_uri_regexp_not)';
public function add($autodate = true, $nullValues = false) public function add($autodate = true, $null_values = false)
{ {
if (!($result = parent::add($autodate, $nullValues))) if (!($result = parent::add($autodate, $null_values)))
return false; return false;
Referrer::refreshCache(array(array('id_referrer' => $this->id))); Referrer::refreshCache(array(array('id_referrer' => $this->id)));
Referrer::refreshIndex(array(array('id_referrer' => $this->id))); Referrer::refreshIndex(array(array('id_referrer' => $this->id)));
@@ -334,22 +334,24 @@ class ReferrerCore extends ObjectModel
if ((int)$id_product && !$stats_visits['visits'] && !$stats_sales['orders']) if ((int)$id_product && !$stats_visits['visits'] && !$stats_sales['orders'])
exit; exit;
$json_array = array(); $json_array = array(
$json_array[] = '"id_product":"'.(int)$product->id.'"'; 'id_product' => (int)$product->id,
$json_array[] = '"product_name":"'.addslashes($product->name).'"'; 'product_name' => addslashes($product->name),
$json_array[] = '"uniqs":"'.(int)$stats_visits['uniqs'].'"'; 'uniqs' => (int)$stats_visits['uniqs'],
$json_array[] = '"visitors":"'.(int)$stats_visits['visitors'].'"'; 'visitors' => (int)$stats_visits['visitors'],
$json_array[] = '"visits":"'.(int)$stats_visits['visits'].'"'; 'visits' => (int)$stats_visits['visits'],
$json_array[] = '"pages":"'.(int)$stats_visits['pages'].'"'; 'pages' => (int)$stats_visits['pages'],
$json_array[] = '"registrations":"'.(int)$registrations.'"'; 'registrations' => (int)$registrations,
$json_array[] = '"orders":"'.(int)$stats_sales['orders'].'"'; 'orders' => (int)$stats_sales['orders'],
$json_array[] = '"sales":"'.Tools::displayPrice($stats_sales['sales'], $currency).'"'; 'sales' => Tools::displayPrice($stats_sales['sales'], $currency),
$json_array[] = '"cart":"'.Tools::displayPrice(((int)$stats_sales['orders'] ? $stats_sales['sales'] / (int)$stats_sales['orders'] : 0), $currency).'"'; 'cart' => Tools::displayPrice(((int)$stats_sales['orders'] ? $stats_sales['sales'] / (int)$stats_sales['orders'] : 0), $currency),
$json_array[] = '"reg_rate":"'.number_format((int)$stats_visits['uniqs'] ? (int)$registrations / (int)$stats_visits['uniqs'] : 0, 4, '.', '').'"'; 'reg_rate' => number_format((int)$stats_visits['uniqs'] ? (int)$registrations / (int)$stats_visits['uniqs'] : 0, 4, '.', ''),
$json_array[] = '"order_rate":"'.number_format((int)$stats_visits['uniqs'] ? (int)$stats_sales['orders'] / (int)$stats_visits['uniqs'] : 0, 4, '.', '').'"'; 'order_rate' => number_format((int)$stats_visits['uniqs'] ? (int)$stats_sales['orders'] / (int)$stats_visits['uniqs'] : 0, 4, '.', ''),
$json_array[] = '"click_fee":"'.Tools::displayPrice((int)$stats_visits['visits'] * $referrer->click_fee, $currency).'"'; 'click_fee' => Tools::displayPrice((int)$stats_visits['visits'] * $referrer->click_fee, $currency),
$json_array[] = '"base_fee":"'.Tools::displayPrice($stats_sales['orders'] * $referrer->base_fee, $currency).'"'; 'base_fee' => Tools::displayPrice($stats_sales['orders'] * $referrer->base_fee, $currency),
$json_array[] = '"percent_fee":"'.Tools::displayPrice($stats_sales['sales'] * $referrer->percent_fee / 100, $currency).'"'; 'percent_fee' => Tools::displayPrice($stats_sales['sales'] * $referrer->percent_fee / 100, $currency),
die ('[{'.implode(',', $json_array).'}]'); );
die ('['.Tools::jsonEncode($json_array).']');
} }
} }
+15 -5
View File
@@ -36,7 +36,12 @@ class RijndaelCore
$this->_iv = base64_decode($iv); $this->_iv = base64_decode($iv);
} }
// Base64 is not required, but it is be more compact than urlencode /**
* Base64 is not required, but it is be more compact than urlencode
*
* @param string $plaintext
* @return bool|string
*/
public function encrypt($plaintext) public function encrypt($plaintext)
{ {
$length = (ini_get('mbstring.func_overload') & 2) ? mb_strlen($plaintext, ini_get('default_charset')) : strlen($plaintext); $length = (ini_get('mbstring.func_overload') & 2) ? mb_strlen($plaintext, ini_get('default_charset')) : strlen($plaintext);
@@ -50,15 +55,20 @@ class RijndaelCore
{ {
if (ini_get('mbstring.func_overload') & 2) if (ini_get('mbstring.func_overload') & 2)
{ {
$plainTextLength = intval(mb_substr($ciphertext, -6, 6, ini_get('default_charset'))); $length = intval(mb_substr($ciphertext, -6, 6, ini_get('default_charset')));
$ciphertext = mb_substr($ciphertext, 0, -6, ini_get('default_charset')); $ciphertext = mb_substr($ciphertext, 0, -6, ini_get('default_charset'));
return mb_substr(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->_key, base64_decode($ciphertext), MCRYPT_MODE_ECB, $this->_iv), 0, $plainTextLength, ini_get('default_charset')); return mb_substr(
mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->_key, base64_decode($ciphertext), MCRYPT_MODE_ECB, $this->_iv),
0,
$length,
ini_get('default_charset')
);
} }
else else
{ {
$plainTextLength = intval(substr($ciphertext, -6)); $length = intval(substr($ciphertext, -6));
$ciphertext = substr($ciphertext, 0, -6); $ciphertext = substr($ciphertext, 0, -6);
return substr(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->_key, base64_decode($ciphertext), MCRYPT_MODE_ECB, $this->_iv), 0, $plainTextLength); return substr(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->_key, base64_decode($ciphertext), MCRYPT_MODE_ECB, $this->_iv), 0, $length);
} }
} }
} }
+58 -47
View File
@@ -28,19 +28,19 @@
class SceneCore extends ObjectModel class SceneCore extends ObjectModel
{ {
/** @var string Name */ /** @var string Name */
public $name; public $name;
/** @var boolean Active Scene */ /** @var boolean Active Scene */
public $active = true; public $active = true;
/** @var array Zone for image map */ /** @var array Zone for image map */
public $zones = array(); public $zones = array();
/** @var array list of category where this scene is available */ /** @var array list of category where this scene is available */
public $categories = array(); public $categories = array();
/** @var array Products */ /** @var array Products */
public $products; public $products;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -59,25 +59,25 @@ class SceneCore extends ObjectModel
protected static $feature_active = null; protected static $feature_active = null;
public function __construct($id = NULL, $id_lang = NULL, $liteResult = true, $hideScenePosition = false) public function __construct($id = null, $id_lang = null, $lite_result = true, $hide_scene_position = false)
{ {
parent::__construct($id, $id_lang); parent::__construct($id, $id_lang);
if (!$liteResult) if (!$lite_result)
$this->products = $this->getProducts(true, (int)($id_lang), false); $this->products = $this->getProducts(true, (int)$id_lang, false);
if ($hideScenePosition) if ($hide_scene_position)
$this->name = Scene::hideScenePosition($this->name); $this->name = Scene::hideScenePosition($this->name);
$this->image_dir = _PS_SCENE_IMG_DIR_; $this->image_dir = _PS_SCENE_IMG_DIR_;
} }
public function update($nullValues = false) public function update($null_values = false)
{ {
if (!$this->updateZoneProducts()) if (!$this->updateZoneProducts())
return false; return false;
if (!$this->updateCategories()) if (!$this->updateCategories())
return false; return false;
if (parent::update($nullValues)) if (parent::update($null_values))
{ {
// Refresh cache of feature detachable // Refresh cache of feature detachable
Configuration::updateGlobalValue('PS_SCENE_FEATURE_ACTIVE', Scene::isCurrentlyUsed($this->def['table'], true)); Configuration::updateGlobalValue('PS_SCENE_FEATURE_ACTIVE', Scene::isCurrentlyUsed($this->def['table'], true));
@@ -87,14 +87,14 @@ class SceneCore extends ObjectModel
} }
public function add($autodate = true, $nullValues = false) public function add($autodate = true, $null_values = false)
{ {
if (!empty($this->zones)) if (!empty($this->zones))
$this->addZoneProducts($this->zones); $this->addZoneProducts($this->zones);
if (!empty($this->categories)) if (!empty($this->categories))
$this->addCategories($this->categories); $this->addCategories($this->categories);
if (parent::add($autodate, $nullValues)) if (parent::add($autodate, $null_values))
{ {
// Put cache of feature detachable only if this new scene is active else we keep the old value // Put cache of feature detachable only if this new scene is active else we keep the old value
if ($this->active) if ($this->active)
@@ -131,67 +131,73 @@ class SceneCore extends ObjectModel
public function addCategories($categories) public function addCategories($categories)
{ {
$result = true; $data = array();
foreach ($categories AS $category) foreach ($categories as $category)
{ {
if (!Db::getInstance()->execute('INSERT INTO `'._DB_PREFIX_.'scene_category` ( `id_scene` , `id_category`) VALUES ('.(int)($this->id).', '.(int)($category).')')) $data[] = array(
$result = false; 'id_scene' => (int)$this->id,
'id_category' => (int)$category,
);
} }
return $result; return Db::getInstance()->autoExecute(_DB_PREFIX_.'scene_category', $data, 'INSERT');
} }
public function deleteCategories() public function deleteCategories()
{ {
return Db::getInstance()->execute(' return Db::getInstance()->execute('
DELETE FROM `'._DB_PREFIX_.'scene_category` DELETE FROM `'._DB_PREFIX_.'scene_category`
WHERE `id_scene` = '.(int)($this->id)); WHERE `id_scene` = '.(int)$this->id);
} }
public function updateCategories() public function updateCategories()
{ {
if (!$this->deleteCategories()) if (!$this->deleteCategories())
return false; return false;
if (!empty($this->categories) AND !$this->addCategories($this->categories)) if (!empty($this->categories) && !$this->addCategories($this->categories))
return false; return false;
return true; return true;
} }
public function addZoneProducts($zones) public function addZoneProducts($zones)
{ {
$result = true; $data = array();
foreach ($zones AS $zone) foreach ($zones as $zone)
{ {
// @todo use multiple insert $data[] = array(
$sql = 'INSERT INTO `'._DB_PREFIX_.'scene_products` ( `id_scene` , `id_product` , `x_axis` , `y_axis` , `zone_width` , `zone_height`) VALUES 'id_scene' => (int)$this->id,
('.(int)($this->id).', '.(int)($zone['id_product']).', '.(int)($zone['x1']).', '.(int)($zone['y1']).', '.(int)($zone['width']).', '.(int)($zone['height']).')'; 'id_product' => (int)$zone['id_product'],
if (!Db::getInstance()->execute($sql)) 'x_axis' => (int)$zone['x1'],
$result = false; 'y_axis' => (int)$zone['y1'],
'zone_width' => (int)$zone['width'],
'zone_height' => (int)$zone['height'],
);
} }
return $result;
return Db::getInstance()->autoExecute(_DB_PREFIX_.'scene_products', $data, 'INSERT');
} }
public function deleteZoneProducts() public function deleteZoneProducts()
{ {
return Db::getInstance()->execute(' return Db::getInstance()->execute('
DELETE FROM `'._DB_PREFIX_.'scene_products` DELETE FROM `'._DB_PREFIX_.'scene_products`
WHERE `id_scene` = '.(int)($this->id)); WHERE `id_scene` = '.(int)$this->id);
} }
public function updateZoneProducts() public function updateZoneProducts()
{ {
if (!$this->deleteZoneProducts()) if (!$this->deleteZoneProducts())
return false; return false;
if ($this->zones AND !$this->addZoneProducts($this->zones)) if ($this->zones && !$this->addZoneProducts($this->zones))
return false; return false;
return true; return true;
} }
/** /**
* Get all scenes of a category * Get all scenes of a category
* *
* @return array Products * @return array Products
*/ */
public static function getScenes($id_category, $id_lang = NULL, $onlyActive = true, $liteResult = true, $hideScenePosition = true, Context $context = null) public static function getScenes($id_category, $id_lang = null, $only_active = true, $lite_result = true, $hide_scene_position = true, Context $context = null)
{ {
if (!Scene::isFeatureActive()) if (!Scene::isFeatureActive())
return array(); return array();
@@ -207,13 +213,13 @@ class SceneCore extends ObjectModel
LEFT JOIN `'._DB_PREFIX_.'scene_lang` sl ON (sl.id_scene = s.id_scene) LEFT JOIN `'._DB_PREFIX_.'scene_lang` sl ON (sl.id_scene = s.id_scene)
WHERE sc.id_category = '.(int)$id_category.' WHERE sc.id_category = '.(int)$id_category.'
AND sl.id_lang = '.(int)$id_lang AND sl.id_lang = '.(int)$id_lang
.($onlyActive ? ' AND s.active = 1' : '').' .($only_active ? ' AND s.active = 1' : '').'
ORDER BY sl.name ASC'; ORDER BY sl.name ASC';
$scenes = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql); $scenes = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
if (!$liteResult AND $scenes) if (!$lite_result && $scenes)
foreach($scenes AS &$scene) foreach ($scenes as &$scene)
$scene = new Scene($scene['id_scene'], $id_lang, false, $hideScenePosition); $scene = new Scene($scene['id_scene'], $id_lang, false, $hide_scene_position);
return $scenes; return $scenes;
} }
@@ -222,7 +228,7 @@ class SceneCore extends ObjectModel
* *
* @return array Products * @return array Products
*/ */
public function getProducts($onlyActive = true, $id_lang = NULL, $liteResult = true, Context $context = null) public function getProducts($only_active = true, $id_lang = null, $lite_result = true, Context $context = null)
{ {
if (!Scene::isFeatureActive()) if (!Scene::isFeatureActive())
return array(); return array();
@@ -235,15 +241,20 @@ class SceneCore extends ObjectModel
SELECT s.* SELECT s.*
FROM `'._DB_PREFIX_.'scene_products` s FROM `'._DB_PREFIX_.'scene_products` s
LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = s.id_product) LEFT JOIN `'._DB_PREFIX_.'product` p ON (p.id_product = s.id_product)
WHERE s.id_scene = '.(int)$this->id.($onlyActive ? ' AND p.active = 1' : '')); WHERE s.id_scene = '.(int)$this->id.($only_active ? ' AND p.active = 1' : ''));
if (!$liteResult AND $products) if (!$lite_result && $products)
foreach ($products AS &$product) foreach ($products as &$product)
{ {
$product['details'] = new Product($product['id_product'], !$liteResult, $id_lang); $product['details'] = new Product($product['id_product'], !$lite_result, $id_lang);
$product['link'] = $context->link->getProductLink($product['details']->id, $product['details']->link_rewrite, $product['details']->category, $product['details']->ean13); $product['link'] = $context->link->getProductLink(
$product['details']->id,
$product['details']->link_rewrite,
$product['details']->category,
$product['details']->ean13
);
$cover = Product::getCover($product['details']->id); $cover = Product::getCover($product['details']->id);
if(is_array($cover)) if (is_array($cover))
$product = array_merge($cover, $product); $product = array_merge($cover, $product);
} }
return $products; return $products;
@@ -260,7 +271,7 @@ class SceneCore extends ObjectModel
return Db::getInstance()->executeS(' return Db::getInstance()->executeS('
SELECT `id_category` SELECT `id_category`
FROM `'._DB_PREFIX_.'scene_category` FROM `'._DB_PREFIX_.'scene_category`
WHERE `id_scene` = '.(int)($id_scene)); WHERE `id_scene` = '.(int)$id_scene);
} }
/** /**
+10 -10
View File
@@ -44,24 +44,24 @@ class SearchEngineCore extends ObjectModel
public static function getKeywords($url) public static function getKeywords($url)
{ {
$parsedUrl = @parse_url($url); $parsed_url = @parse_url($url);
if (!isset($parsedUrl['host']) OR !isset($parsedUrl['query'])) if (!isset($parsed_url['host']) || !isset($parsed_url['query']))
return false; return false;
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `server`, `getvar` FROM `'._DB_PREFIX_.'search_engine`'); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `server`, `getvar` FROM `'._DB_PREFIX_.'search_engine`');
foreach ($result as $row) foreach ($result as $row)
{ {
$host =& $row['server']; $host =& $row['server'];
$varname =& $row['getvar']; $varname =& $row['getvar'];
if (strstr($parsedUrl['host'], $host)) if (strstr($parsed_url['host'], $host))
{ {
$kArray = array(); $array = array();
preg_match('/[^a-z]'.$varname.'=.+\&'.'/U', $parsedUrl['query'], $kArray); preg_match('/[^a-z]'.$varname.'=.+\&/U', $parsed_url['query'], $array);
if (empty($kArray[0])) if (empty($array[0]))
preg_match('/[^a-z]'.$varname.'=.+$'.'/', $parsedUrl['query'], $kArray); preg_match('/[^a-z]'.$varname.'=.+$/', $parsed_url['query'], $array);
if (empty($kArray[0])) if (empty($array[0]))
return false; return false;
$kString = urldecode(str_replace('+', ' ', ltrim(substr(rtrim($kArray[0], '&'), strlen($varname) + 1), '='))); $str = urldecode(str_replace('+', ' ', ltrim(substr(rtrim($array[0], '&'), strlen($varname) + 1), '=')));
return $kString; return $str;
} }
} }
} }
+8 -6
View File
@@ -139,7 +139,9 @@ class SpecificPriceCore extends ObjectModel
AND id_cart='.(int)$id_cart); AND id_cart='.(int)$id_cart);
} }
// score generation for quantity discount /**
* score generation for quantity discount
*/
protected static function _getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer) protected static function _getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer)
{ {
$select = '('; $select = '(';
@@ -149,7 +151,7 @@ class SpecificPriceCore extends ObjectModel
$priority = SpecificPrice::getPriority($id_product); $priority = SpecificPrice::getPriority($id_product);
foreach (array_reverse($priority) as $k => $field) foreach (array_reverse($priority) as $k => $field)
$select .= ' IF (`'.bqSQL($field).'` = '.(int)(${$field}).', '.pow(2, $k + 1).', 0) + '; $select .= ' IF (`'.bqSQL($field).'` = '.(int)$$field.', '.pow(2, $k + 1).', 0) + ';
return rtrim($select, ' +').') AS `score`'; return rtrim($select, ' +').') AS `score`';
} }
@@ -159,8 +161,8 @@ class SpecificPriceCore extends ObjectModel
if (!SpecificPrice::isFeatureActive()) if (!SpecificPrice::isFeatureActive())
return explode(';', Configuration::get('PS_SPECIFIC_PRICE_PRIORITIES')); return explode(';', Configuration::get('PS_SPECIFIC_PRICE_PRIORITIES'));
if (!isset(self::$_cache_priorities[(int)$id_product])) if (!isset(self::$_cache_priorities[(int)$id_product]))
{ {
self::$_cache_priorities[(int)$id_product] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' self::$_cache_priorities[(int)$id_product] = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `priority`, `id_specific_price_priority` SELECT `priority`, `id_specific_price_priority`
FROM `'._DB_PREFIX_.'specific_price_priority` FROM `'._DB_PREFIX_.'specific_price_priority`
@@ -251,7 +253,7 @@ class SpecificPriceCore extends ObjectModel
return array(); return array();
$now = date('Y-m-d H:i:s'); $now = date('Y-m-d H:i:s');
$res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(' $res = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT *, SELECT *,
'.SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer).' '.SpecificPrice::_getScoreQuery($id_product, $id_shop, $id_currency, $id_country, $id_group, $id_customer).'
FROM `'._DB_PREFIX_.'specific_price` FROM `'._DB_PREFIX_.'specific_price`
@@ -275,7 +277,7 @@ class SpecificPriceCore extends ObjectModel
$targeted_prices = array(); $targeted_prices = array();
$last_quantity = null; $last_quantity = null;
foreach($res as $specific_price) foreach ($res as $specific_price)
{ {
if (!isset($last_quantity)) if (!isset($last_quantity))
$last_quantity = $specific_price['from_quantity']; $last_quantity = $specific_price['from_quantity'];
+26 -11
View File
@@ -80,14 +80,25 @@ class SpecificPriceRuleCore extends ObjectModel
{ {
if (!is_array($conditions)) if (!is_array($conditions))
return; return;
if (!Db::getInstance()->Execute('INSERT INTO `'._DB_PREFIX_.'specific_price_rule_condition_group` (`id_specific_price_rule_condition_group`, `id_specific_price_rule`)
VALUES(\'\', '.(int)$this->id.')')) $result = Db::getInstance()->autoExecute(_DB_PREFIX_.'specific_price_rule_condition_group', array(
'id_specific_price_rule_condition_group' => '',
'id_specific_price_rule' => (int)$this->id
), 'INSERT');
if (!$result)
return false; return false;
$id_specific_price_rule_condition_group = (int)Db::getInstance()->Insert_ID(); $id_specific_price_rule_condition_group = (int)Db::getInstance()->Insert_ID();
foreach ($conditions as $condition) foreach ($conditions as $condition)
if (!Db::getInstance()->Execute('INSERT INTO '._DB_PREFIX_.'specific_price_rule_condition (id_specific_price_rule_condition, id_specific_price_rule_condition_group, type, value) {
VALUES(\'\', '.(int)$id_specific_price_rule_condition_group.', \''.pSQL($condition['type']).'\', \''.pSQL($condition['value']).'\')')) $result = Db::getInstance()->autoExecute(_DB_PREFIX_.'specific_price_rule_condition', array(
'id_specific_price_rule_condition' => '',
'id_specific_price_rule_condition_group' => (int)$id_specific_price_rule_condition_group,
'type' => $condition['type'],
'value' => $condition['value'],
), 'INSERT');
if (!$result)
return false; return false;
}
return true; return true;
} }
@@ -113,14 +124,18 @@ class SpecificPriceRuleCore extends ObjectModel
public function getConditions() public function getConditions()
{ {
$conditions = Db::getInstance()->executeS('SELECT sprd.* $conditions = Db::getInstance()->executeS('
FROM '._DB_PREFIX_.'specific_price_rule_condition_group sprdg SELECT g.*
LEFT JOIN '._DB_PREFIX_.'specific_price_rule_condition sprd ON (sprd.id_specific_price_rule_condition_group = sprdg.id_specific_price_rule_condition_group) FROM '._DB_PREFIX_.'specific_price_rule_condition_group g
WHERE sprdg.id_specific_price_rule='.(int)$this->id); LEFT JOIN '._DB_PREFIX_.'specific_price_rule_condition c
ON (c.id_specific_price_rule_condition_group = g.id_specific_price_rule_condition_group)
WHERE g.id_specific_price_rule='.(int)$this->id
);
$conditions_group = array(); $conditions_group = array();
if ($conditions) if ($conditions)
{ {
foreach ($conditions AS &$condition) foreach ($conditions as &$condition)
{ {
if ($condition['type'] == 'attribute') if ($condition['type'] == 'attribute')
$condition['id_attribute_group'] = Db::getInstance()->getValue('SELECT id_attribute_group $condition['id_attribute_group'] = Db::getInstance()->getValue('SELECT id_attribute_group
@@ -225,8 +240,8 @@ class SpecificPriceRuleCore extends ObjectModel
$specific_price->id_group = (int)$rule->id_group; $specific_price->id_group = (int)$rule->id_group;
$specific_price->from_quantity = (int)$rule->from_quantity; $specific_price->from_quantity = (int)$rule->from_quantity;
$specific_price->price = (int)$rule->price; $specific_price->price = (int)$rule->price;
$specific_price->reduction_type = pSQL($rule->reduction_type); $specific_price->reduction_type = $rule->reduction_type;
$specific_price->reduction = ($rule->reduction_type == 'percentage' ? (float)($rule->reduction / 100) : (float)$rule->reduction); $specific_price->reduction = ($rule->reduction_type == 'percentage' ? $rule->reduction / 100 : (float)$rule->reduction);
$specific_price->from = $rule->from; $specific_price->from = $rule->from;
$specific_price->to = $rule->to; $specific_price->to = $rule->to;
+56 -52
View File
@@ -28,19 +28,19 @@
class StateCore extends ObjectModel class StateCore extends ObjectModel
{ {
/** @var integer Country id which state belongs */ /** @var integer Country id which state belongs */
public $id_country; public $id_country;
/** @var integer Zone id which state belongs */ /** @var integer Zone id which state belongs */
public $id_zone; public $id_zone;
/** @var string 2 letters iso code */ /** @var string 2 letters iso code */
public $iso_code; public $iso_code;
/** @var string Name */ /** @var string Name */
public $name; public $name;
/** @var boolean Status for delivery */ /** @var boolean Status for delivery */
public $active = true; public $active = true;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -74,36 +74,38 @@ class StateCore extends ObjectModel
} }
/** /**
* Get a state name with its ID * Get a state name with its ID
* *
* @param integer $id_state Country ID * @param integer $id_state Country ID
* @return string State name * @return string State name
*/ */
public static function getNameById($id_state) public static function getNameById($id_state)
{ {
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
SELECT `name` SELECT `name`
FROM `'._DB_PREFIX_.'state` FROM `'._DB_PREFIX_.'state`
WHERE `id_state` = '.(int)($id_state)); WHERE `id_state` = '.(int)$id_state
);
return $result['name']; return $result['name'];
} }
/** /**
* Get a state id with its name * Get a state id with its name
* *
* @param string $id_state Country ID * @param string $id_state Country ID
* @return integer state id * @return integer state id
*/ */
public static function getIdByName($state) public static function getIdByName($state)
{ {
$result = Db::getInstance()->getRow(' $result = Db::getInstance()->getValue('
SELECT `id_state` SELECT `id_state`
FROM `'._DB_PREFIX_.'state` FROM `'._DB_PREFIX_.'state`
WHERE `name` LIKE \''.pSQL($state).'\''); WHERE `name` LIKE \''.pSQL($state).'\'
');
return ((int)($result['id_state'])); return (int)$result;
} }
/** /**
* Get a state id with its iso code * Get a state id with its iso code
@@ -112,13 +114,13 @@ class StateCore extends ObjectModel
* @return integer state id * @return integer state id
*/ */
public static function getIdByIso($iso_code) public static function getIdByIso($iso_code)
{ {
return Db::getInstance()->getValue(' return Db::getInstance()->getValue('
SELECT `id_state` SELECT `id_state`
FROM `'._DB_PREFIX_.'state` FROM `'._DB_PREFIX_.'state`
WHERE `iso_code` = \''.pSQL($iso_code).'\'' WHERE `iso_code` = \''.pSQL($iso_code).'\''
); );
} }
/** /**
* Delete a state only if is not in use * Delete a state only if is not in use
@@ -130,7 +132,7 @@ class StateCore extends ObjectModel
if (!$this->isUsed()) if (!$this->isUsed())
{ {
/* Database deletion */ /* Database deletion */
$result = Db::getInstance()->execute('DELETE FROM `'.pSQL(_DB_PREFIX_.$this->def['table']).'` WHERE `'.$this->def['primary'] .'` = '.(int)$this->id); $result = Db::getInstance()->delete(_DB_PREFIX_.$this->def['table'], '`'.$this->def['primary'].'` = '.(int)$this->id);
if (!$result) if (!$result)
return false; return false;
@@ -160,11 +162,12 @@ class StateCore extends ObjectModel
*/ */
public function countUsed() public function countUsed()
{ {
$row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT COUNT(*) AS nb_used SELECT COUNT(*)
FROM `'._DB_PREFIX_.'address` FROM `'._DB_PREFIX_.'address`
WHERE `'.$this->def['primary'].'` = '.(int)($this->id)); WHERE `'.$this->def['primary'].'` = '.(int)$this->id
return $row['nb_used']; );
return $result;
} }
public static function getStatesByIdCountry($id_country) public static function getStatesByIdCountry($id_country)
@@ -181,7 +184,7 @@ class StateCore extends ObjectModel
public static function hasCounties($id_state) public static function hasCounties($id_state)
{ {
return sizeof(County::getCounties((int)$id_state)); return count(County::getCounties((int)$id_state));
} }
public static function getIdZone($id_state) public static function getIdZone($id_state)
@@ -190,23 +193,24 @@ class StateCore extends ObjectModel
die(Tools::displayError()); die(Tools::displayError());
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT `id_zone` SELECT `id_zone`
FROM `'._DB_PREFIX_.'state` FROM `'._DB_PREFIX_.'state`
WHERE `id_state` = '.(int)($id_state)); WHERE `id_state` = '.(int)$id_state
);
} }
/** /**
* @param $ids_states * @param $ids_states
* @param $id_zone * @param $id_zone
* @return bool * @return bool
*/ */
public function affectZoneToSelection($ids_states, $id_zone) public function affectZoneToSelection($ids_states, $id_zone)
{ {
// cast every array values to int (security) // cast every array values to int (security)
$ids_states = array_map('intval', $ids_states); $ids_states = array_map('intval', $ids_states);
return Db::getInstance()->execute(' return Db::getInstance()->execute('
UPDATE `'._DB_PREFIX_.'state` SET `id_zone` = '.(int)$id_zone.' WHERE `id_state` IN ('.implode(',', $ids_states).') UPDATE `'._DB_PREFIX_.'state` SET `id_zone` = '.(int)$id_zone.' WHERE `id_state` IN ('.implode(',', $ids_states).')
'); ');
} }
} }
+19 -19
View File
@@ -28,55 +28,55 @@
class StoreCore extends ObjectModel class StoreCore extends ObjectModel
{ {
/** @var integer Country id */ /** @var integer Country id */
public $id_country; public $id_country;
/** @var integer State id */ /** @var integer State id */
public $id_state; public $id_state;
/** @var string Store name */ /** @var string Store name */
public $name; public $name;
/** @var string Address first line */ /** @var string Address first line */
public $address1; public $address1;
/** @var string Address second line (optional) */ /** @var string Address second line (optional) */
public $address2; public $address2;
/** @var string Postal code */ /** @var string Postal code */
public $postcode; public $postcode;
/** @var string City */ /** @var string City */
public $city; public $city;
/** @var float Latitude */ /** @var float Latitude */
public $latitude; public $latitude;
/** @var float Longitude */ /** @var float Longitude */
public $longitude; public $longitude;
/** @var string Store hours (PHP serialized) */ /** @var string Store hours (PHP serialized) */
public $hours; public $hours;
/** @var string Phone number */ /** @var string Phone number */
public $phone; public $phone;
/** @var string Fax number */ /** @var string Fax number */
public $fax; public $fax;
/** @var string Note */ /** @var string Note */
public $note; public $note;
/** @var string e-mail */ /** @var string e-mail */
public $email; public $email;
/** @var string Object creation date */ /** @var string Object creation date */
public $date_add; public $date_add;
/** @var string Object last modification date */ /** @var string Object last modification date */
public $date_upd; public $date_upd;
/** @var boolean Store status */ /** @var boolean Store status */
public $active = true; public $active = true;
/** /**
* @see ObjectModel::$definition * @see ObjectModel::$definition
@@ -113,10 +113,10 @@ class StoreCore extends ObjectModel
), ),
); );
public function __construct($id_store = NULL, $id_lang = NULL) public function __construct($id_store = null, $id_lang = null)
{ {
parent::__construct($id_store, $id_lang); parent::__construct($id_store, $id_lang);
$this->id_image = ($this->id AND file_exists(_PS_STORE_IMG_DIR_.(int)$this->id.'.jpg')) ? (int)$this->id : false; $this->id_image = ($this->id && file_exists(_PS_STORE_IMG_DIR_.(int)$this->id.'.jpg')) ? (int)$this->id : false;
$this->image_dir = _PS_STORE_IMG_DIR_; $this->image_dir = _PS_STORE_IMG_DIR_;
} }
+4 -4
View File
@@ -44,10 +44,10 @@ class SubDomainCore extends ObjectModel
{ {
if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `name` FROM `'._DB_PREFIX_.'subdomain`')) if (!$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT `name` FROM `'._DB_PREFIX_.'subdomain`'))
return false; return false;
$subDomains = array(); $domains = array();
foreach ($result AS $row) foreach ($result as $row)
$subDomains[] = $row['name']; $domains[] = $row['name'];
return $subDomains; return $domains;
} }
} }
+10 -5
View File
@@ -71,7 +71,7 @@ class TabCore extends ObjectModel
* - add access for admin profile * - add access for admin profile
* *
* @param boolean $autodate * @param boolean $autodate
* @param boolean $nullValues * @param boolean $null_values
* @return int id_tab * @return int id_tab
*/ */
public function add($autodate = true, $null_values = false) public function add($autodate = true, $null_values = false)
@@ -90,6 +90,7 @@ class TabCore extends ObjectModel
* *
* @todo this should not be public static but protected * @todo this should not be public static but protected
* @param int $id_tab * @param int $id_tab
* @param Context $context
* @return boolean true if succeed * @return boolean true if succeed
*/ */
public static function initAccess($id_tab, Context $context = null) public static function initAccess($id_tab, Context $context = null)
@@ -275,8 +276,10 @@ class TabCore extends ObjectModel
public static function enablingForModule($module) public static function enablingForModule($module)
{ {
$tabs = Tab::getCollectionFromModule($module); $tabs = Tab::getCollectionFromModule($module);
if (!empty($tabs)) { if (!empty($tabs))
foreach ($tabs as $tab) { {
foreach ($tabs as $tab)
{
$tab->active = 1; $tab->active = 1;
$tab->save(); $tab->save();
} }
@@ -294,8 +297,10 @@ class TabCore extends ObjectModel
public static function disablingForModule($module) public static function disablingForModule($module)
{ {
$tabs = Tab::getCollectionFromModule($module); $tabs = Tab::getCollectionFromModule($module);
if (!empty($tabs)) { if (!empty($tabs))
foreach ($tabs as $tab) { {
foreach ($tabs as $tab)
{
$tab->active = 0; $tab->active = 0;
$tab->save(); $tab->save();
} }
+6 -1
View File
@@ -195,7 +195,12 @@ class TagCore extends ObjectModel
$ids = array(); $ids = array();
foreach ($array as $id_product) foreach ($array as $id_product)
$ids[] = '('.(int)$id_product.','.(int)$this->id.')'; $ids[] = '('.(int)$id_product.','.(int)$this->id.')';
return ($result && Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'product_tag (id_product, id_tag) VALUES '.implode(',', $ids)) && Search::indexation(false));
if ($result)
{
$result &= Db::getInstance()->execute('INSERT INTO '._DB_PREFIX_.'product_tag (id_product, id_tag) VALUES '.implode(',', $ids));
$result &= Search::indexation(false);
}
} }
return $result; return $result;
} }
+6 -5
View File
@@ -54,17 +54,18 @@ class ThemeCore extends ObjectModel
/** /**
* return an array of all available theme (installed or not) * return an array of all available theme (installed or not)
* *
* @param boolean $installed * @param boolean $installed_only
* @return array string (directory) * @return array string (directory)
*/ */
public static function getAvailable($installed_only = true){ public static function getAvailable($installed_only = true)
{
static $dirlist = array(); static $dirlist = array();
$available_theme = array(); $available_theme = array();
if (empty($dirlist)) if (empty($dirlist))
{ {
$themes = scandir(_PS_ALL_THEMES_DIR_); $themes = scandir(_PS_ALL_THEMES_DIR_);
foreach ($themes AS $theme) foreach ($themes as $theme)
if (is_dir(_PS_ALL_THEMES_DIR_.DIRECTORY_SEPARATOR.$theme) && $theme[0] != '.') if (is_dir(_PS_ALL_THEMES_DIR_.DIRECTORY_SEPARATOR.$theme) && $theme[0] != '.')
$dirlist[] = $theme; $dirlist[] = $theme;
} }
@@ -72,9 +73,9 @@ class ThemeCore extends ObjectModel
if ($installed_only) if ($installed_only)
{ {
$themes = Theme::getThemes(); $themes = Theme::getThemes();
foreach($themes as $theme_obj) foreach ($themes as $theme_obj)
$themes_dir[] = $theme_obj->directory; $themes_dir[] = $theme_obj->directory;
foreach( $dirlist as $theme) foreach ($dirlist as $theme)
if (false !== array_search($theme, $themes_dir)) if (false !== array_search($theme, $themes_dir))
$available_theme[] = $theme; $available_theme[] = $theme;
} }