- Модуль: 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;
}