- Модуль: documentgenerator
- Путь к файлу: ~/bitrix/modules/documentgenerator/lib/controller/template.php
- Класс: BitrixDocumentGeneratorControllerTemplate
- Вызов: Template::listAction
public function listAction(array $select = ['*'], array $order = null, array $filter = null, PageNavigation $pageNavigation = null, CRestServer $restServer = null)
{
$withProviders = $withUsers = false;
if(($key = array_search('providers', $select)) !== false)
{
$withProviders = true;
unset($select[$key]);
}
if(($key = array_search('users', $select)) !== false)
{
$withUsers = true;
unset($select[$key]);
}
if(!is_array($filter))
{
$filter = [];
}
if(!isset($filter['isDeleted']) && !isset($filter['@isDeleted']) && !isset($filter['!isDeleted']))
{
$filter['isDeleted'] = 'N';
}
if($restServer)
{
$filter['moduleId'] = Driver::REST_MODULE_ID;
}
$this->prepareDateTimeFieldsForFilter($filter, ['createTime', 'updateTime']);
$converter = new Converter(0);
if(is_array($filter))
{
$filter = $converter->setFormat(Converter::TO_UPPER | Converter::KEYS | Converter::TO_SNAKE)->process($filter);
}
if(is_array($order))
{
$order = $converter->setFormat(Converter::TO_UPPER | Converter::KEYS | Converter::TO_SNAKE)->process($order);
}
if(is_array($select))
{
$select = $converter->setFormat(Converter::TO_UPPER | Converter::VALUES | Converter::TO_SNAKE)->process($select);
}
if(!in_array('ID', $select))
{
$select[] = 'ID';
}
$filter = array_merge($filter, Driver::getInstance()->getUserPermissions()->getFilterForTemplateList());
$templates = TemplateTable::getList([
'select' => $select,
'filter' => $filter,
'order' => $order ?? [],
'offset' => $pageNavigation->getOffset(),
'limit' => $pageNavigation->getLimit(),
])->fetchAll();
$buffer = [];
foreach($templates as $template)
{
$template['download'] = $this->getTemplateDownloadLink($template['ID'], $template['UPDATE_TIME']);
$buffer[$template['ID']] = $template;
}
$templates = $buffer;
unset($buffer);
if($withProviders)
{
$providers = TemplateProviderTable::getList(['filter' => ['TEMPLATE_ID' => array_keys($templates)]]);
while($provider = $providers->fetch())
{
$templates[$provider['TEMPLATE_ID']]['PROVIDERS'][] = $provider['PROVIDER'];
}
}
if($withUsers)
{
foreach($templates as &$template)
{
$template['USERS'] = [];
}
$users = TemplateUserTable::getList(['filter' => ['TEMPLATE_ID' => array_keys($templates)]]);
while($user = $users->fetch())
{
$templates[$user['TEMPLATE_ID']]['USERS'][] = $user['ACCESS_CODE'];
}
}
return new Page('templates', $this->convertKeysToCamelCase($templates), function() use ($filter)
{
return TemplateTable::getCount($filter);
});
}