403Webshell
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/rest/entity/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/lib/rest/entity/property.php
<?php


namespace Bitrix\Sale\Rest\Entity;


use Bitrix\Main\Engine\Response\Converter;
use Bitrix\Sale\Rest\Attributes;

class Property extends Base
{
	const PROPERTY_TYPE_STRING = 'STRING';
	const PROPERTY_TYPE_YN = 'Y/N';
	const PROPERTY_TYPE_NUMBER = 'NUMBER';
	const PROPERTY_TYPE_ENUM = 'ENUM';
	const PROPERTY_TYPE_FILE = 'FILE';
	const PROPERTY_TYPE_DATE = 'DATE';
	const PROPERTY_TYPE_LOCATION = 'LOCATION';
	const PROPERTY_TYPE_ADDRESS = 'ADDRESS';

	public function prepareFieldInfos($fields)
	{
		$fieldsInfo = parent::prepareFieldInfos($fields);

		foreach($fields as $name => $info)
		{
			if($name == 'SETTINGS')
			{
				$fieldsInfo[$name]['FIELDS'] = parent::prepareFieldInfos($info['FIELDS']);
			}
		}
		return $fieldsInfo;
	}

	public function getFields()
	{
		return array_merge(
			[
				'ID'=>[
					'TYPE'=>self::TYPE_INT,
					'ATTRIBUTES'=>[Attributes::ReadOnly]
				],
				'PERSON_TYPE_ID'=>[
					'TYPE'=>self::TYPE_INT,
					'ATTRIBUTES'=>[
						Attributes::Required,
						Attributes::Immutable
					]
				],
				'PROPS_GROUP_ID'=>[
					'TYPE'=>self::TYPE_INT,
					'ATTRIBUTES'=>[
						Attributes::Required,
						Attributes::Immutable
					]
				],
				'NAME'=>[
					'TYPE'=>self::TYPE_STRING,
					'ATTRIBUTES'=>[Attributes::Required]
				],
				'CODE'=>[
					'TYPE'=>self::TYPE_STRING
				],
				'ACTIVE'=>[
					'TYPE'=>self::TYPE_CHAR
				],
				'UTIL' =>[
					'TYPE'=>self::TYPE_CHAR
				],
				'USER_PROPS'=>[
					'TYPE'=>self::TYPE_CHAR
				],
				'IS_FILTERED'=>[
					'TYPE'=>self::TYPE_CHAR
				],
				'SORT'=>[
					'TYPE'=>self::TYPE_INT
				],
				'DESCRIPTION'=>[
					'TYPE'=>self::TYPE_STRING
				],
				'XML_ID'=>[
					'TYPE'=>self::TYPE_STRING
				],
				'TYPE'=>[
					'TYPE'=>self::TYPE_STRING,
					'ATTRIBUTES'=>[
						Attributes::Required,
						Attributes::Immutable
					]
				],
				'REQUIRED'=>[
					'TYPE'=>self::TYPE_CHAR
				],
				'MULTIPLE'=>[
					'TYPE'=>self::TYPE_CHAR
				],
				'DEFAULT_VALUE'=>[
					'TYPE'=>self::TYPE_STRING
				],
				'SETTINGS'=>[
					'TYPE'=>self::TYPE_DATATYPE,
					//'ATTRIBUTES'=>[Attributes::ReadOnly]
				],
			],
			$this->getFieldsByTypeString(),
			$this->getFieldsByTypeLocation(),
			$this->getFieldsByTypeAddress()
		);
	}

	public function getFieldsByType($type)
	{
		$filterMap = [
			self::PROPERTY_TYPE_STRING => function ($k)
			{
				return (
					is_set($this->getFieldsByTypeLocation(), $k) === false
					&& is_set($this->getFieldsByTypeAddress(), $k) === false
				);
			},
			self::PROPERTY_TYPE_LOCATION => function ($k)
			{
				return (
					is_set($this->getFieldsByTypeString(), $k) === false
					&& is_set($this->getFieldsByTypeAddress(), $k) === false
				);
			},
			self::PROPERTY_TYPE_ADDRESS => function ($k)
			{
				return (
					is_set($this->getFieldsByTypeString(), $k) === false
					&& is_set($this->getFieldsByTypeLocation(), $k) === false
				);
			},
			'DEFAULT' => function ($k)
			{
				return (
					is_set($this->getFieldsByTypeString(), $k) === false
					&& is_set($this->getFieldsByTypeLocation(), $k) === false
					&& is_set($this->getFieldsByTypeAddress(), $k) === false
				);
			},
		];

		$filter = isset($filterMap[$type]) ? $filterMap[$type] : $filterMap['DEFAULT'];

		$r = array_filter($this->getFields(), $filter, ARRAY_FILTER_USE_KEY);

		$r['SETTINGS']['FIELDS'] = $this->getFieldsSettingsByType($type);

		return $r;
	}

