AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 18.191.101.206
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/components/bitrix/main.numerator.edit/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/components/bitrix/main.numerator.edit/class.php
<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

use Bitrix\Main\Numerator\Numerator;
use Bitrix\Main\Engine\Response\AjaxJson;
use Bitrix\Main\ErrorCollection;
use Bitrix\Main\Error;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Numerator\Generator\SequentNumberGenerator;

Loc::loadMessages(__FILE__);

/**
 * Class MainNumeratorEdit
 */
class MainNumeratorEdit extends CBitrixComponent implements \Bitrix\Main\Engine\Contract\Controllerable
{
	/** @inheritdoc */
	public function executeComponent()
	{
		$this->arResult['numeratorType'] = $this->arParams["NUMERATOR_TYPE"] ?? 'DEFAULT';
		$this->arResult['isEmbedMode'] = $this->arParams["IS_EMBED_FORM"] ?? false;
		$numeratorSettingsFields = Numerator::getSettingsFields($this->arResult['numeratorType']);
		$this->arResult['numeratorSettingsFields'] = $numeratorSettingsFields['settingsFields'];
		$this->arResult['numeratorTemplateWords'] = $numeratorSettingsFields['settingsWords'];

		$this->arResult['IS_SLIDER'] = false;
		if ($this->request->get('IFRAME'))
		{
			$this->arResult['IS_SLIDER'] = true;
		}

		if (isset($this->arParams['IS_SLIDER']) && $this->arParams['IS_SLIDER'] === false)
		{
			$this->arResult['IS_SLIDER'] = false;
		}

		$this->arResult['IS_EDIT'] = false;
		if (isset($this->arParams["~NUMERATOR_ID"]) && $this->arParams["~NUMERATOR_ID"])
		{
			$this->arResult['IS_EDIT'] = true;
		}
		$this->arResult['IS_SHOW_CHANGE_NUMBER'] = true;
		if (isset($this->arParams['IS_SHOW_CHANGE_NUMBER']))
		{
			$this->arResult['IS_SHOW_CHANGE_NUMBER'] = (bool)$this->arParams["IS_SHOW_CHANGE_NUMBER"];
		}

		$this->setHideSettings();
		$this->fillNumeratorConfigValues();
		$this->includeComponentTemplate();
	}

	private function setHideSettings()
	{
		$this->arResult['IS_HIDE_NUMERATOR_NAME'] = false;
		$this->arResult['IS_HIDE_PAGE_TITLE'] = false;
		$this->arResult['IS_HIDE_IS_DIRECT_NUMERATION'] = false;
		$this->arResult['WITHOUT_FORM'] = false;
		if (isset($this->arParams["IS_HIDE_NUMERATOR_NAME"]) && $this->arParams["IS_HIDE_NUMERATOR_NAME"])
		{
			$this->arResult['IS_HIDE_NUMERATOR_NAME'] = true;
		}
		if (isset($this->arParams["IS_HIDE_IS_DIRECT_NUMERATION"]) && $this->arParams["IS_HIDE_IS_DIRECT_NUMERATION"])
		{
			$this->arResult['IS_HIDE_IS_DIRECT_NUMERATION'] = true;
		}
		if (isset($this->arParams["IS_HIDE_PAGE_TITLE"]) && $this->arParams["IS_HIDE_PAGE_TITLE"])
		{
			$this->arResult['IS_HIDE_PAGE_TITLE'] = true;
		}
	}

