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/main/lib/ui/entityselector/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/main/lib/ui/entityselector/converter.php
<?

namespace Bitrix\Main\UI\EntitySelector;

class Converter
{
	static $sampleSortPriority = [
		'meta-user',
		'user',
		'mail-contact',
		'project',
		'department',
		'crm-company',
		'crm-contact',
		'crm-lead',
		'crm-deal',
		'crm-quote',
		'crm-order',
		'crm-product',
	];

	public static function getCompatEntities()
	{
		static $compatEntities;

		if ($compatEntities)
		{
			return $compatEntities;
		}

		$compatEntities = [
			'user' => [
				'prefix' => 'U',
				'pattern' => '^(?<prefix>U)(?<itemId>\d+)$',
				'reversePrefix' => 'U',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'project' => [
				'prefix' => 'SG',
				'pattern' => '^(?<prefix>SG)(?<itemId>\d+)$',
				'reversePrefix' => 'SG',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-company' => [
				'prefix' => 'CRMCOMPANY',
				'pattern' => '^(?<prefix>CRMCOMPANY)(?<itemId>.+)$',
				'reversePrefix' => 'CRMCOMPANY',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-contact' => [
				'prefix' => 'CRMCONTACT',
				'pattern' => '^(?<prefix>CRMCONTACT)(?<itemId>.+)$',
				'reversePrefix' => 'CRMCONTACT',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-lead' => [
				'prefix' => 'CRMLEAD',
				'pattern' => '^(?<prefix>CRMLEAD)(?<itemId>.+)$',
				'reversePrefix' => 'CRMLEAD',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-deal' => [
				'prefix' => 'CRMDEAL',
				'pattern' => '^(?<prefix>CRMDEAL)(?<itemId>.+)$',
				'reversePrefix' => 'CRMDEAL',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-quote' => [
				'prefix' => 'CRMQUOTE',
				'pattern' => '^(?<prefix>CRMQUOTE)(?<itemId>.+)$',
				'reversePrefix' => 'CRMQUOTE',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-order' => [
				'prefix' => 'CRMORDER',
				'pattern' => '^(?<prefix>CRMORDER)(?<itemId>.+)$',
				'reversePrefix' => 'CRMORDER',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'crm-product' => [
				'prefix' => 'CRMPRODUCT',
				'pattern' => '^(?<prefix>CRMPRODUCT)(?<itemId>.+)$',
				'reversePrefix' => 'CRMPRODUCT',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'mail-contact' => [
				'prefix' => 'MC',
				'pattern' => '^(?<prefix>MC)(?<itemId>[0-9]+)$',
				'reversePrefix' => 'MC',
				'reversePattern' => '^(?<itemId>\d+)$'
			],
			'department' => [
				'prefix' => (function($itemId) {
					return is_string($itemId) && $itemId[-1] === 'F' ? 'D' : 'DR';
				}),
				'itemId' => function($prefix, $itemId) {
					return $prefix === 'D' ? $itemId.':F' : $itemId;
				},
				'pattern' => '^(?<prefix>DR?)(?<itemId>\d+)$',
				'reversePrefix' => (function($suffix) {
					return $suffix === ':F' ? 'D' : 'DR';
				}),
				'reversePattern' => '^(?<itemId>\d+)(?<suffix>.*)$'
			],
			'structure-node' => [
				'prefix' => (function($itemId) {
					return is_string($itemId) && $itemId[-1] === 'F' ? 'SNT' : 'SNTR';
				}),
				'itemId' => function($prefix, $itemId) {
					return $prefix === 'SNT' ? $itemId . ':F' : $itemId;
				},
				'pattern' => '^(?<prefix>SNTR?)(?<itemId>\d+)$',
				'reversePrefix' => (function($suffix) {
					return $suffix === ':F' ? 'SNT' : 'SNTR';
				}),
				'reversePattern' => '^(?<itemId>\d+)(?<suffix>.*)$',
			],
		];

		return $compatEntities;
	}

	public static function convertFromFinderCodes(array $codesList = [])
	{
		$result = [];
		foreach ($codesList as $code)
		{
			if ($code === 'UA')
			{
				$result[] = ['meta-user', 'all-users'];
				continue;
			}

			foreach (self::getCompatEntities() as $entityId => $entity)
			{
				if(preg_match('/'.$entity['pattern'].'/i', $code, $matches))
				{
					$closure = $entity['itemId'] ?? null;

					$entityType = is_callable($closure)
						? $closure($matches['prefix'], $matches['itemId'])
						: $matches['itemId'];

					$result[] = [$entityId, $entityType];
				}
			}
		}

		return $result;
	}

	public static function convertToFinderCodes(array $entitiesList = [])
	{
		$result = [];

		foreach ($entitiesList as [ $entityId, $id ])
		{
			if (
				$entityId === 'meta-user'
				&& $id === 'all-users'
			)
			{
				$result[] = 'UA';
				continue;
			}

			foreach (self::getCompatEntities() as $sampleEntityId => $sampleEntity)
			{
				if ($entityId !== $sampleEntityId)
				{
					continue;
				}

				if(preg_match('/'.$sampleEntity['reversePattern'].'/i', $id, $matches))
				{
					$result[] = (is_callable($sampleEntity['reversePrefix']) ? $sampleEntity['reversePrefix']($matches['suffix']) : $sampleEntity['reversePrefix']).$matches['itemId'];
				}
			}
		}

		return $result;
	}

	public static function sortEntities(array $entities = [])
	{
		usort($entities, function($a, $b) {
			$aKey = array_search($a[0], self::$sampleSortPriority, true);
			$bKey = array_search($b[0], self::$sampleSortPriority, true);

			if($aKey < $bKey)
			{
				return -1;
			}

			if ($aKey > $bKey)
			{
				return 1;
			}

			return 0;
		});

		return $entities;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit