aboutsummaryrefslogtreecommitdiffstats
path: root/apps/federatedfilesharing/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2017-04-15 13:06:24 -0500
committerGitHub <noreply@github.com>2017-04-15 13:06:24 -0500
commit10290eb0060eb2194be2dd4fc8b707aa7eef5c0a (patch)
treeb71665687f9c19f5b6f8e9f34ffbd5a8a2d4f5e8 /apps/federatedfilesharing/lib
parentdafa9c740abee38bb54e9df05947bcf09857380a (diff)
parentcab41118f67e6a4743bac2cfcfa69a4bee28f2a3 (diff)
downloadnextcloud-server-10290eb0060eb2194be2dd4fc8b707aa7eef5c0a.tar.gz
nextcloud-server-10290eb0060eb2194be2dd4fc8b707aa7eef5c0a.zip
Merge pull request #2834 from nextcloud/accesListToShareManager
Access list to share manager
Diffstat (limited to 'apps/federatedfilesharing/lib')
-rw-r--r--apps/federatedfilesharing/lib/FederatedShareProvider.php40
1 files changed, 40 insertions, 0 deletions
diff --git a/apps/federatedfilesharing/lib/FederatedShareProvider.php b/apps/federatedfilesharing/lib/FederatedShareProvider.php
index 120365263a9..34e02391e05 100644
--- a/apps/federatedfilesharing/lib/FederatedShareProvider.php
+++ b/apps/federatedfilesharing/lib/FederatedShareProvider.php
@@ -28,6 +28,7 @@ namespace OCA\FederatedFileSharing;
use OC\Share20\Share;
use OCP\Federation\ICloudIdManager;
+use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
use OCP\IConfig;
@@ -974,4 +975,43 @@ class FederatedShareProvider implements IShareProvider {
$result = $this->config->getAppValue('files_sharing', 'lookupServerUploadEnabled', 'yes');
return ($result === 'yes');
}
+
+ /**
+ * @inheritdoc
+ */
+ public function getAccessList($nodes, $currentAccess) {
+ $ids = [];
+ foreach ($nodes as $node) {
+ $ids[] = $node->getId();
+ }
+
+ $qb = $this->dbConnection->getQueryBuilder();
+ $qb->select('share_with', 'token', 'file_source')
+ ->from('share')
+ ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_REMOTE)))
+ ->andWhere($qb->expr()->in('file_source', $qb->createNamedParameter($ids, IQueryBuilder::PARAM_INT_ARRAY)))
+ ->andWhere($qb->expr()->orX(
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('file')),
+ $qb->expr()->eq('item_type', $qb->createNamedParameter('folder'))
+ ));
+ $cursor = $qb->execute();
+
+ if ($currentAccess === false) {
+ $remote = $cursor->fetch() !== false;
+ $cursor->closeCursor();
+
+ return ['remote' => $remote];
+ }
+
+ $remote = [];
+ while ($row = $cursor->fetch()) {
+ $remote[$row['share_with']] = [
+ 'node_id' => $row['file_source'],
+ 'token' => $row['token'],
+ ];
+ }
+ $cursor->closeCursor();
+
+ return ['remote' => $remote];
+ }
}