[Share 2.0] Add subfiles=x

This commit is contained in:
Roeland Jago Douma 2016-01-19 14:35:16 +01:00
parent 247b2ee0aa
commit 0a9cd91e1d
3 changed files with 45 additions and 13 deletions

View File

@ -342,6 +342,46 @@ class Share20OCS {
return new \OC_OCS_Result($formatted); return new \OC_OCS_Result($formatted);
} }
/**
* @param \OCP\Files\Folder $folder
* @return \OC_OCS_Result
*/
private function getSharesInDir($folder) {
if (!($folder instanceof \OCP\Files\Folder)) {
return new \OC_OCS_Result(null, 400, "not a directory");
}
$nodes = $folder->getDirectoryListing();
/** @var IShare[] $shares */
$shares = [];
foreach ($nodes as $node) {
$userShares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_USER, $node, false, -1, 0));
$groupShares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_GROUP, $node, false, -1, 0));
$linkShares = array_merge($shares, $this->shareManager->getSharesBy($this->currentUser, \OCP\Share::SHARE_TYPE_LINK, $node, false, -1, 0));
//TODO: Add federated shares
$shares = array_merge($shares, $userShares, $groupShares, $linkShares);
}
$formatted = [];
foreach ($shares as $share) {
$formatted[] = $this->formatShare($share);
}
return new \OC_OCS_Result($formatted);
}
/**
* The getShares function.
*
* - Get shares by the current user
* - Get shares by the current user and reshares (?reshares=true)
* - Get shares with the current user (?shared_with_me=true)
* - Get shares for a specific path (?path=...)
* - Get all shares in a folder (?subfiles=true&path=..)
*
* @return \OC_OCS_Result
*/
public function getShares() { public function getShares() {
$sharedWithMe = $this->request->getParam('shared_with_me', null); $sharedWithMe = $this->request->getParam('shared_with_me', null);
$reshares = $this->request->getParam('reshares', null); $reshares = $this->request->getParam('reshares', null);
@ -361,6 +401,10 @@ class Share20OCS {
} }
} }
if ($subfiles === 'true') {
return $this->getSharesInDir($path);
}
if ($reshares === 'true') { if ($reshares === 'true') {
$reshares = true; $reshares = true;
} else { } else {

View File

@ -279,9 +279,9 @@ class DefaultShareProvider implements IShareProvider {
if ($limit !== -1) { if ($limit !== -1) {
$qb->setMaxResults($limit); $qb->setMaxResults($limit);
$qb->setFirstResult($offset);
} }
$qb->setFirstResult($offset);
$qb->orderBy('id'); $qb->orderBy('id');
$cursor = $qb->execute(); $cursor = $qb->execute();

View File

@ -678,18 +678,6 @@ class Manager {
public function getSharesByPath(\OCP\Files\Node $path, $page=0, $perPage=50) { public function getSharesByPath(\OCP\Files\Node $path, $page=0, $perPage=50) {
} }
/**
* Get all shares that are shared with the current user
*
* @param int $shareType
* @param int $page
* @param int $perPage
*
* @return Share[]
*/
public function getSharedWithMe($shareType = null, $page=0, $perPage=50) {
}
/** /**
* Get the share by token possible with password * Get the share by token possible with password
* *