• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/rest/controllers/task.php
  • Класс: BitrixTasksRestControllersTask
  • Вызов: Task::processFilterNotViewed
private function processFilterNotViewed(array $filter, int $userId, string $roleId): array
{
	if (!array_key_exists('NOT_VIEWED', $filter) || $filter['NOT_VIEWED'] !== 'Y')
	{
		return $filter;
	}

	$filter['VIEWED'] = 0;
	$filter['VIEWED_BY'] = $userId;
	$filter['!CREATED_BY'] = $userId;

	switch ($roleId)
	{
		case 'A':
			$filter['::SUBFILTER-R'] = ['=ACCOMPLICE' => $userId];
			break;

		case 'U':
			$filter['::SUBFILTER-R'] = ['=AUDITOR' => $userId];
			break;

		case '': // view all
		default:
			$filter['::SUBFILTER-OR-NW'] = [
				'::LOGIC' => 'OR',
				'::SUBFILTER-R' => ['RESPONSIBLE_ID' => $userId],
				'::SUBFILTER-A' => ['=ACCOMPLICE' => $userId],
			];
			break;
	}

	return $filter;
}