![]() 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/Config/Source/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Directory\Model\Config\Source; /** * Options provider for regions list * * @api * @since 100.0.2 */ class Allregion implements \Magento\Framework\Option\ArrayInterface { /** * @var array */ protected $_countries; /** * @var array */ protected $_options; /** * @var \Magento\Directory\Model\ResourceModel\Country\CollectionFactory */ protected $_countryCollectionFactory; /** * @var \Magento\Directory\Model\ResourceModel\Region\CollectionFactory */ protected $_regionCollectionFactory; /** * @param \Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryCollectionFactory * @param \Magento\Directory\Model\ResourceModel\Region\CollectionFactory $regionCollectionFactory */ public function __construct( \Magento\Directory\Model\ResourceModel\Country\CollectionFactory $countryCollectionFactory, \Magento\Directory\Model\ResourceModel\Region\CollectionFactory $regionCollectionFactory ) { $this->_countryCollectionFactory = $countryCollectionFactory; $this->_regionCollectionFactory = $regionCollectionFactory; } /** * @param bool $isMultiselect * @return array */ public function toOptionArray($isMultiselect = false) { if (!$this->_options) { $countriesArray = $this->_countryCollectionFactory->create()->load()->toOptionArray(false); $this->_countries = []; foreach ($countriesArray as $a) { $this->_countries[$a['value']] = $a['label']; } $countryRegions = []; $regionsCollection = $this->_regionCollectionFactory->create()->load(); foreach ($regionsCollection as $region) { $countryRegions[$region->getCountryId()][$region->getId()] = $region->getDefaultName(); } uksort($countryRegions, [$this, 'sortRegionCountries']); $this->_options = []; foreach ($countryRegions as $countryId => $regions) { $regionOptions = []; foreach ($regions as $regionId => $regionName) { $regionOptions[] = ['label' => $regionName, 'value' => $regionId]; } $this->_options[] = ['label' => $this->_countries[$countryId], 'value' => $regionOptions]; } } $options = $this->_options; if (!$isMultiselect) { array_unshift($options, ['value' => '', 'label' => '']); } return $options; } /** * @param string $a * @param string $b * @return int */ public function sortRegionCountries($a, $b) { return strcmp($this->_countries[$a], $this->_countries[$b]); } }