• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/component/userprofile/form.php
  • Класс: BitrixIntranetComponentUserProfileForm
  • Вызов: Form::prepareSettingsFields
public function prepareSettingsFields(&$arResult, $arParams)
{
	$settingsFields = [];
	$arResult["SettingsFieldsForConfig"] = [];

	if (!is_array($arResult["FormFields"]) || empty($arResult["FormFields"]))
	{
		return;
	}

	$editFields = BitrixMainConfigOption::get("intranet", "user_profile_edit_fields", false, SITE_ID);
	$editFields = is_string($editFields) ? explode(",", $editFields) : (
		is_array($arParams["EDITABLE_FIELDS"] ?? null) ? $arParams["EDITABLE_FIELDS"] : []
	);

	$arResult["SettingsFieldsEdit"] = [];

	$viewFields = BitrixMainConfigOption::get("intranet", "user_profile_view_fields", false, SITE_ID);
	if ($viewFields === false)
	{
		$viewFields = [];

		if (!empty($arParams['USER_FIELDS_MAIN']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_FIELDS_MAIN']));
		}
		if (!empty($arParams['USER_PROPERTY_MAIN']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_PROPERTY_MAIN']));
		}
		if (!empty($arParams['USER_FIELDS_CONTACT']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_FIELDS_CONTACT']));
		}
		if (!empty($arParams['USER_PROPERTY_CONTACT']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_PROPERTY_CONTACT']));
		}
		if (!empty($arParams['USER_FIELDS_PERSONAL']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_FIELDS_PERSONAL']));
		}
		if (!empty($arParams['USER_PROPERTY_PERSONAL']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['USER_PROPERTY_PERSONAL']));
		}
		if (!empty($arParams['EDITABLE_FIELDS']))
		{
			$viewFields = array_merge($viewFields, array_values($arParams['EDITABLE_FIELDS']));
		}

		$viewFields = array_unique($viewFields);
	}
	else
	{
		$viewFields = explode(",", $viewFields);
	}

	$arResult["SettingsFieldsView"] = [];

	foreach ($arResult["FormFields"] as $key => $field)
	{

		$fieldData = [
			"NAME" => ($field["title"] <> '' ? $field["title"] : $field["name"]),
			"VALUE" => $field["name"],
		];

		$settingsFields[] = $fieldData;

		if (in_array($field["name"], $viewFields))
		{
			$arResult["SettingsFieldsView"][] = $fieldData;
		}

		if (
			in_array($field["name"], $editFields)
			&& $field["editable"]
		)
		{
			$arResult["SettingsFieldsEdit"][]  = $fieldData;
		}
		else
		{
			$arResult["FormFields"][$key]["editable"] = false;
		}

		if (in_array($field["name"], $viewFields) || in_array($field["name"], $editFields))
		{
			$arResult["SettingsFieldsForConfig"][] = $field["name"];
		}

		if (in_array($field["name"], $viewFields) && !in_array($field["name"], $editFields))
		{
			$arResult["FormFields"][$key]["visibilityPolicy"] = "view";
		}
		elseif (!in_array($field["name"], $viewFields) && in_array($field["name"], $editFields))
		{
			$arResult["FormFields"][$key]["visibilityPolicy"] = "edit";
		}
		elseif (!in_array($field["name"], $editFields) && !in_array($field["name"], $viewFields))
		{
			unset($arResult["FormFields"][$key]);
		}
	}

	$arResult["SettingsFieldsAll"] = $settingsFields;
}