• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/timeline/tasks/controller.php
  • Класс: Bitrix\Crm\Timeline\Tasks\Controller
  • Вызов: Controller::handleCommentActivity
private function handleCommentActivity(Bindings $bindings, int $typeId, array $timelineParams): void
{
	[$bindings, $timelineParams] = $this->prepareParams($bindings, $timelineParams);

	foreach ($bindings as $identifier)
	{
		$taskId = $timelineParams['TASK_ID'] ?? null;
		if (is_null($taskId))
		{
			return;
		}

		$fromUser = $timelineParams['FROM_USER'] ?? 0;
		$responsibleId = $this->getAssignedByEntity($identifier);

		if (is_null($responsibleId))
		{
			return;
		}

		if ($fromUser === $responsibleId)
		{
			continue;
		}

		$activity = $this->commentActivityProvider->find($taskId, $identifier);

		if (is_null($activity) || $activity->getCompleted())
		{
			$result = $this->commentActivityProvider->createActivity(
				Comment::getProviderTypeId(),
				$this->commentActivityProvider->prepareFields($taskId, $responsibleId, $identifier, $timelineParams)
			);

			if ($result->isSuccess())
			{
				$timelineParams['SKIP_BINDINGS_UPDATE'] = true;
				$this->handleTaskEvent($typeId, new Bindings(...[$identifier]), $timelineParams);
			}
		}
		else
		{
			$this->commentActivityProvider->update($activity, $timelineParams);
		}
	}
}