• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/lib/controller/controlbutton.php
  • Класс: BitrixIntranetControllerControlButton
  • Вызов: ControlButton::getTaskData
private function getTaskData($entityId): array
{
	global $USER;

	if (!Loader::includeModule('tasks'))
	{
		return [];
	}

	if (
		!BitrixTasksAccessTaskAccessController::can(
			$USER->GetID(),
			BitrixTasksAccessActionDictionary::ACTION_TASK_READ,
			$entityId
		)
	)
	{
		return [];
	}

	$query = new Query(BitrixTasksInternalsTaskTable::getEntity());
	$query->setSelect([
		'ID',
		'TITLE',
		'DESCRIPTION',
		'DEADLINE',
		'STATUS',
		'CREATED_BY',
		'GROUP_ID',
		'TM_USER_ID' => 'TM.USER_ID',
		//'TM_TYPE' => 'TM.TYPE',
	]);
	$query->setFilter([
		'=ID' => $entityId,
	]);

	$query->registerRuntimeField('', new ReferenceField(
		'TM',
		BitrixTasksInternalsTaskMemberTable::getEntity(),
		['=ref.TASK_ID' => 'this.ID']
	));

	$res = $query->exec();

	$task = [
		'USER_IDS' => [],
	];

	while ($item = $res->fetch())
	{
		$task['ID'] = $item['ID'];
		$task['TITLE'] = $item['TITLE'];
		$task['DESCRIPTION'] = $item['DESCRIPTION'];
		$task['CREATED_BY'] = $item['CREATED_BY'];
		$task['GROUP_ID'] = $item['GROUP_ID'];
		$task['LINK'] = SITE_DIR . 'company/personal/user/' . $item['CREATED_BY'] . '/tasks/task/view/' . $item['ID'] . '/';

		$userId = (int)$item['TM_USER_ID'];
		$userType = $item['TM_TYPE'];

		unset($item['TM_USER_ID'], $item['TM_TYPE']);

		$task['SE_MEMBER'][$userId] = ['USER_ID' => $userId, 'TYPE' => $userType];
		if (!in_array($userId, $task['USER_IDS'], true))
		{
			$task['USER_IDS'][] = $userId;
		}

		/*$roleMap = ['O' => 'CREATED_BY', 'R' => 'RESPONSIBLE_ID'];
		if (array_key_exists($userType, $roleMap))
		{
			$tasks[$taskId][$roleMap[$userType]] = $userId;
		}*/
	}

	$this->checkUsers($task['USER_IDS']);

	return $task;
}