* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License 3.0 (AFL-3.0) */ namespace PrestaShop\Module\FacetedSearch\Hook; class SpecificPrice extends AbstractHook { /** * @var array */ protected $productsBefore = null; const AVAILABLE_HOOKS = [ 'actionObjectSpecificPriceRuleUpdateBefore', 'actionAdminSpecificPriceRuleControllerSaveAfter', ]; /** * Before saving a specific price rule * * @param array $params */ public function actionObjectSpecificPriceRuleUpdateBefore(array $params) { if (empty($params['object']->id)) { return; } /** @var \SpecificPriceRule */ $specificPrice = $params['object']; $this->productsBefore = $specificPrice->getAffectedProducts(); } /** * After saving a specific price rule * * @param array $params */ public function actionAdminSpecificPriceRuleControllerSaveAfter(array $params) { if (empty($params['return']->id) || empty($this->productsBefore)) { return; } /** @var \SpecificPriceRule */ $specificPrice = $params['return']; $affectedProducts = array_merge($this->productsBefore, $specificPrice->getAffectedProducts()); foreach ($affectedProducts as $product) { $this->module->indexProductPrices($product['id_product']); $this->module->indexAttributes($product['id_product']); } $this->module->invalidateLayeredFilterBlockCache(); } }