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