![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-directory/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Directory\Model; use Magento\Framework\Exception\NoSuchEntityException; /** * Currency information acquirer class */ class CountryInformationAcquirer implements \Magento\Directory\Api\CountryInformationAcquirerInterface { /** * @var \Magento\Directory\Model\Data\CountryInformationFactory */ protected $countryInformationFactory; /** * @var \Magento\Directory\Model\Data\RegionInformationFactory */ protected $regionInformationFactory; /** * @var \Magento\Directory\Helper\Data */ protected $directoryHelper; /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $scopeConfig; /** * @var \Magento\Store\Model\StoreManagerInterface */ protected $storeManager; /** * @param \Magento\Directory\Model\Data\CountryInformationFactory $countryInformationFactory * @param \Magento\Directory\Model\Data\RegionInformationFactory $regionInformationFactory * @param \Magento\Directory\Helper\Data $directoryHelper * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Store\Model\StoreManagerInterface $storeManager */ public function __construct( \Magento\Directory\Model\Data\CountryInformationFactory $countryInformationFactory, \Magento\Directory\Model\Data\RegionInformationFactory $regionInformationFactory, \Magento\Directory\Helper\Data $directoryHelper, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Store\Model\StoreManagerInterface $storeManager ) { $this->countryInformationFactory = $countryInformationFactory; $this->regionInformationFactory = $regionInformationFactory; $this->directoryHelper = $directoryHelper; $this->scopeConfig = $scopeConfig; $this->storeManager = $storeManager; } /** * {@inheritdoc} */ public function getCountriesInfo() { $countriesInfo = []; /** @var \Magento\Store\Model\Store $store */ $store = $this->storeManager->getStore(); $storeLocale = $this->scopeConfig->getValue( 'general/locale/code', \Magento\Store\Model\ScopeInterface::SCOPE_STORES, $store->getCode() ); $countries = $this->directoryHelper->getCountryCollection($store); $regions = $this->directoryHelper->getRegionData(); foreach ($countries as $data) { $countryInfo = $this->setCountryInfo($data, $regions, $storeLocale); $countriesInfo[] = $countryInfo; } return $countriesInfo; } /** * {@inheritdoc} */ public function getCountryInfo($countryId) { $store = $this->storeManager->getStore(); $storeLocale = $this->scopeConfig->getValue( 'general/locale/code', \Magento\Store\Model\ScopeInterface::SCOPE_STORES, $store->getCode() ); $countriesCollection = $this->directoryHelper->getCountryCollection($store)->load(); $regions = $this->directoryHelper->getRegionData(); $country = $countriesCollection->getItemById($countryId); if (!$country) { throw new NoSuchEntityException( __( "The country isn't available." ) ); } $countryInfo = $this->setCountryInfo($country, $regions, $storeLocale); return $countryInfo; } /** * Creates and initializes the information for \Magento\Directory\Model\Data\CountryInformation * * @param \Magento\Directory\Model\ResourceModel\Country $country * @param array $regions * @param string $storeLocale * @return \Magento\Directory\Model\Data\CountryInformation */ protected function setCountryInfo($country, $regions, $storeLocale) { $countryId = $country->getCountryId(); $countryInfo = $this->countryInformationFactory->create(); $countryInfo->setId($countryId); $countryInfo->setTwoLetterAbbreviation($country->getData('iso2_code')); $countryInfo->setThreeLetterAbbreviation($country->getData('iso3_code')); $countryInfo->setFullNameLocale($country->getName($storeLocale)); $countryInfo->setFullNameEnglish($country->getName('en_US')); if (array_key_exists($countryId, $regions)) { $regionsInfo = []; foreach ($regions[$countryId] as $id => $regionData) { $regionInfo = $this->regionInformationFactory->create(); $regionInfo->setId($id); $regionInfo->setCode($regionData['code']); $regionInfo->setName($regionData['name']); $regionsInfo[] = $regionInfo; } $countryInfo->setAvailableRegions($regionsInfo); } return $countryInfo; } }