• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/agent.php
  • Класс: BitrixTasksInternalsCounterAgent
  • Вызов: Agent::expiredSoon
static function expiredSoon($taskId): string
{
	$task = Task::getInstance($taskId, User::getAdminId());
	$statusesCompleted = [Status::DEFERRED, Status::COMPLETED, Status::SUPPOSEDLY_COMPLETED];

	if (!$task || !$task['RESPONSIBLE_ID'] || !($taskData = $task->getData()))
	{
		return '';
	}

	if (is_null($taskData['DEADLINE']))
	{
		self::remove($taskData['ID']);
		return '';
	}

	self::add($taskId, $taskData['DEADLINE'], true);

	if (in_array((int)$taskData['STATUS'], $statusesCompleted, true))
	{
		return '';
	}

	CounterCounterService::addEvent(CounterEventEventDictionary::EVENT_TASK_EXPIRED_SOON, $taskData);

	$commentPoster = CommentPoster::getInstance($taskId, (int)$taskData['CREATED_BY']);
	$commentPoster && $commentPoster->postCommentsOnTaskExpiredSoon($taskData);

	CTaskNotifications::sendExpiredSoonMessage($taskData);

	$event = new Event('tasks', self::EVENT_TASK_EXPIRED_SOON, [
		'TASK_ID' => $taskId,
		'TASK' => $taskData,
	]);
	$event->send();

	BizprocListener::onTaskExpiredSoon($taskId, $taskData);

	return '';
}