CustomerGroup.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\AdvancedSearch\Model\Indexer\Fulltext\Plugin;
  7. use Magento\CatalogSearch\Model\Indexer\Fulltext;
  8. use Magento\CatalogSearch\Model\Indexer\Fulltext\Plugin\AbstractPlugin;
  9. use Magento\Framework\Indexer\IndexerRegistry;
  10. use Magento\Customer\Model\ResourceModel\Group;
  11. use Magento\Framework\Model\AbstractModel;
  12. use Magento\Catalog\Model\ResourceModel\Attribute;
  13. use Magento\AdvancedSearch\Model\Client\ClientOptionsInterface;
  14. use Magento\Framework\Search\EngineResolverInterface;
  15. use Magento\Search\Model\EngineResolver;
  16. class CustomerGroup extends AbstractPlugin
  17. {
  18. /**
  19. * @var ClientOptionsInterface
  20. */
  21. protected $clientOptions;
  22. /**
  23. * @var EngineResolverInterface
  24. */
  25. protected $engineResolver;
  26. /**
  27. * @param IndexerRegistry $indexerRegistry
  28. * @param ClientOptionsInterface $clientOptions
  29. * @param EngineResolverInterface $engineResolver
  30. */
  31. public function __construct(
  32. IndexerRegistry $indexerRegistry,
  33. ClientOptionsInterface $clientOptions,
  34. EngineResolverInterface $engineResolver
  35. ) {
  36. parent::__construct($indexerRegistry);
  37. $this->clientOptions = $clientOptions;
  38. $this->engineResolver = $engineResolver;
  39. }
  40. /**
  41. * Invalidate indexer on customer group save
  42. *
  43. * @param Group $subject
  44. * @param \Closure $proceed
  45. * @param AbstractModel $group
  46. * @return Attribute
  47. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  48. */
  49. public function aroundSave(
  50. Group $subject,
  51. \Closure $proceed,
  52. AbstractModel $group
  53. ) {
  54. $needInvalidation =
  55. ($this->engineResolver->getCurrentSearchEngine() != EngineResolver::CATALOG_SEARCH_MYSQL_ENGINE)
  56. && ($group->isObjectNew() || $group->dataHasChangedFor('tax_class_id'));
  57. $result = $proceed($group);
  58. if ($needInvalidation) {
  59. $this->indexerRegistry->get(Fulltext::INDEXER_ID)->invalidate();
  60. }
  61. return $result;
  62. }
  63. }