diff --git a/modules/favoriteproducts/FavoriteProduct.php b/modules/favoriteproducts/FavoriteProduct.php index f1f4e9cf1..2ed42a4d3 100644 --- a/modules/favoriteproducts/FavoriteProduct.php +++ b/modules/favoriteproducts/FavoriteProduct.php @@ -27,45 +27,31 @@ class FavoriteProduct extends ObjectModel { - public $id; + public $id; - public $id_product; + public $id_product; - public $id_customer; + public $id_customer; - public $id_shop; + public $id_shop; - public $date_add; + public $date_add; - public $date_upd; + public $date_upd; - protected $fieldRequired = array( - 'id_product', - 'id_customer', - 'id_shop' + /** + * @see ObjectModel::$definition + */ + public static $definition = array( + 'table' => 'favorite_product', + 'primary' => 'id_favorite_product', + 'fields' => array( + 'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'id_customer' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedInt', 'required' => true), + ), ); - protected $fieldsValidate = array( - 'id_product' => 'isUnsignedInt', - 'id_customer' => 'isUnsignedInt', - 'id_shop' => 'isUnsignedInt' - ); - - protected $table = 'favorite_product'; - - protected $identifier = 'id_favorite_product'; - - public function getFields() - { - $this->validateFields(); - - $fields['id_product'] = (int)$this->id_product; - $fields['id_customer'] = (int)$this->id_customer; - $fields['id_shop'] = (int)$this->id_shop; - - return $fields; - } - public static function getFavoriteProducts($id_customer, $id_lang, Shop $shop = null) { if (!$shop) diff --git a/modules/favoriteproducts/favoriteproducts-account.php b/modules/favoriteproducts/favoriteproducts-account.php index 432f53cd9..142f45918 100644 --- a/modules/favoriteproducts/favoriteproducts-account.php +++ b/modules/favoriteproducts/favoriteproducts-account.php @@ -25,26 +25,18 @@ * International Registered Trademark & Property of PrestaShop SA */ +/** + * @deprecated 1.5.0 This file is deprecated, use moduleController instead + */ + /* SSL Management */ $useSSL = true; -require_once(dirname(__FILE__).'/../../config/config.inc.php'); -require_once(dirname(__FILE__).'/../../init.php'); +require('../../config/config.inc.php'); +Tools::displayFileAsDeprecated(); -require_once(dirname(__FILE__).'/FavoriteProduct.php'); -require_once(dirname(__FILE__).'/favoriteproducts.php'); +// init front controller in order to use Tools::redirect +$controller = new FrontController(); +$controller->init(); -if (!Context::getContext()->customer->isLogged()) - Tools::redirect('authentication.php?back=modules/favoriteproducts/favoriteproducts.php'); - -include(dirname(__FILE__).'/../../header.php'); - -if ((int)Context::getContext()->customer->id) -{ - $smarty->assign('favoriteProducts', FavoriteProduct::getFavoriteProducts((int)Context::getContext()->customer->id, (int)Context::getContext()->language->id)); - - $favoriteproducts = new FavoriteProducts(); - echo $favoriteproducts->display(dirname(__FILE__).'/favoriteproducts.php', 'favoriteproducts-account.tpl'); -} - -include(dirname(__FILE__).'/../../footer.php'); +Tools::redirect('index.php?controller=module&module=favoriteproducts&process=account'); \ No newline at end of file diff --git a/modules/favoriteproducts/favoriteproducts-account.tpl b/modules/favoriteproducts/favoriteproducts-account.tpl index d35b8a087..6b3b8dfde 100644 --- a/modules/favoriteproducts/favoriteproducts-account.tpl +++ b/modules/favoriteproducts/favoriteproducts-account.tpl @@ -25,21 +25,25 @@ *} {capture name=path}{l s='My account' mod='favoriteproducts'}{l s='My favorite products' mod='favoriteproducts'}{/capture} diff --git a/modules/favoriteproducts/favoriteproducts-ajax.php b/modules/favoriteproducts/favoriteproducts-ajax.php index da03b9311..fc8287529 100644 --- a/modules/favoriteproducts/favoriteproducts-ajax.php +++ b/modules/favoriteproducts/favoriteproducts-ajax.php @@ -25,6 +25,10 @@ * International Registered Trademark & Property of PrestaShop SA */ +/** + * @deprecated 1.5.0 This file is deprecated, use moduleController instead + */ + require_once(dirname(__FILE__).'/../../config/config.inc.php'); require_once(dirname(__FILE__).'/../../init.php'); include(dirname(__FILE__).'/FavoriteProduct.php'); diff --git a/modules/favoriteproducts/favoriteproducts-extra.tpl b/modules/favoriteproducts/favoriteproducts-extra.tpl index 0fe8650ca..b6867ee54 100644 --- a/modules/favoriteproducts/favoriteproducts-extra.tpl +++ b/modules/favoriteproducts/favoriteproducts-extra.tpl @@ -25,13 +25,14 @@ *} {if !$isCustomerFavoriteProduct AND $isLogged} diff --git a/modules/favoriteproducts/favoriteproducts.php b/modules/favoriteproducts/favoriteproducts.php index 8c27e5784..3a62a3752 100644 --- a/modules/favoriteproducts/favoriteproducts.php +++ b/modules/favoriteproducts/favoriteproducts.php @@ -90,7 +90,7 @@ class FavoriteProducts extends Module return $this->hookDisplayCustomerAccount($params); } - public function hookDisplayaLeftColumnProduct($params) + public function hookDisplayLeftColumnProduct($params) { include_once(dirname(__FILE__).'/FavoriteProduct.php'); diff --git a/modules/favoriteproducts/favoriteproductsController.php b/modules/favoriteproducts/favoriteproductsController.php new file mode 100644 index 000000000..58e048dfa --- /dev/null +++ b/modules/favoriteproducts/favoriteproductsController.php @@ -0,0 +1,109 @@ + +* @copyright 2007-2011 PrestaShop SA +* @version Release: $Revision$ +* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) +* International Registered Trademark & Property of PrestaShop SA +*/ + +/** + * @since 1.5.0 + */ +class ModuleFavoriteproductsController extends ModuleController +{ + /** + * @var int + */ + public $id_product; + + public function init() + { + parent::init(); + + require_once(dirname(__FILE__).'/FavoriteProduct.php'); + $this->id_product = (int)Tools::getValue('id_product'); + } + + public function postProcess() + { + if ($this->process == 'remove') + $this->processRemove(); + else if ($this->process == 'add') + $this->processAdd(); + } + + /** + * Remove a favorite product + */ + public function processRemove() + { + // check if product exists + $product = new Product($this->id_product); + if (!Validate::isLoadedObject($product)) + die('0'); + + $favoriteProduct = FavoriteProduct::getFavoriteProduct((int)Context::getContext()->cookie->id_customer, (int)$product->id); + if ($favoriteProduct && $favoriteProduct->delete()) + die('0'); + die(1); + } + + /** + * Add a favorite product + */ + public function processAdd() + { + $product = new Product($this->id_product); + // check if product exists + if (!Validate::isLoadedObject($product) || FavoriteProduct::isCustomerFavoriteProduct((int)Context::getContext()->cookie->id_customer, (int)$product->id)) + die('1'); + $favoriteProduct = new FavoriteProduct(); + $favoriteProduct->id_product = $product->id; + $favoriteProduct->id_customer = (int)Context::getContext()->cookie->id_customer; + $favoriteProduct->id_shop = (int)Context::getContext()->shop->getID(true); + if ($favoriteProduct->add()) + die('0'); + die(1); + } + + public function initContent() + { + parent::initContent(); + if ($this->process == 'account') + $this->assignAccount(); + } + + /** + * Prepare account page + */ + public function assignAccount() + { + if (!Context::getContext()->customer->isLogged()) + Tools::redirect('index.php?controller=auth&redirect=module&module=favoriteproducts&action=account'); + + if (Context::getContext()->customer->id) + { + $this->context->smarty->assign('favoriteProducts', FavoriteProduct::getFavoriteProducts((int)Context::getContext()->customer->id, (int)Context::getContext()->language->id)); + $this->setTemplate('favoriteproducts-account.tpl'); + } + } +} \ No newline at end of file diff --git a/modules/favoriteproducts/my-account.tpl b/modules/favoriteproducts/my-account.tpl index 75586540f..6fef216e2 100644 --- a/modules/favoriteproducts/my-account.tpl +++ b/modules/favoriteproducts/my-account.tpl @@ -24,4 +24,9 @@ * International Registered Trademark & Property of PrestaShop SA *} -
{l s='My favorite products' mod='favoriteproducts'}
+ {l s='My favorite products' mod='favoriteproducts'}
+
+