⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.45
Server IP:
185.238.29.86
Server:
Linux server2 6.8.12-6-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-6 (2024-12-19T19:05Z) x86_64
Server Software:
nginx/1.18.0
PHP Version:
8.1.31
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
var
/
www
/
olasjoys
/
src
/
Core
/
Product
/
Search
/
View File Name :
SortOrder.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 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) */ namespace PrestaShop\PrestaShop\Core\Product\Search; use PrestaShop\PrestaShop\Core\Exception\CoreException; use PrestaShop\PrestaShop\Core\Product\Search\Exception\InvalidSortOrderDirectionException; /** * This class define in which order the list of products will be sorted. */ class SortOrder { /** * @var string the SortOrder entity */ private $entity; /** * @var string the SortOrder field */ private $field; /** * @var string the SortOrder direction */ private $direction; /** * @var string string The SortOrder label */ private $label; /** * SortOrder constructor. * * @param string $entity the SortOrder entity * @param string $field the SortOrder field * @param string $direction the SortOrder direction * * @throws InvalidSortOrderDirectionException */ public function __construct($entity, $field, $direction = 'asc') { $this ->setEntity($entity) ->setField($field) ->setDirection($direction); } /** * Will returns a new Sort Order with random direction. * * @return SortOrder * * @throws InvalidSortOrderDirectionException */ public static function random() { return new static('', '', 'random'); } /** * @return bool if true, the Sort Order direction is random */ public function isRandom() { return $this->getDirection() === 'random'; } /** * @return array the array representation of a Sort Order */ public function toArray() { return [ 'entity' => $this->entity, 'field' => $this->field, 'direction' => $this->direction, 'label' => $this->label, 'urlParameter' => $this->toString(), ]; } /** * @return string the string representation of a Sort Order */ public function toString() { return "{$this->entity}.{$this->field}.{$this->direction}"; } /** * Creates a new Sort Order from string of this kind: {entity}.{field}.{direction}. * * @param string $sortOrderConfiguration the Sort Order configuration string * * @return SortOrder * * @throws InvalidSortOrderDirectionException */ public static function newFromString($sortOrderConfiguration) { $sortParams = explode('.', $sortOrderConfiguration); if (count($sortParams) < 3) { throw new CoreException('Invalid argument'); } list($entity, $field, $direction) = $sortParams; return new static($entity, $field, $direction); } /** * @param string $label the Sort Order label * * @return $this */ public function setLabel($label) { $this->label = $label; return $this; } /** * @return string the Sort Order label */ public function getLabel() { return $this->label; } /** * @param string $entity the Sort Order entity * * @return $this */ public function setEntity($entity) { $this->entity = $entity; return $this; } /** * @return string the Sort Order entity */ public function getEntity() { return $this->entity; } /** * @param string $field the Sort Order field * * @return $this */ public function setField($field) { $this->field = $field; return $this; } /** * @return string the Sort Order field */ public function getField() { return $this->field; } /** * @param string $direction * * @return string * * @throws InvalidSortOrderDirectionException */ public function setDirection($direction) { $formattedDirection = strtolower($direction); if (!in_array($formattedDirection, ['asc', 'desc', 'random'])) { throw new InvalidSortOrderDirectionException($direction); } $this->direction = $formattedDirection; return $this->direction; } /** * @return string the Sort Order direction */ public function getDirection() { return $this->direction; } /** * @return string Returns the order way using legacy prefix */ private function getLegacyPrefix() { if ($this->entity === 'product') { if ($this->field === 'name') { return 'pl.'; } elseif ($this->field === 'position') { return 'cp.'; } elseif ($this->field === 'manufacturer_name') { $this->setField('name'); return 'm.'; } return 'p.'; } if ($this->entity === 'manufacturer') { return 'm.'; } return ''; } /** * @param bool $prefix if true, relies on legacy prefix * * @return string */ public function toLegacyOrderBy($prefix = false) { if ($prefix) { return $this->getLegacyPrefix() . $this->field; } elseif ($this->entity === 'manufacturer' && $this->field === 'name') { return 'manufacturer_name'; } else { return $this->field; } } /** * @return string the legacy order way */ public function toLegacyOrderWay() { return $this->getDirection(); } }