	protected function getFieldsSettingsByType($type)
	{
		$r = [];

		if($type == self::PROPERTY_TYPE_STRING)
		{
			$r = $this->getFieldsSettingsByTypeString();
		}
		elseif($type == self::PROPERTY_TYPE_YN)
		{
			$r = $this->getFieldsSettingsByEitherYNType();
		}
		elseif($type == self::PROPERTY_TYPE_NUMBER)
		{
			$r = $this->getFieldsSettingsByNumberType();
		}
		elseif($type == self::PROPERTY_TYPE_ENUM)
		{
			$r = $this->getFieldsSettingsByEnumType();
		}
		elseif($type == self::PROPERTY_TYPE_FILE)
		{
			$r = $this->getFieldsSettingsByFileType();
		}
		elseif($type == self::PROPERTY_TYPE_DATE)
		{
			$r = $this->getFieldsSettingsByDateType();
		}
		elseif($type == self::PROPERTY_TYPE_LOCATION)
		{
			$r = $this->getFieldsSettingsByLocation();
		}

		return $r;
	}

	protected function getFieldsByTypeString()
	{
		return [
			'IS_PROFILE_NAME'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_PAYER'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_EMAIL'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_PHONE'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_ZIP'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_ADDRESS'=>[
				'TYPE'=>self::TYPE_CHAR
			],
		];
	}

	protected function getFieldsByTypeAddress()
	{
		return [
			'IS_ADDRESS_FROM'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'IS_ADDRESS_TO'=>[
				'TYPE'=>self::TYPE_CHAR
			],
		];
	}

	protected function getFieldsByTypeLocation()
	{
		$r = [
			'IS_LOCATION'=>[
				'TYPE'=>self::TYPE_CHAR
			],
			'INPUT_FIELD_LOCATION'=>[
				'TYPE'=>self::TYPE_STRING // enum
			],
			'IS_LOCATION4TAX'=>[
				'TYPE'=>self::TYPE_CHAR
			]
		];
		return $r;
	}

	protected function getFieldsSettingsByTypeString()
	{
		return [
			'MINLENGTH'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'MAXLENGTH'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'PATTERN'=>[
				'TYPE'=>self::TYPE_STRING,
			],
			'MULTILINE'=>[
				'TYPE'=>self::TYPE_CHAR,
			],
			'COLS'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'ROWS'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'SIZE'=>[
				'TYPE'=>self::TYPE_INT,
			],
		];
	}

	protected function getFieldsSettingsByEitherYNType()
	{
		return [];
	}

	protected function getFieldsSettingsByNumberType()
	{
		return [
			'MIN'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'MAX'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'STEP'=>[
				'TYPE'=>self::TYPE_INT,
			]
		];
	}

	protected function getFieldsSettingsByEnumType()
	{
		return [
			'MULTIELEMENT'=>[
				'TYPE'=>self::TYPE_CHAR,
			],
			'SIZE'=>[
				'TYPE'=>self::TYPE_INT,
			]
		];
	}

	protected function getFieldsSettingsByFileType()
	{
		return [
			'MAXSIZE'=>[
				'TYPE'=>self::TYPE_INT,
			],
			'ACCEPT'=>[
				'TYPE'=>self::TYPE_STRING,
			]
		];
	}

	protected function getFieldsSettingsByDateType()
	{
		return [
			'TIME'=>[
				'TYPE'=>self::TYPE_CHAR,
			]
		];
	}

	protected function getFieldsSettingsByLocation()
	{
		return [];
	}

	public function convertKeysToSnakeCaseArguments($name, $arguments)
	{
		if($name == 'getfieldssettingsbytype'
			|| $name == 'getfieldsbytype'
		){
			if(isset($arguments['type']))
			{
				$fields = $arguments['type'];
				if(!empty($fields))
				{
					$converter = new Converter(Converter::VALUES | Converter::TO_UPPER);
					$arguments['type'] = $converter->process($fields);
				}
			}
		}

		return $arguments;
	}

	public function internalizeArguments($name, $arguments)
	{
		if($name == 'getfieldssettingsbytype'
			|| $name == 'getfieldsbytype'
		){}
		else
		{
			parent::internalizeArguments($name, $arguments);
		}

		return $arguments;
	}

	public function externalizeResult($name, $fields)
	{
		if($name == 'getfieldssettingsbytype'
			|| $name == 'getfieldsbytype'
		){}
		else
		{
			parent::externalizeResult($name, $fields);
		}
		return $fields;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit