- Модуль: 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;
}