• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
  • Класс: CUserTypeManager
  • Вызов: CUserTypeManager::AddUserField
function AddUserField($arUserField, $value, &$row)
{
	if($arUserField["USER_TYPE"])
	{
		$js = $this->ShowScript();
		$useFieldComponent = !empty($arUserField['USER_TYPE']['USE_FIELD_COMPONENT']);

		if(is_callable(array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtml")))
		{
			if($arUserField["MULTIPLE"] == "N")
			{
				$html = call_user_func_array(
					array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtml"),
					array(
						$arUserField,
						array(
							"NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]",
							"VALUE" => ($useFieldComponent ? $value : htmlspecialcharsbx($value))
						),
					)
				);
				if($html === '')
					$html = ' ';
				$row->AddViewField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript());
			}
			elseif(is_callable(array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtmlmulty")))
			{
				if(is_array($value))
					$form_value = $value;
				else
					$form_value = unserialize($value, ['allowed_classes' => false]);

				if(!is_array($form_value))
					$form_value = array();

				foreach($form_value as $key => $val)
					$form_value[$key] = ($useFieldComponent ? $val : htmlspecialcharsbx($val));

				$html = call_user_func_array(
					array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtmlmulty"),
					array(
						$arUserField,
						array(
							"NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]" . "[]",
							"VALUE" => $form_value,
						),
					)
				);
				if($html == '')
					$html = ' ';
				$row->AddViewField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript());
			}
			else
			{
				$html = "";

				if(is_array($value))
					$form_value = $value;
				else
					$form_value = $value <> '' ? unserialize($value, ['allowed_classes' => false]) : false;

				if(!is_array($form_value))
					$form_value = array();

				foreach($form_value as $i => $val)
				{
					if($html != "")
						$html .= " / ";
					$html .= call_user_func_array(
						array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistviewhtml"),
						array(
							$arUserField,
							array(
								"NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]" . "[" . $i . "]",
								"VALUE" => ($useFieldComponent ? $val : htmlspecialcharsbx($val)),
							),
						)
					);
				}
				if($html == '')
					$html = ' ';
				$row->AddViewField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript());
			}
		}
		if($arUserField["EDIT_IN_LIST"] == "Y" && is_callable(array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtml")))
		{
			if(!$row->bEditMode)
			{
				// put dummy
				$row->AddEditField($arUserField["FIELD_NAME"], " ");
			}
			elseif($arUserField["MULTIPLE"] == "N")
			{
				$html = call_user_func_array(
					array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtml"),
					array(
						$arUserField,
						array(
							"NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]",
							"VALUE" => ($useFieldComponent ? $value : htmlspecialcharsbx($value)),
						),
					)
				);
				if($html == '')
					$html = ' ';
				$row->AddEditField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript());
			}
			elseif(is_callable(array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtmlmulty")))
			{
				if(is_array($value))
					$form_value = $value;
				else
					$form_value = $value <> '' ? unserialize($value, ['allowed_classes' => false]) : false;

				if(!is_array($form_value))
					$form_value = array();

				foreach($form_value as $key => $val)
					$form_value[$key] = ($useFieldComponent ? $val : htmlspecialcharsbx($val));

				$html = call_user_func_array(
					array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtmlmulty"),
					array(
						$arUserField,
						array(
							"NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "][]",
							"VALUE" => $form_value,
						),
					)
				);
				if($html == '')
					$html = ' ';
				$row->AddEditField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript());
			}
			else
			{
				$html = "id . "">";
				if(is_array($value))
					$form_value = $value;
				else
					$form_value = unserialize($value, ['allowed_classes' => false]);

				if(!is_array($form_value))
					$form_value = array();

				$i = -1;
				foreach($form_value as $i => $val)
				{
					$html .= '';
				}
				$html .= '';
				$html .= '' .
					'
' . call_user_func_array( array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtml"), array( $arUserField, array( "NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]" . "[" . $i . "]", "VALUE" => ($useFieldComponent ? $val : htmlspecialcharsbx($val)), ), ) ) . '
' . call_user_func_array( array($arUserField["USER_TYPE"]["CLASS_NAME"], "getadminlistedithtml"), array( $arUserField, array( "NAME" => "FIELDS[" . $row->id . "][" . $arUserField["FIELD_NAME"] . "]" . "[" . ($i + 1) . "]", "VALUE" => "", ), ) ) . '
id . '', 'FIELDS\\[' . $row->id . '\\]\\[' . $arUserField["FIELD_NAME"] . '\\]')">
'; $row->AddEditField($arUserField["FIELD_NAME"], $html . $js . CAdminCalendar::ShowScript()); } } } }