• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/classes/general/taskplannermaintance.php
  • Класс: CTaskPlannerMaintance
  • Вызов: CTaskPlannerMaintance::getTasks
static function getTasks($arIDs = array(), $bOpened = false)
{
	$res = null;

	if  (!is_array($arIDs) && $arIDs <> '')
	{
		$arIDs = unserialize($arIDs, ['allowed_classes' => false]);
	}

	$arIDs = array_values($arIDs);

	$USER_ID = self::$USER_ID;

	$res = array();
	if (count($arIDs) > 0)
	{
		$pathTemplate = BitrixTasksIntegrationSocialnetworkUITask::getActionPath();
		$arFilter = array('ID' => $arIDs);

		if ($bOpened)
		{
			$arFilter['!STATUS'] = self::$arTaskStatusOpened;
		}

		$tasks = array();
		$task2member = array();
		$dbRes = CTasks::GetList(
			array(),
			$arFilter,
			array(
				'ID', 'RESPONSIBLE_ID', 'PRIORITY', 'STATUS', 'TITLE',
				'TASK_CONTROL', 'TIME_SPENT_IN_LOGS', 'TIME_ESTIMATE',
				'ALLOW_TIME_TRACKING'
			)
		);
		while ($arRes = $dbRes->Fetch())
		{
			$arRes['TITLE'] = BitrixMainTextEmoji::decode($arRes['TITLE']);

			$tasks[$arRes['ID']] = $arRes;

			$task2member[$arRes['ID']]['ACCOMPLICES'] = array();
			$task2member[$arRes['ID']]['AUDITORS'] = array();
		}

		$taskIds = array_keys($tasks);
		if(!empty($taskIds))
		{
			$rsMembers = CTaskMembers::getList(
				array(),
				array('TASK_ID' => array_unique($taskIds))
			);
			while($arMember = $rsMembers->fetch())
			{
				$taskId = $arMember['TASK_ID'];

				if ($arMember['TYPE'] == 'A')
				{
					$task2member[$taskId]['ACCOMPLICES'][] = $arMember['USER_ID'];
				}
			}

			foreach($tasks as $id => $data)
			{
				// Permit only for responsible user and accomplices
				if ($data['RESPONSIBLE_ID'] !== $USER_ID &&
					!in_array($USER_ID, $task2member[$id]['ACCOMPLICES']))
				{
					continue;
				}

				$res[] = array(
					'ID' => $data['ID'],
					'RESPONSIBLE_ID' => $data['RESPONSIBLE_ID'],
					'PRIORITY' => $data['PRIORITY'],
					'STATUS' => $data['STATUS'],
					'TITLE' => $data['TITLE'],
					'TASK_CONTROL' => $data['TASK_CONTROL'],
					'ALLOW_TIME_TRACKING' => $data['ALLOW_TIME_TRACKING'],
					'TIME_SPENT_IN_LOGS' => $data['TIME_SPENT_IN_LOGS'],
					'TIME_ESTIMATE' => $data['TIME_ESTIMATE'],
					'URL' => BitrixTasksUITask::makeActionUrl($pathTemplate, $data['ID'], 'view', $USER_ID)
				);
			}
		}
	}

	return $res;
}