summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorRoeland Jago Douma <roeland@famdouma.nl>2016-11-01 12:15:14 +0100
committerRoeland Jago Douma <roeland@famdouma.nl>2016-11-01 12:16:05 +0100
commitfc4d0a86efef1af4d7ea17547e259cfdd16e82b4 (patch)
tree7a493b8df05af9b2f0ceb4b83b1316a38330029a /lib
parentce7eb02685940c3d8490965cfc150a591fd92762 (diff)
downloadnextcloud-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.php3
-rw-r--r--lib/private/Share20/Manager.php10
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;
}, []);
}