• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/field.php
  • Класс: BitrixListsField
  • Вызов: Field::renderField
static function renderField(array $field)
{
	$result = '';
	$controlSettings = !empty($field['CONTROL_SETTINGS']) ? $field['CONTROL_SETTINGS'] : array();

	if(!empty($field['DEFAULT']))
	{
		$field['VALUE'] = $field['DEFAULT_VALUE'];
		if(in_array($field['TYPE'], array('S:DiskFile')))
		{
			$renderMethod = 'renderCustomDefaultValue'.$field['PROPERTY_USER_TYPE']['USER_TYPE'];
			return self::$renderMethod($field);
		}
	}

	if(!empty($field['SEPARATOR']))
	{
		self::$separator = $field['SEPARATOR'];
	}

	if(self::$renderForForm && isset($field['CURRENT_VALUE']))
	{
		$field['VALUE'] = $field['CURRENT_VALUE'];
	}

	if(isset($field['PROPERTY_USER_TYPE']['USER_TYPE'])
		&& method_exists(__CLASS__, 'renderFieldByUserType'.$field['PROPERTY_USER_TYPE']['USER_TYPE']))
	{
		$renderMethod = 'renderFieldByUserType'.$field['PROPERTY_USER_TYPE']['USER_TYPE'];
		$result = self::$renderMethod($field);
	}
	elseif(isset($field['PROPERTY_USER_TYPE']['GetPublicViewHTMLMulty']))
	{
		$result = call_user_func_array(
			$field['PROPERTY_USER_TYPE']['GetPublicViewHTMLMulty'], array($field, $field, $controlSettings));
	}
	elseif(isset($field['PROPERTY_USER_TYPE']['GetPublicViewHTML']))
	{
		if($field['MULTIPLE'] === 'Y' && is_array($field['VALUE']))
		{
			$results = array();
			if(CLists::isAssociativeArray($field['VALUE']))
			{
				$result = call_user_func_array(
					$field['PROPERTY_USER_TYPE']['GetPublicViewHTML'], array($field, $field, $controlSettings));
			}
			else
			{
				foreach($field['VALUE'] as $value)
				{
					$fieldParam = array('VALUE' => $value);
					$results[] = call_user_func_array($field['PROPERTY_USER_TYPE']['GetPublicViewHTML'],
						array($field, $fieldParam, $controlSettings));
				}
				$result = implode(self::$separator, $results);
			}
		}
		else
		{
			$result = call_user_func_array(
				$field['PROPERTY_USER_TYPE']['GetPublicViewHTML'], array($field, $field, $controlSettings));
		}

		if ($field['TYPE'] == 'S:DiskFile' && ($field['READ'] ?? '') == 'Y')
		{
			$field['VALUE'] = array_filter((is_array($field['VALUE']) ? $field['VALUE'] : array($field['VALUE'])));
			foreach ($field['VALUE'] as $key => $value)
			{
				$result .= '';
			}
		}
	}
	elseif($field['PROPERTY_TYPE'] != '')
	{
		$renderMethod = 'renderFieldByType'.$field['PROPERTY_TYPE'];
		if(method_exists(__CLASS__, $renderMethod))
		{
			$result = self::$renderMethod($field);
		}
	}
	elseif($field['TYPE'] != '')
	{
		$renderMethod = 'renderFieldByField'.str_replace('_', '', $field['TYPE']);
		if(method_exists(__CLASS__, $renderMethod))
		{
			$result = self::$renderMethod($field);
		}
		else
		{
			$result = self::renderDefaultField($field);
		}
	}

	return $result;
}