protected static function prepareUFInfo() { if (is_array(self::$arUFId)) { return; } self::$arUFId = array('TASKS_TASK'); /** @global string $DBType */ /** @global CUserTypeManager $USER_FIELD_MANAGER */ global $DBType, $USER_FIELD_MANAGER; $dbType = ToUpper(strval($DBType)); $allowedUserTypes = array('disk_file', 'crm'); self::$ufInfo = array(); self::$ufEnumerations = array(); foreach (self::$arUFId as $ufId) { $arUserFields = $USER_FIELD_MANAGER->GetUserFields($ufId, 0, LANGUAGE_ID); if (is_array($arUserFields) && count($arUserFields) > 0) { foreach ($arUserFields as $field) { if (isset($field['FIELD_NAME']) && substr($field['FIELD_NAME'], 0, 3) === 'UF_' && isset($field['USER_TYPE_ID']) && in_array($field['USER_TYPE_ID'], $allowedUserTypes, true)) { if ($field['FIELD_NAME'] === 'UF_TASK_WEBDAV_FILES') { $field['EDIT_FORM_LABEL'] = $field['LIST_COLUMN_LABEL'] = $field['LIST_FILTER_LABEL'] = GetMessage('TASKS_REPORT_UF_TASK_WEBDAV_FILES'); } self::$ufInfo[$ufId][$field['FIELD_NAME']] = $field; if ($field['USER_TYPE_ID'] === 'datetime' && $field['MULTIPLE'] !== 'Y') { self::$ufInfo[$ufId][$field['FIELD_NAME'] . self::UF_DATETIME_SHORT_POSTFIX] = $field; } if (($dbType === 'ORACLE' || $dbType === 'MSSQL') && $field['MULTIPLE'] === 'Y') { self::$ufInfo[$ufId][$field['FIELD_NAME'] . self::UF_TEXT_TRIM_POSTFIX] = $field; } if ($field['USER_TYPE_ID'] === 'enumeration' && isset($field['USER_TYPE']) && is_array($field['USER_TYPE']) && isset($field['USER_TYPE']['CLASS_NAME']) && !empty($field['USER_TYPE']['CLASS_NAME']) && is_callable(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'))) { self::$ufEnumerations[$ufId][$field['FIELD_NAME']] = array(); $rsEnum = call_user_func_array(array($field['USER_TYPE']['CLASS_NAME'], 'GetList'), array($field)); while ($ar = $rsEnum->GetNext()) { self::$ufEnumerations[$ufId][$field['FIELD_NAME']][$ar['ID']] = $ar; } unset($rsEnum, $ar); } } } } } }