• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/manager/task/template.php
  • Класс: Bitrix\Tasks\Manager\Task\Template
  • Вызов: Template::getList
static function getList($userId, array $listParameters = [], array $parameters = [])
{
	$userId = (int) $userId;
	$errors = static::ensureHaveErrorCollection($parameters);

	// todo: get rid of LIST_PARAMETERS, if can. Move limit, filter, sort, etc.. to the first level

	if (array_key_exists('NAV_PARAMS', $listParameters) && !empty($listParameters['NAV_PARAMS']))
	{
		$params = ['NAV_PARAMS' => $listParameters['NAV_PARAMS']];
	}
	else
	{
		$navParams = static::prepareNav(
			($listParameters['limit'] ?? null),
			($listParameters['offset'] ?? null),
			($parameters['PUBLIC_MODE'] ?? null)
		);

		$params = false;
		if (!empty($navParams))
		{
			$params = array('NAV_PARAMS' => $navParams);
		}
	}

	if (
		array_key_exists('SORTING', (array)($listParameters['order'] ?? null))
		&& array_key_exists('GROUP_ID', ($listParameters['legacyFilter'] ?? null))
	)
	{ // need for sorting in group
		$params['SORTING_GROUP_ID'] = $listParameters['legacyFilter']['GROUP_ID'];
	}

	// an exception about sql error may fall here
	$res = \CTaskTemplates::GetList(
		($listParameters['order'] ?? null),
		($listParameters['filter'] ?? null),
		$params,
		[
			'USER_ID' => $userId, // check permissions for current user
			'USER_IS_ADMIN' => SocialNetwork\User::isAdmin(),
		],
		($listParameters['select'] ?? null)
	);

	$accessController = new TemplateAccessController((int) $userId);

	$items = [];
	while ($row = $res->Fetch())
	{
		$templateId = (int) $row['ID'];
		$templateModel = TemplateModel::createFromId($templateId);
		$accessRequest = [
			ActionDictionary::ACTION_TEMPLATE_READ => null,
			ActionDictionary::ACTION_TEMPLATE_CREATE => null,
			ActionDictionary::ACTION_TEMPLATE_REMOVE => null,
			ActionDictionary::ACTION_TEMPLATE_EDIT => null,
		];

		$row['ACCOMPLICES'] = unserialize($row['ACCOMPLICES'], ['allowed_classes' => false]);
		$row['AUDITORS'] = unserialize($row['AUDITORS'], ['allowed_classes' => false]);
		$row['RESPONSIBLES'] = unserialize($row['RESPONSIBLES'], ['allowed_classes' => false]);

		$row['TAGS'] = unserialize(($row['TAGS'] ?? ''), ['allowed_classes' => false]);
		$row['DEPENDS_ON'] = unserialize(($row['DEPENDS_ON'] ?? ''), ['allowed_classes' => false]);

		$row['REPLICATE_PARAMS'] = unserialize(($row['REPLICATE_PARAMS'] ?? ''), ['allowed_classes' => false]);
		$row['ALLOWED_ACTIONS'] = $accessController->batchCheck($accessRequest, $templateModel);

		$items[$templateId] = $row;
	}

	$childCounts = \Bitrix\Tasks\Internals\Helper\Task\Template\Dependence::getDirectChildCount(
		array_keys($items),
		array(
			'USER_ID' => $userId
		)
	);

	foreach ($childCounts as $itemId => $count)
	{
		$items[$itemId]['CHILDS_COUNT'] = (int) $count;
	}

	return [
		'DATA' => $items,
		'ERRORS' => $errors,
		'OBJ_RES' => $res
	];
}