	/**
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	private function fillNumeratorConfigValues()
	{
		$numeratorId = (isset($this->arParams["NUMERATOR_ID"]) && $this->arParams["NUMERATOR_ID"])
			? intval($this->arParams["NUMERATOR_ID"]) : null;
		$numerator = Numerator::load($numeratorId);
		$numeratorConfiguration = $numerator ? $numerator->getConfig() : [];
		$this->indexArray($this->arResult['numeratorSettingsFields'], 'settingName');
		foreach ($this->arResult['numeratorSettingsFields'] as $generatorType => $generatorSettingsField)
		{
			foreach ($generatorSettingsField as $key => $generatorSettings)
			{
				if (isset($numeratorConfiguration[$generatorType][$generatorSettings['settingName']]))
				{
					$this->arResult['numeratorSettingsFields'][$generatorType][$key]['value'] = $numeratorConfiguration[$generatorType][$generatorSettings['settingName']];
				}
				else
				{
					$this->arResult['numeratorSettingsFields'][$generatorType][$key]['value'] = '';
					if (isset($generatorSettings['default']))
					{
						if (is_array($generatorSettings['default']))
						{
							$this->arResult['numeratorSettingsFields'][$generatorType][$key]['value'] = Loc::getMessage($generatorSettings['default']['name'], $generatorSettings['default']['replacement']);
						}
						else
						{
							$this->arResult['numeratorSettingsFields'][$generatorType][$key]['value'] = $generatorSettings['default'];
						}
						unset($this->arResult['numeratorSettingsFields'][$generatorType][$key]['default']);
					}
				}
			}
		}
		$this->arResult['isMultipleSequences'] = false;
		if ($numeratorId)
		{
			$this->addSequenceSettings($numerator, $numeratorId);
			$this->arResult['numeratorSettingsFields'][Numerator::getType()][] = ["settingName" => "id", "type" => 'hidden', 'value' => $numeratorId];
		}
		$this->arResult['numeratorSettingsFields'][Numerator::getType()][] = ['settingName' => 'type', 'type' => 'hidden', 'value' => $this->arResult['numeratorType']];
		$this->arResult['numeratorSettingsFields'][Numerator::getType()][] = ['settingName' => 'template', 'type' => 'hidden', 'value' => '',];
		if (isset($this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]))
		{
			foreach ($this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['timezone']['values'] as $index => $_value)
			{
				$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['timezone']['values'][$index]['title'] = $_value['settingName'];
			}
			$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['timezoneToggle'] = [
				'type'        => 'linkToggle',
				'settingName' => 'timezoneToggle',
				'value'       => '',
				'title'       => Loc::getMessage('NUMERATOR_EDIT_TIMEZONE_LINK'),
			];
			if ($this->arResult['IS_HIDE_IS_DIRECT_NUMERATION'])
			{
				$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['isDirectNumeration']['type'] = 'hidden';
			}
		}
		if ($this->arResult['IS_HIDE_NUMERATOR_NAME'])
		{
			$this->arResult['numeratorSettingsFields'][Numerator::getType()]['name']['type'] = 'hidden';
		}
		$this->sortArray($this->arResult['numeratorSettingsFields']);
	}

	/**
	 * @param $array
	 */
	private function sortArray(&$array)
	{
		if (isset($array[Numerator::getType()]))
		{
			$sortedKeys = [
				'name',
				'template',
			];
			uksort($array[Numerator::getType()], function ($a, $b) use ($sortedKeys) {
				foreach ($sortedKeys as $value)
				{
					if ($a == $value)
					{
						return 0;
						break;
					}
					if ($b == $value)
					{
						return 1;
						break;
					}
				}
			});
		}
		if (isset($array[SequentNumberGenerator::getType()]))
		{
			$sortedKeys = [
				'start',
				'step',
				'length',
				'padString',
				'periodicBy',
				'timezoneToggle',
				'timezone',
				'isDirectNumeration',
			];
			uksort($array[SequentNumberGenerator::getType()], function ($a, $b) use ($sortedKeys) {
				foreach ($sortedKeys as $value)
				{
					if ($a == $value)
					{
						return 0;
						break;
					}
					if ($b == $value)
					{
						return 1;
						break;
					}
				}
			});
		}
	}

	/**
	 * @param $array
	 * @param $keyBy
	 */
	private function indexArray(&$array, $keyBy)
	{
		foreach ($array as $key => $numeratorSettingsField)
		{
			$indexedFields = [];
			for ($index = count($numeratorSettingsField) - 1; $index >= 0; $index--)
			{
				$fieldSettings = $numeratorSettingsField[$index];
				if (isset($fieldSettings[$keyBy]))
				{
					$indexedFields[$fieldSettings[$keyBy]] = $fieldSettings;
					unset($array[$key][$index]);
				}
				else
				{
					$indexedFields[$index] = $fieldSettings;
				}
			}
			$array[$key] = $indexedFields;
		}
	}

	/**
	 * @param Numerator $numerator
	 * @param $numeratorId
	 * @throws \Bitrix\Main\ArgumentException
	 * @throws \Bitrix\Main\ObjectPropertyException
	 * @throws \Bitrix\Main\SystemException
	 */
	private function addSequenceSettings($numerator, $numeratorId)
	{
		if (in_array(SequentNumberGenerator::getType(), array_keys($this->arResult['numeratorSettingsFields'])))
		{
			if ($this->arResult['IS_EDIT'] && $this->arResult['IS_SHOW_CHANGE_NUMBER'])
			{
				$sequences = \Bitrix\Main\Numerator\Model\NumeratorSequenceTable::getList(
					[
						'filter' => ['=NUMERATOR_ID' => $numeratorId],
						'select' => ['NUMERATOR_ID', 'TEXT_KEY'],
					])
					->fetchAll();
				if ($sequences)
				{
					if (count($sequences) === 1)
					{
						$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['currentNumberForSequence'] = [
							'type'        => 'plain',
							'settingName' => 'currentNumberForSequence',
							'value'       => $numerator->previewNextSequentialNumber($sequences[0]['TEXT_KEY']),
							'toggleTitle' => Loc::getMessage('NUMERATOR_EDIT_TITLE_BITRIX_MAIN_SEQUENTNUMBERGENERATOR_SET_NUMBER_TOGGLE'),
						];
						$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['nextNumberForSequence'] = [
							'type'        => 'string',
							'settingName' => 'nextNumberForSequence',
							'title'       => Loc::getMessage('NUMERATOR_EDIT_TITLE_BITRIX_MAIN_SEQUENTNUMBERGENERATOR_NEW_NEXT_NUMBER'),
						];
					}
					else
					{
						$this->arResult['isMultipleSequences'] = true;
						$this->arResult['numeratorSettingsFields'][SequentNumberGenerator::getType()]['currentNumberForSequence'] = [
							'type'        => 'custom',
							'settingName' => 'currentNumberForSequence',
							'toggleTitle' => Loc::getMessage('NUMERATOR_EDIT_TITLE_BITRIX_MAIN_SEQUENTNUMBERGENERATOR_SET_NUMBER_TOGGLE_S'),
						];
					}
				}
			}
		}

	}

	/**
	 * @return array
	 */
	public function configureActions()
	{
		return [];
	}
}

Anon7 - 2022
AnonSec Team