mirror of
https://github.com/nextcloud/server.git
synced 2026-04-21 14:23:17 -04:00
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>
This commit is contained in:
parent
5ca6249f42
commit
26ae5e6dfb
3 changed files with 27 additions and 12 deletions
|
|
@ -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…
Reference in a new issue