12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\CatalogInventory\Model\Plugin;
- use Magento\CatalogInventory\Model\ResourceModel\Stock\Item;
- use Magento\Catalog\Model\Indexer\Product\Price\Processor;
- use Magento\Framework\Model\AbstractModel;
- /**
- * Update product price index after product stock status changed.
- */
- class PriceIndexUpdater
- {
- /**
- * @var Processor
- */
- private $priceIndexProcessor;
- /**
- * @param Processor $priceIndexProcessor
- */
- public function __construct(Processor $priceIndexProcessor)
- {
- $this->priceIndexProcessor = $priceIndexProcessor;
- }
- /**
- * @param Item $subject
- * @param Item $result
- * @param AbstractModel $model
- * @return Item
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function afterSave(Item $subject, Item $result, AbstractModel $model): Item
- {
- $fields = [
- 'is_in_stock',
- 'use_config_manage_stock',
- 'manage_stock',
- ];
- foreach ($fields as $field) {
- if ($model->dataHasChangedFor($field)) {
- $this->priceIndexProcessor->reindexRow($model->getProductId());
- break;
- }
- }
- return $result;
- }
- /**
- * @param Item $subject
- * @param mixed $result
- * @param int $websiteId
- * @return void
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function afterUpdateSetOutOfStock(Item $subject, $result, int $websiteId)
- {
- $this->priceIndexProcessor->markIndexerAsInvalid();
- }
- /**
- * @param Item $subject
- * @param mixed $result
- * @param int $websiteId
- * @return void
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function afterUpdateSetInStock(Item $subject, $result, int $websiteId)
- {
- $this->priceIndexProcessor->markIndexerAsInvalid();
- }
- }
|