static function getFieldsInfo($getUf = true): array
{
global $USER_FIELD_MANAGER;
$fields = [
'ID' => [
'type' => 'integer',
'primary' => true,
],
'PARENT_ID' => [
'type' => 'integer',
'default' => 0,
],
'TITLE' => [
'type' => 'string',
'required' => true,
],
'DESCRIPTION' => [
'type' => 'string',
],
'MARK' => [
'type' => 'enum',
'values' => [
Mark::NEGATIVE => Loc::getMessage('TASKS_FIELDS_MARK_NEGATIVE'),
Mark::POSITIVE => Loc::getMessage('TASKS_FIELDS_MARK_POSITIVE'),
],
'default' => null,
],
'PRIORITY' => [
'type' => 'enum',
'values' => [
Priority::HIGH => Loc::getMessage('TASKS_FIELDS_PRIORITY_HIGH'),
Priority::AVERAGE => Loc::getMessage('TASKS_FIELDS_PRIORITY_AVERAGE'),
Priority::LOW => Loc::getMessage('TASKS_FIELDS_PRIORITY_LOW'),
],
'default' => Priority::AVERAGE,
],
'STATUS' => [
'type' => 'enum',
'values' => [
Status::PENDING => Loc::getMessage('TASKS_FIELDS_STATUS_PENDING'),
Status::IN_PROGRESS => Loc::getMessage('TASKS_FIELDS_STATUS_IN_PROGRESS'),
Status::SUPPOSEDLY_COMPLETED => Loc::getMessage('TASKS_FIELDS_STATUS_SUPPOSEDLY_COMPLETED'),
Status::COMPLETED => Loc::getMessage('TASKS_FIELDS_STATUS_COMPLETED'),
Status::DEFERRED => Loc::getMessage('TASKS_FIELDS_STATUS_DEFERRED'),
],
'default' => Status::PENDING,
],
'MULTITASK' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'NOT_VIEWED' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'REPLICATE' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'GROUP_ID' => [
'type' => 'integer',
'default' => 0,
],
'STAGE_ID' => [
'type' => 'integer',
'default' => 0,
],
'CREATED_BY' => [
'type' => 'integer',
'required' => true,
],
'CREATED_DATE' => [
'type' => 'datetime',
],
'RESPONSIBLE_ID' => [
'type' => 'integer',
'required' => true,
],
'ACCOMPLICES' => [
'type' => 'array',
],
'AUDITORS' => [
'type' => 'array',
],
'CHANGED_BY' => [
'type' => 'integer',
],
'CHANGED_DATE' => [
'type' => 'datetime',
],
'STATUS_CHANGED_BY' => [
'type' => 'integer',
],
'STATUS_CHANGED_DATE' => [
'type' => 'datetime',
],
'CLOSED_BY' => [
'type' => 'integer',
'default' => null,
],
'CLOSED_DATE' => [
'type' => 'datetime',
'default' => null,
],
'ACTIVITY_DATE' => [
'type' => 'datetime',
'default' => null,
],
'DATE_START' => [
'type' => 'datetime',
'default' => null,
],
'DEADLINE' => [
'type' => 'datetime',
'default' => null,
],
'START_DATE_PLAN' => [
'type' => 'datetime',
'default' => null,
],
'END_DATE_PLAN' => [
'type' => 'datetime',
'default' => null,
],
'GUID' => [
'type' => 'string',
'default' => null,
],
'XML_ID' => [
'type' => 'string',
'default' => null,
],
'COMMENTS_COUNT' => [
'type' => 'integer',
'default' => 0,
],
'SERVICE_COMMENTS_COUNT' => [
'type' => 'integer',
'default' => 0,
],
'NEW_COMMENTS_COUNT' => [
'type' => 'integer',
'default' => 0,
],
'ALLOW_CHANGE_DEADLINE' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'ALLOW_TIME_TRACKING' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'TASK_CONTROL' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'ADD_IN_REPORT' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'FORKED_BY_TEMPLATE_ID' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'TIME_ESTIMATE' => [
'type' => 'integer',
],
'TIME_SPENT_IN_LOGS' => [
'type' => 'integer',
],
'MATCH_WORK_TIME' => [
'type' => 'integer',
],
'FORUM_TOPIC_ID' => [
'type' => 'integer',
],
'FORUM_ID' => [
'type' => 'integer',
],
'SITE_ID' => [
'type' => 'string',
],
'SUBORDINATE' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => null,
],
'FAVORITE' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => null,
],
'EXCHANGE_MODIFIED' => [
'type' => 'datetime',
'default' => null,
],
'EXCHANGE_ID' => [
'type' => 'integer',
'default' => null,
],
'OUTLOOK_VERSION' => [
'type' => 'integer',
'default' => null,
],
'VIEWED_DATE' => [
'type' => 'datetime',
],
'SORTING' => [
'type' => 'double',
],
'DURATION_PLAN' => [
'type' => 'integer',
],
'DURATION_FACT' => [
'type' => 'integer',
],
'CHECKLIST' => [
'type' => 'array',
],
'DURATION_TYPE' => [
'type' => 'enum',
'values' => [
'secs',
'mins',
'hours',
'days',
'weeks',
'monts',
'years',
],
'default' => 'days',
],
'IS_MUTED' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'IS_PINNED' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
'IS_PINNED_IN_GROUP' => [
'type' => 'enum',
'values' => [
'Y' => Loc::getMessage('TASKS_FIELDS_Y'),
'N' => Loc::getMessage('TASKS_FIELDS_N'),
],
'default' => 'N',
],
];
foreach ($fields as $fieldId => &$fieldData)
{
$fieldData = array_merge(['title' => Loc::getMessage('TASKS_FIELDS_' . $fieldId)], $fieldData);
}
unset($fieldData);
if ($getUf)
{
$uf = $USER_FIELD_MANAGER->GetUserFields('TASKS_TASK', 0, LANGUAGE_ID);
foreach ($uf as $key => $item)
{
$fields[$key] = [
'title' => $item['EDIT_FORM_LABEL'],
'type' => $item['USER_TYPE_ID'],
];
}
}
return $fields;
}