mirror of https://github.com/nextcloud/bookmarks
225 lines
5.3 KiB
PHP
225 lines
5.3 KiB
PHP
<?php
|
|
/*
|
|
* Copyright (c) 2020-2024. The Nextcloud Bookmarks contributors.
|
|
*
|
|
* This file is licensed under the Affero General Public License version 3 or later. See the COPYING file.
|
|
*/
|
|
|
|
namespace OCA\Bookmarks\Controller;
|
|
|
|
use OCA\Bookmarks\Exception\UnauthenticatedError;
|
|
use OCA\Bookmarks\Service\Authorizer;
|
|
use OCP\AppFramework\ApiController;
|
|
use OCP\AppFramework\Http\DataResponse;
|
|
use OCP\AppFramework\Http\JSONResponse;
|
|
|
|
class InternalFoldersController extends ApiController {
|
|
private $userId;
|
|
|
|
/** @var FoldersController */
|
|
private $controller;
|
|
|
|
public function __construct($appName, $request, $userId, FoldersController $controller, Authorizer $authorizer) {
|
|
parent::__construct($appName, $request);
|
|
$this->userId = $userId;
|
|
$this->controller = $controller;
|
|
if ($userId !== null) {
|
|
$authorizer->setUserId($userId);
|
|
}
|
|
$authorizer->setCORS(false);
|
|
}
|
|
|
|
/**
|
|
* @param string $title
|
|
* @param int $parent_folder
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function addFolder($title = '', $parent_folder = -1): JSONResponse {
|
|
return $this->controller->addFolder($title, $parent_folder);
|
|
}
|
|
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param int $layers
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function getFolderChildrenOrder($folderId, $layers = 0): JSONResponse {
|
|
return $this->controller->getFolderChildrenOrder($folderId, $layers);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param array $data
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function setFolderChildrenOrder($folderId, $data = []): JSONResponse {
|
|
return $this->controller->setFolderChildrenOrder($folderId, $data);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function deleteFolder($folderId): JSONResponse {
|
|
return $this->controller->deleteFolder($folderId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param int $bookmarkId
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function addToFolder($folderId, $bookmarkId): JSONResponse {
|
|
return $this->controller->addToFolder($folderId, $bookmarkId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param int $bookmarkId
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function removeFromFolder($folderId, $bookmarkId): JSONResponse {
|
|
return $this->controller->removeFromFolder($folderId, $bookmarkId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param string|null $title
|
|
* @param int|null $parent_folder
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function editFolder(int $folderId, $title = null, $parent_folder = null): JSONResponse {
|
|
return $this->controller->editFolder($folderId, $title, $parent_folder);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param string[] $fields
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function hashFolder($folderId, $fields = ['title', 'url']): JSONResponse {
|
|
return $this->controller->hashFolder($folderId, $fields);
|
|
}
|
|
|
|
/**
|
|
* @param int $root the id of the root folder whose descendants to return
|
|
* @param int $layers the number of layers of hierarchy to return
|
|
* @return JSONResponse
|
|
*
|
|
* @NoAdminRequired
|
|
*/
|
|
public function getFolders($root = -1, $layers = -1): JSONResponse {
|
|
return $this->controller->getFolders($root, $layers);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function getFolderPublicToken($folderId): DataResponse {
|
|
return $this->controller->getFolderPublicToken($folderId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function createFolderPublicToken($folderId): DataResponse {
|
|
return $this->controller->createFolderPublicToken($folderId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function deleteFolderPublicToken($folderId): DataResponse {
|
|
return $this->controller->deleteFolderPublicToken($folderId);
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function getShares($folderId): DataResponse {
|
|
return $this->controller->getShares($folderId);
|
|
}
|
|
|
|
/**
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
* @NoCSRFRequired
|
|
*
|
|
* @PublicPage
|
|
* @throws UnauthenticatedError
|
|
*/
|
|
public function findSharedFolders(): DataResponse {
|
|
return $this->controller->findSharedFolders();
|
|
}
|
|
|
|
/**
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
* @NoCSRFRequired
|
|
*
|
|
* @PublicPage
|
|
* @throws UnauthenticatedError
|
|
*/
|
|
public function findShares(): DataResponse {
|
|
return $this->controller->findShares();
|
|
}
|
|
|
|
/**
|
|
* @param int $folderId
|
|
* @param $participant
|
|
* @param $type
|
|
* @param bool $canWrite
|
|
* @param bool $canShare
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function createShare($folderId, $participant, $type, $canWrite = false, $canShare = false): DataResponse {
|
|
return $this->controller->createShare($folderId, $participant, $type, $canWrite, $canShare);
|
|
}
|
|
|
|
/**
|
|
* @param $shareId
|
|
* @param bool $canWrite
|
|
* @param bool $canShare
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function editShare($shareId, $canWrite = false, $canShare = false): DataResponse {
|
|
return $this->controller->editShare($shareId, $canWrite, $canShare);
|
|
}
|
|
|
|
/**
|
|
* @param int $shareId
|
|
* @return DataResponse
|
|
* @NoAdminRequired
|
|
*/
|
|
public function deleteShare($shareId): DataResponse {
|
|
return $this->controller->deleteShare($shareId);
|
|
}
|
|
}
|