CatalogAttributeSaveAfterObserver.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\SalesRule\Observer;
  7. use Magento\Framework\Event\Observer as EventObserver;
  8. use Magento\Framework\Event\ObserverInterface;
  9. class CatalogAttributeSaveAfterObserver implements ObserverInterface
  10. {
  11. /**
  12. * @var \Magento\SalesRule\Observer\CheckSalesRulesAvailability
  13. */
  14. protected $checkSalesRulesAvailability;
  15. /**
  16. * @param CheckSalesRulesAvailability $checkSalesRulesAvailability
  17. */
  18. public function __construct(
  19. \Magento\SalesRule\Observer\CheckSalesRulesAvailability $checkSalesRulesAvailability
  20. ) {
  21. $this->checkSalesRulesAvailability = $checkSalesRulesAvailability;
  22. }
  23. /**
  24. * After save attribute if it is not used for promo rules already check rules for containing this attribute
  25. *
  26. * @param EventObserver $observer
  27. * @return $this
  28. */
  29. public function execute(EventObserver $observer)
  30. {
  31. $attribute = $observer->getEvent()->getAttribute();
  32. if ($attribute->dataHasChangedFor('is_used_for_promo_rules') && !$attribute->getIsUsedForPromoRules()) {
  33. $this->checkSalesRulesAvailability->checkSalesRulesAvailability($attribute->getAttributeCode());
  34. }
  35. return $this;
  36. }
  37. }