- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/rest/service/storage.php
- Класс: BitrixDiskRestServiceStorage
- Вызов: Storage::getList
protected function getList(array $filter = array(), array $order = array())
{
$securityContext = $this->getSecurityContextByUser($this->userId);
$internalizer = new DiskRestInternalizer(new EntityStorage, $this);
$navData = DiskRestRestManager::getNavData($this->start);
$parameters = array_merge(
array(
'with' => array('ROOT_OBJECT'),
'filter' => array_merge(array(
'=ROOT_OBJECT.PARENT_ID' => null,
'=MODULE_ID' => DiskDriver::INTERNAL_MODULE_ID,
'=RIGHTS_CHECK' => true,
), $internalizer->cleanFilter($filter)),
'runtime' => array(
new ExpressionField('RIGHTS_CHECK', 'CASE WHEN ' . $securityContext->getSqlExpressionForList('%1$s', '%2$s') . ' THEN 1 ELSE 0 END', array(
'ROOT_OBJECT.ID',
'ROOT_OBJECT.CREATED_BY'
), array('data_type' => 'boolean',))
),
'order' => $order,
'count_total' => true,
),
$navData
);
$parameters = DiskDriver::getInstance()
->getRightsManager()
->addRightsCheck(
$securityContext,
$parameters,
array( 'ROOT_OBJECT.ID', 'ROOT_OBJECT.CREATED_BY')
)
;
$storages = array();
$storageRows = DiskStorage::getList($parameters);
foreach($storageRows as $storageRow)
{
$storage = DiskStorage::buildFromArray($storageRow);
if(
!$storage->getProxyType() instanceof DiskProxyTypeCommon &&
!$storage->getProxyType() instanceof DiskProxyTypeGroup &&
!$storage->getProxyType() instanceof DiskProxyTypeUser
)
{
continue;
}
$storages[] = $storage;
}
unset($storage);
return DiskRestRestManager::setNavData(
$storages,
array(
"count" => $storageRows->getCount(),
"offset" => $navData['offset'],
)
);
}