- Модуль: 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
];
}