diff options
author | Roeland Jago Douma <roeland@famdouma.nl> | 2016-11-01 12:15:14 +0100 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2016-11-01 12:16:05 +0100 |
commit | fc4d0a86efef1af4d7ea17547e259cfdd16e82b4 (patch) | |
tree | 7a493b8df05af9b2f0ceb4b83b1316a38330029a /lib | |
parent | ce7eb02685940c3d8490965cfc150a591fd92762 (diff) | |
download | nextcloud-server-fc4d0a86efef1af4d7ea17547e259cfdd16e82b4.tar.gz nextcloud-server-fc4d0a86efef1af4d7ea17547e259cfdd16e82b4.zip |
Fix merging backend results
* Merge share types correctly
* Filter share types
* Order share types
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Share20/DefaultShareProvider.php | 3 | ||||
-rw-r--r-- | lib/private/Share20/Manager.php | 10 |
2 files changed, 11 insertions, 2 deletions
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php index 60859c485c7..bdb6ac466ec 100644 --- a/lib/private/Share20/DefaultShareProvider.php +++ b/lib/private/Share20/DefaultShareProvider.php @@ -466,7 +466,8 @@ class DefaultShareProvider implements IShareProvider { $qb->andWhere($qb->expr()->orX( $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_USER)), - $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)) + $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)), + $qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_LINK)) )); /** diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 9468a1de306..838650ada15 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -887,7 +887,15 @@ class Manager implements IManager { $providers = $this->factory->getAllProviders(); return array_reduce($providers, function($shares, IShareProvider $provider) use ($userId, $node, $reshares) { - return $shares + $provider->getSharesInFolder($userId, $node, $reshares); + $newShares = $provider->getSharesInFolder($userId, $node, $reshares); + foreach ($newShares as $fid => $data) { + if (!isset($shares[$fid])) { + $shares[$fid] = []; + } + + $shares[$fid] = array_merge($shares[$fid], $data); + } + return $shares; }, []); } |