• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/provider/templateprovider.php
  • Класс: BitrixTasksProviderTemplateProvider
  • Вызов: TemplateProvider::getList
public function getList($arOrder = [], $arFilter = [], $arSelect = [], $arParams = [], $arNavParams = []): CDBResult
{
	$this->configure($arOrder, $arFilter, $arSelect, $arParams, $arNavParams);

	$this
		->makeUserFields()
		->makeArSqlSearch()
		->makeArFields()
		->makeArSelect()
		->makeFrom()
		->makeOrder()
		->makeSelect()
		->makeAccessSql()
		->makeWhere();

	$query = $this->buildQuery();

	$result = $this->executeQuery($query);

	$rows = [];
	while ($row = $result->Fetch())
	{
		$rows[] = $row;
	}

	if (empty($rows))
	{
		return $result;
	}

	$templateIds = array_column($rows, 'ID');
	$members = $this->getMembers($templateIds);

	foreach ($rows as $k => $row)
	{
		$row['RESPONSIBLES'] = (isset($members[$row['ID']][MemberTable::MEMBER_TYPE_RESPONSIBLE]))
			? serialize($members[$row['ID']][MemberTable::MEMBER_TYPE_RESPONSIBLE])
			: serialize([]);
		$row['ACCOMPLICES'] = (isset($members[$row['ID']][MemberTable::MEMBER_TYPE_ACCOMPLICE]))
			? serialize($members[$row['ID']][MemberTable::MEMBER_TYPE_ACCOMPLICE])
			: serialize([]);
		$row['AUDITORS'] = (isset($members[$row['ID']][MemberTable::MEMBER_TYPE_AUDITOR]))
			? serialize($members[$row['ID']][MemberTable::MEMBER_TYPE_AUDITOR])
			: serialize([]);

		$rows[$k] = $row;
	}

	$cdbResult = new CDBResult($result);
	$cdbResult->InitFromArray($rows);

	return $cdbResult;
}