• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
  • Класс: CUserTypeManager
  • Вызов: CUserTypeManager::EditFormAddFields
function EditFormAddFields($entity_id, &$arFields, array $options = null)
{
	if(!is_array($options))
	{
		$options = array();
	}

	if(!is_array($arFields))
	{
		$arFields = array();
	}

	$files = $options['FILES'] ?? $_FILES;
	$form = isset($options['FORM']) && is_array($options['FORM']) ? $options['FORM'] : $GLOBALS;

	$arUserFields = $this->GetUserFields($entity_id);
	foreach($arUserFields as $arUserField)
	{
		if($arUserField["EDIT_IN_LIST"] == "Y")
		{
			if($arUserField["USER_TYPE"]["BASE_TYPE"] == "file")
			{
				if(isset($files[$arUserField["FIELD_NAME"]]))
				{
					if(is_array($files[$arUserField["FIELD_NAME"]]["name"]))
					{
						$arFields[$arUserField["FIELD_NAME"]] = array();
						foreach($files[$arUserField["FIELD_NAME"]]["name"] as $key => $value)
						{
							$old_id = $form[$arUserField["FIELD_NAME"] . "_old_id"][$key];
							$arFields[$arUserField["FIELD_NAME"]][$key] = array(
								"name" => $files[$arUserField["FIELD_NAME"]]["name"][$key],
								"type" => $files[$arUserField["FIELD_NAME"]]["type"][$key],
								"tmp_name" => $files[$arUserField["FIELD_NAME"]]["tmp_name"][$key],
								"error" => $files[$arUserField["FIELD_NAME"]]["error"][$key],
								"size" => $files[$arUserField["FIELD_NAME"]]["size"][$key],
								"del" => is_array($form[$arUserField["FIELD_NAME"] . "_del"]) &&
									(in_array($old_id, $form[$arUserField["FIELD_NAME"] . "_del"]) ||
										(
											array_key_exists($key, $form[$arUserField["FIELD_NAME"] . "_del"]) &&
											$form[$arUserField["FIELD_NAME"] . "_del"][$key] == "Y"
										)
									),
								"old_id" => $old_id
							);
						}
					}
					else
					{
						$arFields[$arUserField["FIELD_NAME"]] = $files[$arUserField["FIELD_NAME"]];
						$arFields[$arUserField["FIELD_NAME"]]["del"] = $form[$arUserField["FIELD_NAME"] . "_del"];
						$arFields[$arUserField["FIELD_NAME"]]["old_id"] = $form[$arUserField["FIELD_NAME"] . "_old_id"];
					}
				}
				else
				{
					if(isset($form[$arUserField["FIELD_NAME"]]))
					{
						if(!is_array($form[$arUserField["FIELD_NAME"]]))
						{
							if(intval($form[$arUserField["FIELD_NAME"]]) > 0)
							{
								$arFields[$arUserField["FIELD_NAME"]] = intval($form[$arUserField["FIELD_NAME"]]);
							}
						}
						else
						{
							$fields = array();
							foreach($form[$arUserField["FIELD_NAME"]] as $val)
							{
								if(intval($val) > 0)
								{
									$fields[] = intval($val);
								}
							}
							$arFields[$arUserField["FIELD_NAME"]] = $fields;
						}
					}
				}
			}
			else
			{
				if(isset($files[$arUserField["FIELD_NAME"]]))
				{
					$arFile = array();
					CFile::ConvertFilesToPost($files[$arUserField["FIELD_NAME"]], $arFile);

					if(isset($form[$arUserField["FIELD_NAME"]]))
					{
						if($arUserField["MULTIPLE"] == "Y")
						{
							foreach($form[$arUserField["FIELD_NAME"]] as $key => $value)
								$arFields[$arUserField["FIELD_NAME"]][$key] = array_merge($value, $arFile[$key]);
						}
						else
						{
							$arFields[$arUserField["FIELD_NAME"]] = array_merge($form[$arUserField["FIELD_NAME"]], $arFile);
						}
					}
					else
					{
						$arFields[$arUserField["FIELD_NAME"]] = $arFile;
					}
				}
				else
				{
					if(isset($form[$arUserField["FIELD_NAME"]]))
						$arFields[$arUserField["FIELD_NAME"]] = $form[$arUserField["FIELD_NAME"]];
				}
			}
		}
	}
}