- Модуль: mobile
- Путь к файлу: ~/bitrix/modules/mobile/lib/rest/disk.php
- Класс: BitrixMobileRestDisk
- Вызов: Disk::get
static function get($params, $offset, CRestServer $server)
{
$types = ["user", "group", "common"];
$type = "user";
$entityId = $params["entityId"];
$result = null;
$folderId = null;
$filter = $params["filter"] ?? null;
if (isset($params["folderId"]) && intval($params["folderId"]))
{
$folderId = intval($params["folderId"]);
}
if (isset($params["type"]) && $params["type"] && in_array($params["type"], $types))
{
$type = $params["type"];
}
$parameters = [
"filter" => $filter,
'limit' => 50,
'count_total' => true,
'offset' => $offset > 0 ? $offset : 0,
];
if (is_array($filter))
{
$parameters["filter"] = $filter;
}
$parameters['filter']['DELETED_TYPE'] = BitrixDiskInternalsObjectTable::DELETED_TYPE_NONE;
if (isset($params["order"]) && $params["order"])
{
$parameters["order"] = $params["order"];
}
if (Loader::includeModule("disk"))
{
$storage = null;
if ($type == "user")
{
$storage = Driver::getInstance()->getStorageByUserId($entityId);
}
else
{
if ($type == "common")
{
$storage = Driver::getInstance()->getStorageByCommonId($entityId);
}
else
{
if ($type == "group")
{
$storage = Driver::getInstance()->getStorageByGroupId($entityId);
}
}
}
if ($storage)
{
$targetFolderId = $storage->getRootObjectId();
if ($folderId)
{
$targetFolderId = $folderId;
}
$securityContext = $storage->getCurrentUserSecurityContext();
$parameters = Driver::getInstance()->getRightsManager()->addRightsCheck($securityContext, $parameters, ['ID', 'CREATED_BY']);
$folder = Folder::getById($targetFolderId);
if($folder)
{
$childrenRows = FolderTable::getChildren($folder->getRealObjectId(), $parameters);
$children = [];
foreach ($childrenRows as $childrenRow)
{
$children[] = BitrixDiskBaseObject::buildFromArray($childrenRow);
}
$items = array_map(function (BitrixDiskBaseObject $item) {
$arrayData = $item->toArray();
$arrayData["CREATE_TIME"] = CRestUtil::ConvertDateTime($arrayData["CREATE_TIME"]);
$arrayData["UPDATE_TIME"] = CRestUtil::ConvertDateTime($arrayData["UPDATE_TIME"]);
$arrayData["SYNC_UPDATE_TIME"] = CRestUtil::ConvertDateTime($arrayData["SYNC_UPDATE_TIME"]);
unset($arrayData["PARENT"]);
$arrayData["TYPE"] = $arrayData["TYPE"] == "2" ? "folder" : "file";
if($arrayData["TYPE"] == "file")
$arrayData["PREVIEW_URL"] = BitrixMainEngineUrlManager::getInstance()->create('disk.api.file.showImage', [
'fileId' => $arrayData["ID"],
'signature' => BitrixDiskSecurityParameterSigner::getImageSignature($arrayData["ID"], 400, 400),
'width' => 400,
'height' => 400,
])->getUri();
return $arrayData;
}, $children);
$result["items"] = $items;
$result["storageId"] = $storage->getId();
$result["folderId"] = $targetFolderId;
$result["name"] = $folder->getName();
$result["rootFolderId"] = $storage->getRootObjectId();
$count = $childrenRows->getCount();
if (($offset + count($items)) < $count)
{
$result['next'] = $offset + count($items);
}
$result['total'] = $count;
}
}
}
return $result;
}