![]() 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/ResourceModel/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Directory\Model\ResourceModel; /** * Region Resource Model * * @api * @since 100.0.2 */ class Region extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb { /** * Table with localized region names * * @var string */ protected $_regionNameTable; /** * @var \Magento\Framework\Locale\ResolverInterface */ protected $_localeResolver; /** * @param \Magento\Framework\Model\ResourceModel\Db\Context $context * @param \Magento\Framework\Locale\ResolverInterface $localeResolver * @param string $connectionName */ public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context, \Magento\Framework\Locale\ResolverInterface $localeResolver, $connectionName = null ) { parent::__construct($context, $connectionName); $this->_localeResolver = $localeResolver; } /** * Define main and locale region name tables * * @return void */ protected function _construct() { $this->_init('directory_country_region', 'region_id'); $this->_regionNameTable = $this->getTable('directory_country_region_name'); } /** * Retrieve select object for load object data * * @param string $field * @param mixed $value * @param \Magento\Framework\Model\AbstractModel $object * @return \Magento\Framework\DB\Select */ protected function _getLoadSelect($field, $value, $object) { $select = parent::_getLoadSelect($field, $value, $object); $connection = $this->getConnection(); $locale = $this->_localeResolver->getLocale(); $systemLocale = \Magento\Framework\AppInterface::DISTRO_LOCALE_CODE; $regionField = $connection->quoteIdentifier($this->getMainTable() . '.' . $this->getIdFieldName()); $condition = $connection->quoteInto('lrn.locale = ?', $locale); $select->joinLeft( ['lrn' => $this->_regionNameTable], "{$regionField} = lrn.region_id AND {$condition}", [] ); if ($locale != $systemLocale) { $nameExpr = $connection->getCheckSql('lrn.region_id is null', 'srn.name', 'lrn.name'); $condition = $connection->quoteInto('srn.locale = ?', $systemLocale); $select->joinLeft( ['srn' => $this->_regionNameTable], "{$regionField} = srn.region_id AND {$condition}", ['name' => $nameExpr] ); } else { $select->columns(['name'], 'lrn'); } return $select; } /** * Load object by country id and code or default name * * @param \Magento\Framework\Model\AbstractModel $object * @param int $countryId * @param string $value * @param string $field * @return $this */ protected function _loadByCountry($object, $countryId, $value, $field) { $connection = $this->getConnection(); $locale = $this->_localeResolver->getLocale(); $joinCondition = $connection->quoteInto('rname.region_id = region.region_id AND rname.locale = ?', $locale); $select = $connection->select()->from( ['region' => $this->getMainTable()] )->joinLeft( ['rname' => $this->_regionNameTable], $joinCondition, ['name'] )->where( 'region.country_id = ?', $countryId )->where( "region.{$field} = ?", $value ); $data = $connection->fetchRow($select); if ($data) { $object->setData($data); } $this->_afterLoad($object); return $this; } /** * Loads region by region code and country id * * @param \Magento\Directory\Model\Region $region * @param string $regionCode * @param string $countryId * * @return $this */ public function loadByCode(\Magento\Directory\Model\Region $region, $regionCode, $countryId) { return $this->_loadByCountry($region, $countryId, (string)$regionCode, 'code'); } /** * Load data by country id and default region name * * @param \Magento\Directory\Model\Region $region * @param string $regionName * @param string $countryId * @return $this */ public function loadByName(\Magento\Directory\Model\Region $region, $regionName, $countryId) { return $this->_loadByCountry($region, $countryId, (string)$regionName, 'default_name'); } }