![]() 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/framework/Api/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\Api; use Magento\Framework\Exception\InputException; use Magento\Framework\Phrase; /** * Data object for sort order. * * @api * @since 100.0.2 */ class SortOrder extends AbstractSimpleObject { const FIELD = 'field'; const DIRECTION = 'direction'; const SORT_ASC = 'ASC'; const SORT_DESC = 'DESC'; /** * Initialize object and validate sort direction * * @param array $data * @throws InputException */ public function __construct(array $data = []) { parent::__construct($data); if (null !== $this->getDirection()) { $this->validateDirection($this->getDirection()); } if ($this->getField() !== null) { $this->validateField($this->getField()); } } /** * Get sorting field. * * @return string */ public function getField() { return $this->_get(SortOrder::FIELD); } /** * Set sorting field. * * @param string $field * @throws InputException * * @return $this */ public function setField($field) { $this->validateField($field); return $this->setData(SortOrder::FIELD, $field); } /** * Get sorting direction. * * @return string */ public function getDirection() { return $this->_get(SortOrder::DIRECTION); } /** * Set sorting direction. * * @param string $direction * @throws InputException * * @return $this */ public function setDirection($direction) { $this->validateDirection($direction); return $this->setData(SortOrder::DIRECTION, $this->normalizeDirectionInput($direction)); } /** * Validate direction argument ASC or DESC * * @param mixed $direction * @return void * @throws InputException */ private function validateDirection($direction): void { $this->validateDirectionIsString($direction); $this->validateDirectionIsAscOrDesc($direction); } /** * @param string $direction * @throws InputException * @return void */ private function validateDirectionIsString($direction): void { if (!is_string($direction)) { throw new InputException(new Phrase( 'The sort order has to be specified as a string, got %1.', [gettype($direction)] )); } } /** * @param string $direction * @throws InputException * @return void */ private function validateDirectionIsAscOrDesc($direction): void { $normalizedDirection = $this->normalizeDirectionInput($direction); if (!in_array($normalizedDirection, [SortOrder::SORT_ASC, SortOrder::SORT_DESC], true)) { throw new InputException(new Phrase( 'The sort order has to be specified as %1 for ascending order or %2 for descending order.', [SortOrder::SORT_ASC, SortOrder::SORT_DESC] )); } } /** * @param string $direction * @return string */ private function normalizeDirectionInput($direction) { return strtoupper($direction); } /** * Check if given value can be used as sorting field. * * @param string $field * @return void * @throws InputException */ private function validateField(string $field): void { if (preg_match('/[^a-z0-9\_]/i', $field)) { throw new InputException( new Phrase( 'Sort order field %1 contains restricted symbols', [$field] ) ); } } }