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