public function AddFields(&$arFilterFields, $ID, $sFormName = 'form1', $bVarsFromForm = false, $bShow = false, $bParentComponent = false, $arOptions = array()) { global $APPLICATION; $arOptions = is_array($arOptions) ? $arOptions : array(); $fileUrlTemplate = isset($arOptions['FILE_URL_TEMPLATE']) ? $arOptions['FILE_URL_TEMPLATE'] : ''; $skipRendering = isset($arOptions['SKIP_RENDERING']) ? $arOptions['SKIP_RENDERING'] : array(); $isTactile = isset($arOptions['IS_TACTILE']) ? $arOptions['IS_TACTILE'] : false; try { $arUserFields = $this->GetUserFields($this->sEntityID, $ID, LANGUAGE_ID); } catch (\Bitrix\Main\ObjectException $e) { $arUserFields = array(); } $count = 0; foreach ($arUserFields as $FIELD_NAME => &$arUserField) { if (!isset($arUserField['ENTITY_VALUE_ID'])) { $arUserField['ENTITY_VALUE_ID'] = intval($ID); } $viewMode = $bShow; if (!$viewMode && $arUserField['EDIT_IN_LIST'] === 'N') { //Editing is not allowed for this field $viewMode = true; } $userTypeID = $arUserField['USER_TYPE']['USER_TYPE_ID']; if (in_array($userTypeID, $skipRendering, true)) { $value = isset($arUserField['VALUE']) ? $arUserField['VALUE'] : ''; if ($userTypeID === 'string' || $userTypeID === 'double') { $fieldType = 'text'; } elseif ($userTypeID === 'boolean') { $fieldType = 'checkbox'; $value = intval($value) > 0 ? 'Y' : 'N'; } elseif ($userTypeID === 'datetime') { $fieldType = 'date'; } else { $fieldType = $userTypeID; } $arFilterFields[] = array('id' => $FIELD_NAME, 'name' => '' != $arUserField['EDIT_FORM_LABEL'] ? $arUserField['EDIT_FORM_LABEL'] : $arUserField['FIELD_NAME'], 'type' => $fieldType, 'value' => $value, 'required' => !$viewMode && $arUserField['MANDATORY'] == 'Y' ? true : false, 'isTactile' => $isTactile); } else { if ($userTypeID === 'employee') { if ($viewMode) { if (!is_array($arUserField['VALUE'])) { $arUserField['VALUE'] = array($arUserField['VALUE']); } ob_start(); foreach ($arUserField['VALUE'] as $k) { $APPLICATION->IncludeComponent('bitrix:main.user.link', '', array('ID' => $k, 'HTML_ID' => 'crm_' . $FIELD_NAME, 'USE_THUMBNAIL_LIST' => 'Y', 'SHOW_YEAR' => 'M', 'CACHE_TYPE' => 'A', 'CACHE_TIME' => '3600', 'NAME_TEMPLATE' => '', 'SHOW_LOGIN' => 'Y'), false, array('HIDE_ICONS' => 'Y', 'ACTIVE_COMPONENT' => 'Y')); } $sVal = ob_get_contents(); ob_end_clean(); } else { $val = !$bVarsFromForm ? $arUserField['VALUE'] : (isset($_REQUEST[$FIELD_NAME]) ? $_REQUEST[$FIELD_NAME] : ''); $val_string = ''; if (is_array($val)) { foreach ($val as $_val) { if (empty($_val)) { continue; } $rsUser = CUser::GetByID($_val); $val_string .= CUser::FormatName(CSite::GetNameFormat(false) . ' [#ID#], ', $rsUser->Fetch(), true, false); } } else { if (!empty($val)) { $rsUser = CUser::GetByID($val); $val_string .= CUser::FormatName(CSite::GetNameFormat(false) . ' [#ID#], ', $rsUser->Fetch(), true, false); } } ob_start(); $GLOBALS['APPLICATION']->IncludeComponent('bitrix:intranet.user.selector', '', array('INPUT_NAME' => $FIELD_NAME, 'INPUT_VALUE' => $val, 'INPUT_VALUE_STRING' => $val_string, 'MULTIPLE' => $arUserField['MULTIPLE']), false, array('HIDE_ICONS' => 'Y')); $sVal = ob_get_contents(); ob_end_clean(); } } else { if ($viewMode && $userTypeID === 'file' && $fileUrlTemplate !== '') { // In view mode we have to use custom rendering for hide real file URL's ('bitrix:system.field.view' can't do it) $fileIDs = isset($arUserField['VALUE']) ? is_array($arUserField['VALUE']) ? $arUserField['VALUE'] : array($arUserField['VALUE']) : array(); ob_start(); CCrmViewHelper::RenderFiles($fileIDs, CComponentEngine::MakePathFromTemplate($fileUrlTemplate, array('owner_id' => $ID, 'field_name' => $FIELD_NAME)), 480, 480); $sVal = ob_get_contents(); ob_end_clean(); } else { ob_start(); $APPLICATION->IncludeComponent('bitrix:system.field.' . ($viewMode ? 'view' : 'edit'), $userTypeID, array('arUserField' => $arUserField, 'bVarsFromForm' => $bVarsFromForm, 'form_name' => 'form_' . $sFormName, 'FILE_MAX_HEIGHT' => 480, 'FILE_MAX_WIDTH' => 480, 'FILE_SHOW_POPUP' => true, 'SHOW_FILE_PATH' => false, 'SHOW_NO_VALUE' => true, 'FILE_URL_TEMPLATE' => CComponentEngine::MakePathFromTemplate($fileUrlTemplate, array('owner_id' => $ID, 'field_name' => $FIELD_NAME))), false, array('HIDE_ICONS' => 'Y')); $sVal = ob_get_contents(); ob_end_clean(); } } $arFilterFields[] = array('id' => $FIELD_NAME, 'name' => '' != $arUserField['EDIT_FORM_LABEL'] ? $arUserField['EDIT_FORM_LABEL'] : $arUserField['FIELD_NAME'], 'type' => 'custom', 'value' => $sVal, 'required' => !$viewMode && $arUserField['MANDATORY'] == 'Y' ? true : false, 'isTactile' => $isTactile); } $count++; } unset($arUserField); return $count; }