- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/documentgenerator/document.php
- Класс: Bitrix\Crm\Controller\DocumentGenerator\Document
- Вызов: Document::listAction
public function listAction(array $select = ['*'], array $order = null, array $filter = null, PageNavigation $pageNavigation = null)
{
if(!is_array($filter))
{
$filter = [];
}
$filter['=template.moduleId'] = static::MODULE_ID;
if (
(!isset($filter['entityTypeId']) || !is_scalar($filter['entityTypeId']))
&& !\CCrmPerms::IsAccessEnabled()
)
{
$this->addError(ErrorCode::getAccessDeniedError());
return null;
}
if (
(isset($filter['entityTypeId']) && is_scalar($filter['entityTypeId']))
&& !Container::getInstance()->getUserPermissions()->checkReadPermissions($filter['entityTypeId'])
)
{
$this->addError(ErrorCode::getAccessDeniedError());
return null;
}
if(is_array($select) && in_array('entityId', $select))
{
$select[] = 'value';
unset($select[array_search('entityId', $select)]);
}
$providersMap = DocumentGeneratorManager::getInstance()->getCrmOwnerTypeProvidersMap();
if(is_array($filter))
{
if(isset($filter['entityTypeId']))
{
$filter['=provider'] = isset($providersMap[(int)$filter['entityTypeId']])
? mb_strtolower($providersMap[(int)$filter['entityTypeId']])
: $filter['entityTypeId'];
unset($filter['entityTypeId']);
}
if(isset($filter['entityId']))
{
$filter['=value'] = $filter['entityId'];
unset($filter['entityId']);
}
}
/** @var Page $result */
$result = $this->proxyAction('listAction', [$select, $order, $filter, $pageNavigation]);
$documents = $result->getItems();
foreach($documents as $key => &$document)
{
$document = $this->prepareDocumentData($document);
$result->offsetSet($key, $document);
}
return $result;
}