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

	switch ($roleId)
	{
		case 'R':
			$filter['=RESPONSIBLE_ID'] = $userId;
			break;

		case 'A':
			$filter['=ACCOMPLICE'] = $userId;
			break;

		case 'U':
			$filter['=AUDITOR'] = $userId;
			break;

		case 'O':
			$filter['=CREATED_BY'] = $userId;
			$filter['!REFERENCE:RESPONSIBLE_ID'] = 'CREATED_BY';
			break;

		default:
			if (array_key_exists('GROUP_ID', $filter))
			{
				$filter['MEMBER'] = $userId;
			}
			$filter['::SUBFILTER-OR-ORIGIN'] = [
				'::LOGIC' => 'OR',
				'::SUBFILTER-1' => [
					'REAL_STATUS' => $filter['REAL_STATUS'],
				],
				'::SUBFILTER-2' => [
					'=CREATED_BY' => $userId,
					'REAL_STATUS' => Status::SUPPOSEDLY_COMPLETED,
				],
			];
			unset($filter['REAL_STATUS']);
			break;
	}
	unset($filter['ROLE']);

	return $filter;
}