Website.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Store\Model\StoreResolver;
  7. /**
  8. * Reader implementation for website.
  9. */
  10. class Website implements ReaderInterface
  11. {
  12. /**
  13. * @var \Magento\Store\Api\WebsiteRepositoryInterface
  14. */
  15. protected $websiteRepository;
  16. /**
  17. * @var \Magento\Store\Api\GroupRepositoryInterface
  18. */
  19. protected $groupRepository;
  20. /**
  21. * @var \Magento\Store\Api\StoreRepositoryInterface
  22. */
  23. protected $storeRepository;
  24. /**
  25. * @param \Magento\Store\Api\StoreRepositoryInterface $storeRepository
  26. * @param \Magento\Store\Api\WebsiteRepositoryInterface $websiteRepository
  27. * @param \Magento\Store\Api\GroupRepositoryInterface $groupRepository
  28. */
  29. public function __construct(
  30. \Magento\Store\Api\StoreRepositoryInterface $storeRepository,
  31. \Magento\Store\Api\WebsiteRepositoryInterface $websiteRepository,
  32. \Magento\Store\Api\GroupRepositoryInterface $groupRepository
  33. ) {
  34. $this->websiteRepository = $websiteRepository;
  35. $this->groupRepository = $groupRepository;
  36. $this->storeRepository = $storeRepository;
  37. }
  38. /**
  39. * @inheritdoc
  40. */
  41. public function getAllowedStoreIds($scopeCode)
  42. {
  43. $stores = [];
  44. $website = $scopeCode ? $this->websiteRepository->get($scopeCode) : $this->websiteRepository->getDefault();
  45. foreach ($this->storeRepository->getList() as $store) {
  46. if ($store->getIsActive()) {
  47. if (($scopeCode && $store->getWebsiteId() == $website->getId()) || (!$scopeCode)) {
  48. $stores[$store->getId()] = $store->getId();
  49. }
  50. }
  51. }
  52. sort($stores);
  53. return $stores;
  54. }
  55. /**
  56. * @inheritdoc
  57. */
  58. public function getDefaultStoreId($scopeCode)
  59. {
  60. $website = $scopeCode ? $this->websiteRepository->get($scopeCode) : $this->websiteRepository->getDefault();
  61. return $this->groupRepository->get($website->getDefaultGroupId())->getDefaultStoreId();
  62. }
  63. }