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/wbs24.ozonapinew/lib/ |
Upload File : |
<?php namespace Wbs24\Ozonapinew; use Bitrix\Main\Localization\Loc; use Bitrix\Main\SystemException; class StorageMessages { use Exception; // trait public function __construct($objects = []) { $this->main = $objects['Main'] ?? new Main(); $this->Wrappers = $objects['Wrappers'] ?? new Wrappers(); $this->moduleId = $this->main->getModuleId(); $this->suffix = strtoupper($this->moduleId); Loc::loadMessages(__FILE__); # TODO - выяснить позже почему не работает } const ERROR_MESSAGES = [ // STOCKS 'OVER_MAX_OVH_NON_KGT' => [], # описано 'PRODUCT_IS_NOT_CREATED' => [], # описано 'OFFER_ID_NOT_FOUND' => [], # описано 'FLAMMABLE_ONLY_ON_SELF_OR_PROVIDER_DELIVERY' => [], # описано 'WAREHOUSE_NOT_FOUND' => [], # описано 'PRODUCT_HAS_NOT_BEEN_TAGGED_YET' => [], # описано 'NON_KGT_ON_KGT_WAREHOUSE' => [], # описано 'PRICE_IS_NOT_SENT' => [], # описано 'MP_DELIVERY_ONLY_3PL_ERROR' => [], # описано 'MULTIBOX_NOT_ALLOWED_FOR_FBS' => [], # описано 'OVER_MAX_OVH_KGT' => [], # описано 'SOURCE_TYPE_NOT_FOUND' => [], # описано 'STOCK_TOO_BIG' => [], # описано 'FLAMMABLE_ON_NON_KGT_WAREHOUSE' => [], # описано // PRICES 'VALIDATION' => [ 'value of MinPrice must be less or equals than Price' => 'MIN_PRICE_MUST_BE_LESS_OR_EQUALS_THAN_PRICE', # описано ], 'INVALID_CATEGORY_PRICE' => [], # описано 'DISCOUNT_FOR_AVERAGE_PRICE_IS_TOO_SMALL' => [], # описано 'DISCOUNT_FOR_LOW_PRICE_IS_TOO_SMALL' => [], # описано 'DISCOUNT_TOO_BIG' => [], # описано 'DISCOUNT_FOR_TOP_PRICE_IS_TOO_SMALL' => [], # описано 'PRICE_NEGATIVE' => [], # описано // ОБЩИЕ ОШИБКИ 'NOT_FOUND_ERROR' => [], # описано 'TOO_MANY_REQUESTS' => [], # описано ]; public function prepareCodesToMessages($errorCodesToMessages) { foreach ($errorCodesToMessages as $code => $message) { if (array_key_exists($code, self::ERROR_MESSAGES)) { $newCode = $code; $newMessage = $this->getDetailDescriptionError($code, $message); unset($errorCodesToMessages[$code]); } else { $newCode = 'MESSAGE_NOT_FOUND'; $newMessage = Loc::getMessage($this->suffix.'.MESSAGE_NOT_FOUND'); unset($errorCodesToMessages[$code]); } $errorCodesToMessages[$newCode] = $newMessage; # Переназначить сообщение на новое } return $errorCodesToMessages; } protected function getDetailDescriptionError($code, $message) { try { $errorCodeDescription = self::ERROR_MESSAGES[$code]; if (empty($errorCodeDescription)) { $message = Loc::getMessage($this->suffix.'.'.$code); } else { $languageMessage = $this->checkLatinCyrillicString($message); if ($languageMessage == 'latin') { $message = Loc::getMessage($this->suffix.'.'.$errorCodeDescription[$message]); if (!$message) $message = Loc::getMessage($this->suffix.'.MESSAGE_NOT_FOUND'); } } } catch (SystemException $exception) { $this->exceptionHandler($exception); } return $message; } protected function checkLatinCyrillicString($string) { $containsCyrillic = preg_match('/[\p{Cyrillic}]/u', $string); $containsLatin = preg_match('/[a-zA-Z]/', $string); if ($containsCyrillic) { return 'cyrillic'; } else { return "latin"; } } }