• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/lib/filehash.php
  • Класс: BitrixCloudsFileHashTable
  • Вызов: FileHashTable::dirList
static function dirList($bucketId, $path, $order, $filter)
{
	$connection = BitrixMainApplication::getConnection();
	$sqlHelper = $connection->getSqlHelper();

	$query = BitrixCloudsFileHashTable::query();
	$query->setSelect([
		new ExpressionField(
			'FILE_TYPE',
			'if(locate('/', substring(%s, length('' . $sqlHelper->forSql($path) . '')+1)) > 0, 'D', 'F')',
			['FILE_PATH']
		),
		new ExpressionField(
			'NAME',
			'substring_index(substring(%s, length('' . $sqlHelper->forSql($path) . '')+1), '/', 1)',
			['FILE_PATH']
		),
		new ExpressionField(
			'SUM_FILE_SIZE',
			'SUM(%s)',
			['FILE_SIZE']
		),
		new ExpressionField(
			'MAX_FILE_MTIME',
			'MAX(%s)',
			['FILE_MTIME']
		),
		new ExpressionField(
			'FILE_COUNT',
			'COUNT(1)'
		),
	]);

	$filter['=BUCKET_ID'] = $bucketId;
	$filter['%=FILE_PATH'] = $path . '%';
	$query->setFilter($filter);
	$query->setGroup(['FILE_TYPE', 'NAME']);
	$query->setOrder($order);

	$sql = $query->getQuery();

	return $connection->query($sql);
}