* @copyright 2007-2011 PrestaShop SA * @version Release: $Revision: 9643 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ class CompareProductCore extends ObjectModel { public $id_compare; public $id_customer; public $date_add; public $date_upd; protected $fieldRequired = array( 'id_compare', 'id_customer'); protected $fieldsValidate = array( 'id_compare' => 'isUnsignedInt', 'id_customer' => 'isUnsignedInt' ); protected $table = 'compare'; protected $identifier = 'id_compare'; /** * Get all comapare products of the customer * @param int $id_customer * @return array */ public static function getCompareProducts($id_compare) { $results = Db::getInstance()->ExecuteS(' SELECT DISTINCT `id_product` FROM `'._DB_PREFIX_.'compare` c LEFT JOIN `'._DB_PREFIX_.'compare_product` cp ON (cp.`id_compare` = c.`id_compare`) WHERE cp.`id_compare` = '.(int)($id_compare)); $compareProducts = null; if ($results) foreach ($results as $result) $compareProducts[] = $result['id_product']; return $compareProducts; } /** * Add a compare product for the customer * @param int $id_customer, int $id_product * @return boolean */ public static function addCompareProduct($id_compare, $id_product) { global $cookie; if (!$id_compare) { $id_customer = false; if (isset($cookie->id_customer)) $id_customer = $cookie->id_customer; $sql = Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'compare` (`id_compare`, `id_customer`) VALUES (NULL, "'.($id_customer ? $id_customer: '0').'")'); if ($sql) { $id_compare = Db::getInstance()->getValue('SELECT MAX(`id_compare`) FROM `'._DB_PREFIX_.'compare`'); $cookie->id_compare = $id_compare; } } return Db::getInstance()->Execute(' INSERT INTO `'._DB_PREFIX_.'compare_product` (`id_compare`, `id_product`, `date_add`, `date_upd`) VALUES ('.(int)($id_compare).', '.(int)($id_product).', NOW(), NOW())'); } /** * Remove a compare product for the customer * @param int $id_compare, int $id_product * @return boolean */ public static function removeCompareProduct($id_compare, $id_product) { return Db::getInstance()->Execute(' DELETE cp FROM `'._DB_PREFIX_.'compare_product` cp, `'._DB_PREFIX_.'compare` c WHERE cp.`id_compare`=c.`id_compare` AND cp.`id_product` = '.(int)($id_product).' AND c.`id_compare` = '.(int)$id_compare); } /** * Get the number of compare products of the customer * @param int $id_compare * @return int */ public static function getNumberProducts($id_compare) { return (int)(Db::getInstance()->getValue(' SELECT count(`id_compare`) FROM `'._DB_PREFIX_.'compare_product` WHERE `id_compare` = '.(int)($id_compare))); } /** * Clean entries which are older than the period * @param string $period * @return void */ public static function cleanCompareProducts($period = 'week') { if ($period === 'week') $interval = '1 WEEK'; elseif ($period === 'month') $interval = '1 MONTH'; elseif ($period === 'year') $interval = '1 YEAR'; else return; if ($interval != null) { Db::getInstance()->Execute(' DELETE cp, c FROM `'._DB_PREFIX_.'compare_product` cp, `'._DB_PREFIX_.'compare` c WHERE cp.date_upd < DATE_SUB(NOW(), INTERVAL 1 WEEK) AND c.`id_compare`=cp.`id_compare`'); } } /** * Get the id_compare by id_customer * @param integer $id_customer * @return integer $id_compare */ public static function getIdCompareByIdCustomer($id_customer) { return (int)Db::getInstance()->getValue(' SELECT `id_compare` FROM `'._DB_PREFIX_.'compare` WHERE `id_customer`= '.(int)$id_customer); } }