Plugin.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\Model\Design\Config;
  7. use Magento\Framework\Event\ManagerInterface as EventManager;
  8. use Magento\Store\Model\StoreManagerInterface as StoreManager;
  9. use Magento\Theme\Model\DesignConfigRepository;
  10. use Magento\Theme\Api\Data\DesignConfigInterface;
  11. use Magento\Store\Model\ScopeInterface;
  12. class Plugin
  13. {
  14. /**
  15. * @var \Magento\Framework\Event\ManagerInterface
  16. */
  17. protected $eventManager;
  18. /**
  19. * @var \Magento\Store\Model\StoreManagerInterface
  20. */
  21. protected $storeManager;
  22. /**
  23. * @param EventManager $eventManager
  24. * @param StoreManager $storeManager
  25. */
  26. public function __construct(
  27. EventManager $eventManager,
  28. StoreManager $storeManager
  29. ) {
  30. $this->eventManager = $eventManager;
  31. $this->storeManager = $storeManager;
  32. }
  33. /**
  34. * @param DesignConfigRepository $subject
  35. * @param DesignConfigInterface $designConfig
  36. * @return DesignConfigInterface
  37. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  38. */
  39. public function afterSave(DesignConfigRepository $subject, DesignConfigInterface $designConfig)
  40. {
  41. $website = in_array($designConfig->getScope(), [ScopeInterface::SCOPE_WEBSITE, ScopeInterface::SCOPE_WEBSITES])
  42. ? $this->storeManager->getWebsite($designConfig->getScopeId())
  43. : '';
  44. $store = in_array($designConfig->getScope(), [ScopeInterface::SCOPE_STORE, ScopeInterface::SCOPE_STORES])
  45. ? $this->storeManager->getStore($designConfig->getScopeId())
  46. : '';
  47. $this->eventManager->dispatch(
  48. 'admin_system_config_changed_section_design',
  49. ['website' => $website, 'store' => $store]
  50. );
  51. return $designConfig;
  52. }
  53. /**
  54. * @param DesignConfigRepository $subject
  55. * @param DesignConfigInterface $designConfig
  56. * @return DesignConfigInterface
  57. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  58. */
  59. public function afterDelete(DesignConfigRepository $subject, DesignConfigInterface $designConfig)
  60. {
  61. $website = in_array($designConfig->getScope(), [ScopeInterface::SCOPE_WEBSITE, ScopeInterface::SCOPE_WEBSITES])
  62. ? $this->storeManager->getWebsite($designConfig->getScopeId())
  63. : '';
  64. $store = in_array($designConfig->getScope(), [ScopeInterface::SCOPE_STORE, ScopeInterface::SCOPE_STORES])
  65. ? $this->storeManager->getStore($designConfig->getScopeId())
  66. : '';
  67. $this->eventManager->dispatch(
  68. 'admin_system_config_changed_section_design',
  69. ['website' => $website, 'store' => $store]
  70. );
  71. return $designConfig;
  72. }
  73. }