- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/agent.php
- Класс: BitrixTasksInternalsCounterAgent
- Вызов: Agent::expired
static function expired($taskId): string
{
$adminId = User::getAdminId();
$task = Task::getInstance($taskId, $adminId);
$statesCompleted = [Status::DEFERRED, Status::COMPLETED, Status::SUPPOSEDLY_COMPLETED];
if (
!$task
|| !$task['RESPONSIBLE_ID']
|| in_array((int)$task['STATUS'], $statesCompleted, true)
|| !($taskData = $task->getData())
|| !array_key_exists('CREATED_BY', $taskData)
|| !$taskData['CREATED_BY']
)
{
return '';
}
CounterCounterService::addEvent(CounterEventEventDictionary::EVENT_TASK_EXPIRED, $taskData);
$commentPoster = CommentPoster::getInstance($taskId, (int)$taskData['CREATED_BY']);
$commentPoster && $commentPoster->postCommentsOnTaskExpired($taskData);
CTaskNotifications::sendExpiredMessage($taskData);
$event = new Event('tasks', self::EVENT_TASK_EXPIRED, [
'TASK_ID' => $taskId,
'TASK' => $taskData,
]);
$event->send();
BizprocListener::onTaskExpired($taskId, $taskData);
/** @var TaskCollectionMember $members */
$members = $taskData['SE_MEMBER'];
$responsibleId = 0;
foreach ($members as $member)
{
$memberData = $member->getData();
if ($memberData['TYPE'] === RoleDictionary::ROLE_RESPONSIBLE)
{
$responsibleId = (int)$memberData['USER_ID'];
}
}
(new TimeLineManager($taskId, $responsibleId))->onTaskExpired()->save();
return '';
}