Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/lib/controller/action/entity/ |
Upload File : |
<?php namespace Bitrix\Sale\Controller\Action\Entity; use Bitrix\Main; use Bitrix\Sale; use Bitrix\Rest; /** * Class BaseAction * @package Bitrix\Sale\Controller\Action\Entity */ class BaseAction extends Main\Engine\Action { /** * @return bool */ protected function onBeforeRun() { $checkPermissionResult = $this->checkPermission(); if (!$checkPermissionResult->isSuccess()) { $this->addErrors($checkPermissionResult->getErrors()); return false; } $arguments = $this->getArguments(); $checkCaseArgumentsResult = $this->checkArguments($arguments); if (!$checkCaseArgumentsResult->isSuccess()) { $this->addErrors($checkCaseArgumentsResult->getErrors()); return false; } // convert keys $converter = new Main\Engine\Response\Converter( Main\Engine\Response\Converter::KEYS | Main\Engine\Response\Converter::RECURSIVE | Main\Engine\Response\Converter::TO_SNAKE | Main\Engine\Response\Converter::TO_SNAKE_DIGIT | Main\Engine\Response\Converter::TO_UPPER ); $arguments = $converter->process($arguments); $this->setArguments($arguments); return parent::onBeforeRun(); } private function checkPermission(): Sale\Result { $result = new Sale\Result(); try { Sale\Helpers\Rest\AccessChecker::checkAccessPermission(); } catch (Rest\AccessException $ex) { $result->addError( new Main\Error( $ex->getMessage(), Sale\Controller\ErrorEnumeration::BASE_ACTION_ACCESS_DENIED ) ); } return $result; } private function checkArguments(array $arguments): Sale\Result { $result = new Sale\Result(); $checkCaseOfKeysResult = $this->checkCaseOfKeys($arguments); if (!$checkCaseOfKeysResult->isSuccess()) { $result->addErrors($checkCaseOfKeysResult->getErrors()); } return $result; } private function checkCaseOfKeys(array $fields): Sale\Result { $result = new Sale\Result(); static $count = 0; foreach ($fields as $key => $value) { if (\is_int($key)) { continue; } if (mb_strtoupper($key) === $key) { $result->addError( new Main\Error( "key \"{$key}\" has UPPERCASE notation. Use lowerCamelCase notation", Sale\Controller\ErrorEnumeration::BASE_ACTION_UPPERCASE_KEY + $count ) ); $count++; } if (\is_array($value)) { $internalCheckResult = $this->checkCaseOfKeys($value); if (!$internalCheckResult->isSuccess()) { $result->addErrors($internalCheckResult->getErrors()); } } } return $result; } public function runWithSourceParametersList() { $result = parent::runWithSourceParametersList(); if ($this->errorCollection->isEmpty()) { if (\is_array($result) && Main\Loader::includeModule('rest')) { $result = Rest\Integration\Externalizer::multiSortKeysArray($result); } return Main\Engine\Response\Converter::toJson()->process($result); } return $result; } protected function filterBasketFieldsOnAdd(array $basketFields): array { return (new Sale\Rest\Entity\BasketItem())->internalizeFieldsAdd($basketFields); } protected function filterBasketFieldsOnUpdate(array $basketFields): array { return (new Sale\Rest\Entity\BasketItem())->internalizeFieldsUpdate($basketFields); } }