• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/integration/forum/task/usertopic.php
  • Класс: BitrixTasksIntegrationForumTaskUserTopic
  • Вызов: UserTopic::updateLastVisit
static function updateLastVisit(int $taskId, int $userId, DateTime $lastVisit = null): void
{
	$task = CTaskItem::getInstance($taskId, $userId);

	if (!static::includeModule() || !$task->checkCanRead())
	{
		return;
	}

	$lastVisit = ($lastVisit ?? new DateTime());
	try
	{
		$taskData = $task->getData(false, [], false);
	}
	catch (TasksException $e)
	{
		return;
	}

	if (!$taskData['FORUM_TOPIC_ID'])
	{
		return;
	}

	$primary = [
		'TOPIC_ID' => $taskData['FORUM_TOPIC_ID'],
		'USER_ID' => $userId
	];
	$fields = [
		'FORUM_ID' => Comment::getForumId(),
		'LAST_VISIT' => $lastVisit
	];

	if (UserTopicTable::getById($primary)->fetch())
	{
		UserTopicTable::update($primary, $fields);
	}
	else
	{
		UserTopicTable::add($primary + $fields);
	}
}