Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
Options.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
19 
23 class Options implements OptionInterface
24 {
30  private $state;
31 
37  private $availableLocales;
38 
44  private $design;
45 
51  private $localeLists;
52 
56  private $deploymentConfig;
57 
65  public function __construct(
66  ListsInterface $localeLists,
67  State $state,
68  AvailableLocalesInterface $availableLocales,
69  DesignInterface $design,
70  DeploymentConfig $deploymentConfig = null
71  ) {
72  $this->localeLists = $localeLists;
73  $this->state = $state;
74  $this->availableLocales = $availableLocales;
75  $this->design = $design;
76  $this->deploymentConfig = $deploymentConfig ?: ObjectManager::getInstance()->get(DeploymentConfig::class);
77  }
78 
82  public function getOptionLocales(): array
83  {
84  return $this->filterLocales($this->localeLists->getOptionLocales());
85  }
86 
90  public function getTranslatedOptionLocales(): array
91  {
92  return $this->filterLocales($this->localeLists->getTranslatedOptionLocales());
93  }
94 
129  private function filterLocales(array $locales): array
130  {
131  if ($this->state->getMode() != State::MODE_PRODUCTION
132  || $this->deploymentConfig->getConfigData(Constants::CONFIG_PATH_SCD_ON_DEMAND_IN_PRODUCTION)) {
133  return $locales;
134  }
135 
136  $theme = $this->design->getDesignTheme();
137  try {
138  $availableLocales = $this->availableLocales->getList($theme->getCode(), $theme->getArea());
139  } catch (LocalizedException $e) {
140  $availableLocales = [];
141  }
142 
143  return array_filter($locales, function ($localeData) use ($availableLocales) {
144  return in_array($localeData['value'], $availableLocales);
145  });
146  }
147 }
__construct(ListsInterface $localeLists, State $state, AvailableLocalesInterface $availableLocales, DesignInterface $design, DeploymentConfig $deploymentConfig=null)
Definition: Options.php:65
$locales
Definition: locales.php:14
$theme