DefaultStore.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\App\FrontController\Plugin;
  7. use \Magento\Store\Model\StoreResolver\ReaderList;
  8. use \Magento\Store\Model\ScopeInterface;
  9. /**
  10. * Plugin to set default store for admin area.
  11. */
  12. class DefaultStore
  13. {
  14. /**
  15. * @var \Magento\Store\Model\StoreManagerInterface
  16. */
  17. protected $storeManager;
  18. /**
  19. * @var ReaderList
  20. */
  21. protected $readerList;
  22. /**
  23. * @var string
  24. */
  25. protected $runMode;
  26. /**
  27. * @var string
  28. */
  29. protected $scopeCode;
  30. /**
  31. * Initialize dependencies.
  32. *
  33. * @param \Magento\Store\Model\StoreManagerInterface $storeManager
  34. * @param ReaderList $readerList
  35. * @param string $runMode
  36. * @param null $scopeCode
  37. */
  38. public function __construct(
  39. \Magento\Store\Model\StoreManagerInterface $storeManager,
  40. ReaderList $readerList,
  41. $runMode = ScopeInterface::SCOPE_STORE,
  42. $scopeCode = null
  43. ) {
  44. $this->runMode = $scopeCode ? $runMode : ScopeInterface::SCOPE_WEBSITE;
  45. $this->scopeCode = $scopeCode;
  46. $this->readerList = $readerList;
  47. $this->storeManager = $storeManager;
  48. }
  49. /**
  50. * Set current store for admin area
  51. *
  52. * @param \Magento\Framework\App\FrontController $subject
  53. * @param \Magento\Framework\App\RequestInterface $request
  54. * @return void
  55. *
  56. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  57. */
  58. public function beforeDispatch(
  59. \Magento\Framework\App\FrontController $subject,
  60. \Magento\Framework\App\RequestInterface $request
  61. ) {
  62. $reader = $this->readerList->getReader($this->runMode);
  63. $defaultStoreId = $reader->getDefaultStoreId($this->scopeCode);
  64. $this->storeManager->setCurrentStore($defaultStoreId);
  65. }
  66. }