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