Example #1
0
 /**
  * Reindex on product delete
  *
  * @param \Magento\Catalog\Model\ResourceModel\Product $productResource
  * @param \Closure $proceed
  * @param \Magento\Framework\Model\AbstractModel $product
  * @return \Magento\Catalog\Model\ResourceModel\Product
  * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  */
 public function aroundDelete(\Magento\Catalog\Model\ResourceModel\Product $productResource, \Closure $proceed, \Magento\Framework\Model\AbstractModel $product)
 {
     $productResource->addCommitCallback(function () use($product) {
         $this->reindexRow($product->getEntityId());
     });
     return $proceed($product);
 }
Example #2
0
 /**
  * @param ResourceProduct $productResource
  * @param \Closure $proceed
  * @param AbstractModel $product
  * @return ResourceProduct
  * @throws \Exception
  */
 private function addCommitCallback(ResourceProduct $productResource, \Closure $proceed, AbstractModel $product)
 {
     try {
         $productResource->beginTransaction();
         $result = $proceed($product);
         $productResource->addCommitCallback(function () use($product) {
             $this->reindexRow($product->getEntityId());
         });
         $productResource->commit();
     } catch (\Exception $e) {
         $productResource->rollBack();
         throw $e;
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function addCommitCallback($callback)
 {
     $pluginInfo = $this->pluginList->getNext($this->subjectType, 'addCommitCallback');
     if (!$pluginInfo) {
         return parent::addCommitCallback($callback);
     } else {
         return $this->___callPlugins('addCommitCallback', func_get_args(), $pluginInfo);
     }
 }