ShareByMailProvider: getAccessList: return full list of recipients

Previously was returning only boolean true if the Node was shared
by email, or false if not. Now provides an array containing the
list of email share recipients.

Signed-off-by: Adam Serbinski <adam@serbinski.com>
pull/32631/head
Adam Serbinski 4 years ago committed by Adam Serbinski
parent 5ca6249f42
commit 26ae5e6dfb
  1. 16
      apps/sharebymail/lib/ShareByMailProvider.php
  2. 14
      lib/private/Share20/Manager.php
  3. 9
      lib/public/Share/IManager.php

@ -1098,18 +1098,26 @@ class ShareByMailProvider implements IShareProvider {
}
$qb = $this->dbConnection->getQueryBuilder();
$qb->select('share_with')
$qb->select('share_with', 'file_source')
->from('share')
->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)))
->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'))
))
->setMaxResults(1);
));
$cursor = $qb->executeQuery();
$mail = $cursor->fetch() !== false;
$mail = array();
while ($row = $cursor->fetch()) {
if ($currentAccess === false) {
$mail[] = $row['share_with'];
} else {
$mail[$row['share_with']] = [
'node_id' => $row['file_source']
];
}
}
$cursor->closeCursor();
return ['public' => $mail];

@ -1672,9 +1672,10 @@ class Manager implements IManager {
* |-folder2 (32)
* |-fileA (42)
*
* fileA is shared with user1 and user1@server1
* fileA is shared with user1 and user1@server1 and email1@maildomain1
* folder2 is shared with group2 (user4 is a member of group2)
* folder1 is shared with user2 (renamed to "folder (1)") and user2@server2
* and email2@maildomain2
*
* Then the access list to '/folder1/folder2/fileA' with $currentAccess is:
* [
@ -1688,7 +1689,10 @@ class Manager implements IManager {
* 'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'],
* ],
* public => bool
* mail => bool
* mail => [
* 'email1@maildomain1' => ['node_id' => 42],
* 'email2@maildomain2' => ['node_id' => 23],
* ]
* ]
*
* The access list to '/folder1/folder2/fileA' **without** $currentAccess is:
@ -1696,7 +1700,7 @@ class Manager implements IManager {
* users => ['user1', 'user2', 'user4'],
* remote => bool,
* public => bool
* mail => bool
* mail => ['email1@maildomain1', 'email2@maildomain2']
* ]
*
* This is required for encryption/activity
@ -1716,9 +1720,9 @@ class Manager implements IManager {
$owner = $owner->getUID();
if ($currentAccess) {
$al = ['users' => [], 'remote' => [], 'public' => false];
$al = ['users' => [], 'remote' => [], 'public' => false, 'mail' => []];
} else {
$al = ['users' => [], 'remote' => false, 'public' => false];
$al = ['users' => [], 'remote' => false, 'public' => false, 'mail' => []];
}
if (!$this->userManager->userExists($owner)) {
return $al;

@ -256,9 +256,10 @@ interface IManager {
* |-folder2 (32)
* |-fileA (42)
*
* fileA is shared with user1 and user1@server1
* fileA is shared with user1 and user1@server1 email1@maildomain1
* folder2 is shared with group2 (user4 is a member of group2)
* folder1 is shared with user2 (renamed to "folder (1)") and user2@server2
* and email2@maildomain2
*
* Then the access list to '/folder1/folder2/fileA' with $currentAccess is:
* [
@ -272,7 +273,9 @@ interface IManager {
* 'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'],
* ],
* public => bool
* mail => bool
* mail => [
* 'email1@maildomain1' => ['node_id' => 42],
* 'email2@maildomain2' => ['node_id' => 23],
* ]
*
* The access list to '/folder1/folder2/fileA' **without** $currentAccess is:
@ -280,7 +283,7 @@ interface IManager {
* users => ['user1', 'user2', 'user4'],
* remote => bool,
* public => bool
* mail => bool
* mail => ['email1@maildomain1', 'email2@maildomain2']
* ]
*
* This is required for encryption/activity

Loading…
Cancel
Save