- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task.php
- Класс: BitrixTasksManagerTask
- Вызов: Task::prepareSearchIndex
static function prepareSearchIndex(array $task, array $fields = [])
{
if (empty($task))
{
return '';
}
if (empty($fields))
{
$fields = [
'ID',
'TITLE',
'DESCRIPTION',
'CHECKLIST',
'RESPONSIBLE',
'ORIGINATOR',
'AUDITORS',
'ACCOMPLICES',
'CRM',
'TAGS',
'GROUP'
];
}
$index = [];
foreach ($fields as $field)
{
switch ($field)
{
default:
if (array_key_exists($field, $task) && !empty($task[$field]))
{
$index[] = $task[$field];
}
break;
// custom fields
case 'CHECKLIST':
/** BitrixTasksItemTaskCollectionCheckList */
$checkList = (
is_object($task['SE_CHECKLIST'] ?? null)
? $task['SE_CHECKLIST']->export()
: (array)($task['CHECKLIST'] ?? [])
);
foreach ($checkList as $item)
{
$index[] = $item['TITLE'];
}
break;
case 'RESPONSIBLE':
$index[] = join(' ', User::getUserName([$task['RESPONSIBLE_ID']]));
break;
case 'ORIGINATOR':
$index[] = join(' ', User::getUserName([$task['CREATED_BY']]));
break;
case 'AUDITORS':
if (array_key_exists('AUDITORS', $task))
{
$auditors = (is_object($task['AUDITORS'])? $task['AUDITORS']->toArray() : $task['AUDITORS']);
if ($auditors)
{
$index[] = join(' ', User::getUserName(array_unique($auditors)));
}
}
break;
case 'ACCOMPLICES':
if (array_key_exists('ACCOMPLICES', $task))
{
$accomplices = (is_object($task['ACCOMPLICES'])? $task['ACCOMPLICES']->toArray() : $task['ACCOMPLICES']);
if ($accomplices)
{
$index[] = join(' ', User::getUserName(array_unique($accomplices)));
}
}
break;
case 'CRM':
if (BitrixMainModuleManager::isModuleInstalled('crm'))
{
$uf = (
is_object($task['UF_CRM_TASK'] ?? null)
? $task['UF_CRM_TASK']->toArray()
: (array)($task['UF_CRM_TASK'] ?? [])
);
foreach ($uf as $item)
{
$crmElement = explode('_', $item);
$type = $crmElement[0];
$typeId = CCrmOwnerType::ResolveID(CCrmOwnerTypeAbbr::ResolveName($type));
$title = CCrmOwnerType::GetCaption($typeId, $crmElement[1]);
$index[] = $title;
}
}
break;
case 'TAGS':
$tags = (
is_object($task['TAGS'] ?? null)
? $task['TAGS']->export()
: (array)($task['TAGS'] ?? [])
);
$index[] = join(' ', $tags);
break;
case 'GROUP':
$groupId = $task['GROUP_ID'];
$groups = Group::getData([$groupId]);
$groupName = ($groups[$groupId]['NAME'] ?? null);
$index[] = $groupName;
break;
}
}
$strIndex = join(' ', $index);
$strIndex = array_unique(explode(' ', $strIndex));
$strIndex = join(' ', $strIndex);
$strIndex = toUpper($strIndex);
return $strIndex;
}