• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/task/viewed.php
  • Класс: BitrixTasksInternalsTaskViewedTable
  • Вызов: ViewedTable::viewTask
static function viewTask(int $taskId, int $userId, DateTime $viewedDate, array $parameters = []): void
{
	$cacheKey = $taskId.'.'.$userId.'.'.$viewedDate->getTimestamp();
	if (array_key_exists($cacheKey, self::$cache))
	{
		return;
	}

	$list = static::getList([
		'select' => ['TASK_ID', 'USER_ID', 'IS_REAL_VIEW'],
		'filter' => [
			'=TASK_ID' => $taskId,
			'=USER_ID' => $userId,
		],
	]);

	if ($item = $list->fetch())
	{
		$primary = ['TASK_ID' => $item['TASK_ID'], 'USER_ID' => $item['USER_ID']];
		$params = ['VIEWED_DATE' => $viewedDate];
		if ($item['IS_REAL_VIEW'] === 'N' && $parameters['IS_REAL_VIEW'])
		{
			$params['IS_REAL_VIEW'] = 'Y';
			static::onFirstRealView($taskId, $userId);
		}
		static::update($primary, $params);
	}
	else
	{
		static::add([
			'TASK_ID' => $taskId,
			'USER_ID' => $userId,
			'VIEWED_DATE' => $viewedDate,
			'IS_REAL_VIEW' => $parameters['IS_REAL_VIEW'],
		]);

		if ($parameters['IS_REAL_VIEW'])
		{
			static::onFirstRealView($taskId, $userId);
		}
	}

	self::$cache[$cacheKey] = true;
}