/
home
/
sharedstore
/
public_html
/
prestashop.sharedstore.ma
/
src
/
Core
/
Grid
/
Query
/
/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Core/Grid/Query
mkdir
upload
Name
Size
Mode
Actions
Filter/
-
0755
rm
Monitoring/
-
0755
rm
Security/
-
0755
rm
AbstractDoctrineQueryBuilder.php
2045
0644
edit
dl
rm
AddressQueryBuilder.php
5602
0644
edit
dl
rm
AttachmentQueryBuilder.php
5573
0644
edit
dl
rm
AttributeGroupQueryBuilder.php
6756
0644
edit
dl
rm
AttributeQueryBuilder.php
6564
0644
edit
dl
rm
AuthorizedApplicationQueryBuilder.php
4315
0644
edit
dl
rm
CarrierQueryBuilder.php
5543
0644
edit
dl
rm
CartRuleQueryBuilder.php
5483
0644
edit
dl
rm
CatalogPriceRuleQueryBuilder.php
8039
0644
edit
dl
rm
CategoryQueryBuilder.php
8158
0644
edit
dl
rm
CmsPageCategoryQueryBuilder.php
6881
0644
edit
dl
rm
CmsPageQueryBuilder.php
6367
0644
edit
dl
rm
ContactQueryBuilder.php
4480
0644
edit
dl
rm
CountryQueryBuilder.php
5710
0644
edit
dl
rm
CreditSlipQueryBuilder.php
5088
0644
edit
dl
rm
CurrencyQueryBuilder.php
5199
0644
edit
dl
rm
CustomerAddressQueryBuilder.php
5725
0644
edit
dl
rm
CustomerQueryBuilder.php
9285
0644
edit
dl
rm
CustomerThreadQueryBuilder.php
7810
0644
edit
dl
rm
DoctrineQueryBuilderInterface.php
1878
0644
edit
dl
rm
DoctrineQueryParser.php
3343
0644
edit
dl
rm
DoctrineSearchCriteriaApplicator.php
2312
0644
edit
dl
rm
DoctrineSearchCriteriaApplicatorInterface.php
1983
0644
edit
dl
rm
EmailLogsQueryBuilder.php
3970
0644
edit
dl
rm
EmployeeQueryBuilder.php
6092
0644
edit
dl
rm
LanguageQueryBuilder.php
4042
0644
edit
dl
rm
LogQueryBuilder.php
7423
0644
edit
dl
rm
ManufacturerAddressQueryBuilder.php
5222
0644
edit
dl
rm
ManufacturerQueryBuilder.php
5011
0644
edit
dl
rm
MerchandiseReturnQueryBuilder.php
6117
0644
edit
dl
rm
MetaQueryBuilder.php
4663
0644
edit
dl
rm
OrderMessageQueryBuilder.php
4560
0644
edit
dl
rm
OrderQueryBuilder.php
9817
0644
edit
dl
rm
OrderReturnStatesQueryBuilder.php
5632
0644
edit
dl
rm
OrderStatesQueryBuilder.php
5929
0644
edit
dl
rm
OutstandingQueryBuilder.php
7340
0644
edit
dl
rm
ProductCombinationQueryBuilder.php
9236
0644
edit
dl
rm
ProductLightQueryBuilder.php
3177
0644
edit
dl
rm
ProductQueryBuilder.php
14349
0644
edit
dl
rm
ProductShopsQueryBuilder.php
3673
0644
edit
dl
rm
ProfileQueryBuilder.php
3933
0644
edit
dl
rm
QueryParserInterface.php
1433
0644
edit
dl
rm
RequestSqlQueryBuilder.php
3538
0644
edit
dl
rm
SearchEngineQueryBuilder.php
4561
0644
edit
dl
rm
StateQueryBuilder.php
5258
0644
edit
dl
rm
SupplierQueryBuilder.php
7371
0644
edit
dl
rm
TaxQueryBuilder.php
4535
0644
edit
dl
rm
TaxRulesGroupQueryBuilder.php
4851
0644
edit
dl
rm
TitleQueryBuilder.php
4440
0644
edit
dl
rm
WebserviceKeyQueryBuilder.php
5143
0644
edit
dl
rm
ZoneQueryBuilder.php
4468
0644
edit
dl
rm
Edit:
/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Core/Grid/Query/CarrierQueryBuilder.php
(5543B)
<?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 Open Software License (OSL 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/OSL-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. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ declare(strict_types=1); namespace PrestaShop\PrestaShop\Core\Grid\Query; use Doctrine\DBAL\Connection; use Doctrine\DBAL\Query\QueryBuilder; use PrestaShop\PrestaShop\Core\Grid\Search\SearchCriteriaInterface; /** * Provides SQL for carriers listing. */ final class CarrierQueryBuilder extends AbstractDoctrineQueryBuilder { private const ALLOWED_FILTERS = [ 'id_carrier', 'name', 'delay', 'active', 'is_free', 'position', ]; /** * @var DoctrineSearchCriteriaApplicatorInterface */ private $searchCriteriaApplicator; /** * @var string */ private $contextIdLang; /** * @var int[] */ private $contextShopIds; /** * @param Connection $connection * @param string $dbPrefix * @param DoctrineSearchCriteriaApplicatorInterface $searchCriteriaApplicator * @param string $contextIdLang * @param array $contextShopIds */ public function __construct( Connection $connection, string $dbPrefix, DoctrineSearchCriteriaApplicatorInterface $searchCriteriaApplicator, string $contextIdLang, array $contextShopIds ) { parent::__construct($connection, $dbPrefix); $this->searchCriteriaApplicator = $searchCriteriaApplicator; $this->contextIdLang = $contextIdLang; $this->contextShopIds = $contextShopIds; } /** * {@inheritdoc} */ public function getSearchQueryBuilder(SearchCriteriaInterface $searchCriteria) { $qb = $this->getCarrierQueryBuilder($searchCriteria) ->select('c.id_carrier, c.name, cl.delay, c.active, c.is_free, c.position') ->groupBy('c.id_carrier'); $this->searchCriteriaApplicator ->applyPagination($searchCriteria, $qb) ->applySorting($searchCriteria, $qb); return $qb; } /** * {@inheritdoc} */ public function getCountQueryBuilder(SearchCriteriaInterface $searchCriteria) { return $this->getCarrierQueryBuilder($searchCriteria) ->select('COUNT(DISTINCT c.id_carrier)'); } private function getCarrierQueryBuilder(SearchCriteriaInterface $searchCriteria): QueryBuilder { $qb = $this->connection->createQueryBuilder() ->from($this->dbPrefix . 'carrier', 'c') ->innerJoin('c', $this->dbPrefix . 'carrier_lang', 'cl', 'c.id_carrier = cl.id_carrier') ->innerJoin('c', $this->dbPrefix . 'carrier_shop', 'cs', 'c.id_carrier = cs.id_carrier') ->andWhere('cl.id_lang = :contextIdLang') ->andWhere('cs.id_shop IN (:contextShopIds)') ->andWhere('cl.id_shop IN (:contextShopIds)') ->andWhere('c.deleted = 0') ->setParameter('contextShopIds', $this->contextShopIds, Connection::PARAM_INT_ARRAY) ->setParameter('contextIdLang', $this->contextIdLang); $this->applyFilters($qb, $searchCriteria->getFilters()); return $qb; } private function applyFilters(QueryBuilder $qb, array $filters): void { foreach ($filters as $filterName => $filterValue) { if (!in_array($filterName, self::ALLOWED_FILTERS)) { continue; } if ($filterName === 'name') { $qb->andWhere('c.name LIKE :name'); $qb->setParameter($filterName, '%' . $filterValue . '%'); continue; } if ($filterName === 'delay') { $qb->andWhere('cl.delay LIKE :delay'); $qb->setParameter($filterName, '%' . $filterValue . '%'); continue; } if ($filterName === 'position') { // When filtering by position, // value must be decreased by 1, // since position value in database starts at 0, // but for user display positions are increased by 1. if (is_numeric($filterValue)) { --$filterValue; } else { $filterValue = null; } $qb->andWhere('c.position = :position'); $qb->setParameter($filterName, $filterValue); continue; } $qb->andWhere('c.' . $filterName . ' = :' . $filterName); $qb->setParameter($filterName, $filterValue); } } }
Save
cmd:
run