Get access list share by email recipientstags/v29.0.0beta6
@@ -1098,21 +1098,32 @@ class ShareByMailProvider implements IShareProvider { | |||
} | |||
$qb = $this->dbConnection->getQueryBuilder(); | |||
$qb->select('share_with') | |||
$qb->select('share_with', 'file_source', 'token') | |||
->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; | |||
$public = false; | |||
$mail = []; | |||
while ($row = $cursor->fetch()) { | |||
$public = true; | |||
if ($currentAccess === false) { | |||
$mail[] = $row['share_with']; | |||
} else { | |||
$mail[$row['share_with']] = [ | |||
'node_id' => $row['file_source'], | |||
'token' => $row['token'] | |||
]; | |||
} | |||
} | |||
$cursor->closeCursor(); | |||
return ['public' => $mail]; | |||
return ['public' => $public, 'mail' => $mail]; | |||
} | |||
public function getAllShares(): iterable { |
@@ -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, 'token' => 'aBcDeFg'], | |||
* 'email2@maildomain2' => ['node_id' => 23, 'token' => 'hIjKlMn'], | |||
* ] | |||
* ] | |||
* | |||
* 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 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: | |||
* [ | |||
@@ -272,15 +273,17 @@ interface IManager { | |||
* 'user2@server2' => ['node_id' => 23, 'token' => 'FooBaR'], | |||
* ], | |||
* public => bool | |||
* mail => bool | |||
* ] | |||
* mail => [ | |||
* 'email1@maildomain1' => ['node_id' => 42, 'token' => 'aBcDeFg'], | |||
* 'email2@maildomain2' => ['node_id' => 23, 'token' => 'hIjKlMn'], | |||
* ] | |||
* | |||
* The access list to '/folder1/folder2/fileA' **without** $currentAccess is: | |||
* [ | |||
* users => ['user1', 'user2', 'user4'], | |||
* remote => bool, | |||
* public => bool | |||
* mail => bool | |||
* mail => ['email1@maildomain1', 'email2@maildomain2'] | |||
* ] | |||
* | |||
* This is required for encryption/activity |