72 lines
2.0 KiB
PHP
72 lines
2.0 KiB
PHP
<?php
|
|
/**
|
|
* Copyright since 2007 PrestaShop SA and Contributors
|
|
* PrestaShop is an International Registered Trademark & Property of PrestaShop SA
|
|
*
|
|
* NOTICE OF LICENSE
|
|
*
|
|
* This source file is subject to the Academic Free License version 3.0
|
|
* that is bundled with this package in the file LICENSE.md.
|
|
* It is also available through the world-wide-web at this URL:
|
|
* https://opensource.org/licenses/AFL-3.0
|
|
* If you did not receive a copy of the license and are unable to
|
|
* obtain it through the world-wide-web, please send an email
|
|
* to license@prestashop.com so we can send you a copy immediately.
|
|
*
|
|
* @author PrestaShop SA and Contributors <contact@prestashop.com>
|
|
* @copyright Since 2007 PrestaShop SA and Contributors
|
|
* @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0
|
|
*/
|
|
|
|
namespace PrestaShop\Module\PsxMarketingWithGoogle\Repository;
|
|
|
|
use Db;
|
|
use DbQuery;
|
|
|
|
class StateRepository
|
|
{
|
|
/**
|
|
* @var Db
|
|
*/
|
|
private $db;
|
|
|
|
private $stateIsoCodeCache = [];
|
|
|
|
public function __construct(Db $db)
|
|
{
|
|
$this->db = $db;
|
|
}
|
|
|
|
private function getBaseQuery(): DbQuery
|
|
{
|
|
$query = new DbQuery();
|
|
|
|
$query->from('state', 's');
|
|
|
|
return $query;
|
|
}
|
|
|
|
public function getStateIsoCodesByZoneId(int $zoneId, bool $active = true): array
|
|
{
|
|
$cacheKey = $zoneId . '-' . (int) $active;
|
|
|
|
if (!isset($this->stateIsoCodeCache[$cacheKey])) {
|
|
$query = $this->getBaseQuery();
|
|
|
|
$query->select('s.iso_code');
|
|
$query->innerJoin('country', 'c', 'c.id_country = s.id_country');
|
|
$query->where('s.id_zone = ' . (int) $zoneId);
|
|
$query->where('s.active = ' . (bool) $active);
|
|
$query->where('c.active = ' . (bool) $active);
|
|
|
|
$isoCodes = [];
|
|
foreach ($this->db->executeS($query) as $state) {
|
|
$isoCodes[] = $state['iso_code'];
|
|
}
|
|
$this->stateIsoCodeCache[$cacheKey] = $isoCodes;
|
|
}
|
|
|
|
return $this->stateIsoCodeCache[$cacheKey];
|
|
}
|
|
}
|