diff options
Diffstat (limited to 'apps/sharebymail/lib')
-rw-r--r-- | apps/sharebymail/lib/Activity.php | 7 | ||||
-rw-r--r-- | apps/sharebymail/lib/Capabilities.php | 35 | ||||
-rw-r--r-- | apps/sharebymail/lib/Settings/Admin.php | 1 | ||||
-rw-r--r-- | apps/sharebymail/lib/ShareByMailProvider.php | 59 |
4 files changed, 53 insertions, 49 deletions
diff --git a/apps/sharebymail/lib/Activity.php b/apps/sharebymail/lib/Activity.php index ae3407c1e2b..2d8289affa4 100644 --- a/apps/sharebymail/lib/Activity.php +++ b/apps/sharebymail/lib/Activity.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -233,12 +234,12 @@ class Activity implements IProvider { /** * @param int $id * @param string $path - * @return array + * @return array<string,string> */ - protected function generateFileParameter($id, $path) { + protected function generateFileParameter($id, $path): array { return [ 'type' => 'file', - 'id' => $id, + 'id' => (string)$id, 'name' => basename($path), 'path' => trim($path, '/'), 'link' => $this->url->linkToRouteAbsolute('files.viewcontroller.showFile', ['fileid' => $id]), diff --git a/apps/sharebymail/lib/Capabilities.php b/apps/sharebymail/lib/Capabilities.php index 67a0ec7a9de..425a695ff36 100644 --- a/apps/sharebymail/lib/Capabilities.php +++ b/apps/sharebymail/lib/Capabilities.php @@ -48,24 +48,23 @@ class Capabilities implements ICapability { return []; } return [ - 'files_sharing' => - [ - 'sharebymail' => - [ - 'enabled' => $this->manager->shareApiAllowLinks(), - 'send_password_by_mail' => $this->settingsManager->sendPasswordByMail(), - 'upload_files_drop' => [ - 'enabled' => true, - ], - 'password' => [ - 'enabled' => true, - 'enforced' => $this->manager->shareApiLinkEnforcePassword(), - ], - 'expire_date' => [ - 'enabled' => true, - 'enforced' => $this->manager->shareApiLinkDefaultExpireDateEnforced(), - ], - ] + 'files_sharing' + => [ + 'sharebymail' => [ + 'enabled' => $this->manager->shareApiAllowLinks(), + 'send_password_by_mail' => $this->settingsManager->sendPasswordByMail(), + 'upload_files_drop' => [ + 'enabled' => true, + ], + 'password' => [ + 'enabled' => true, + 'enforced' => $this->manager->shareApiLinkEnforcePassword(), + ], + 'expire_date' => [ + 'enabled' => true, + 'enforced' => $this->manager->shareApiLinkDefaultExpireDateEnforced(), + ], + ] ] ]; } diff --git a/apps/sharebymail/lib/Settings/Admin.php b/apps/sharebymail/lib/Settings/Admin.php index 2bd58f7307f..8f27bbff6d6 100644 --- a/apps/sharebymail/lib/Settings/Admin.php +++ b/apps/sharebymail/lib/Settings/Admin.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later diff --git a/apps/sharebymail/lib/ShareByMailProvider.php b/apps/sharebymail/lib/ShareByMailProvider.php index d6a12c83123..d28f7c51327 100644 --- a/apps/sharebymail/lib/ShareByMailProvider.php +++ b/apps/sharebymail/lib/ShareByMailProvider.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -426,7 +427,7 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider $initiatorDisplayName = ($initiatorUser instanceof IUser) ? $initiatorUser->getDisplayName() : $initiator; $initiatorEmailAddress = ($initiatorUser instanceof IUser) ? $initiatorUser->getEMailAddress() : null; - $plainBodyPart = $this->l->t("%1\$s shared %2\$s with you.\nYou should have already received a separate mail with a link to access it.\n", [$initiatorDisplayName, $filename]); + $plainBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]); $htmlBodyPart = $this->l->t('%1$s shared %2$s with you. You should have already received a separate mail with a link to access it.', [$initiatorDisplayName, $filename]); $message = $this->mailer->createMessage(); @@ -636,11 +637,6 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider return $token; } - /** - * Get all children of this share - * - * @return IShare[] - */ public function getChildren(IShare $parent): array { $children = []; @@ -722,8 +718,8 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider // a real password was given $validPassword = $plainTextPassword !== null && $plainTextPassword !== ''; - if ($validPassword && ($originalShare->getPassword() !== $share->getPassword() || - ($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()))) { + if ($validPassword && ($originalShare->getPassword() !== $share->getPassword() + || ($originalShare->getSendPasswordByTalk() && !$share->getSendPasswordByTalk()))) { $emails = $this->getSharedWithEmails($share); $validEmails = array_filter($emails, function ($email) { return $this->mailer->validateMailAddress($email); @@ -1112,29 +1108,39 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider } public function getSharesInFolder($userId, Folder $node, $reshares, $shallow = true): array { + return $this->getSharesInFolderInternal($userId, $node, $reshares); + } + + public function getAllSharesInFolder(Folder $node): array { + return $this->getSharesInFolderInternal(null, $node, null); + } + + /** + * @return array<int, list<IShare>> + */ + private function getSharesInFolderInternal(?string $userId, Folder $node, ?bool $reshares): array { $qb = $this->dbConnection->getQueryBuilder(); $qb->select('*') ->from('share', 's') - ->andWhere($qb->expr()->orX( - $qb->expr()->eq('item_type', $qb->createNamedParameter('file')), - $qb->expr()->eq('item_type', $qb->createNamedParameter('folder')) - )) + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))) ->andWhere( $qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_EMAIL)) ); - /** - * Reshares for this user are shares where they are the owner. - */ - if ($reshares === false) { - $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))); - } else { - $qb->andWhere( - $qb->expr()->orX( - $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)), - $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)) - ) - ); + if ($userId !== null) { + /** + * Reshares for this user are shares where they are the owner. + */ + if ($reshares !== true) { + $qb->andWhere($qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId))); + } else { + $qb->andWhere( + $qb->expr()->orX( + $qb->expr()->eq('uid_owner', $qb->createNamedParameter($userId)), + $qb->expr()->eq('uid_initiator', $qb->createNamedParameter($userId)) + ) + ); + } } $qb->innerJoin('s', 'filecache', 'f', $qb->expr()->eq('s.file_source', 'f.fileid')); @@ -1167,10 +1173,7 @@ class ShareByMailProvider extends DefaultShareProvider implements IShareProvider ->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')) - )); + ->andWhere($qb->expr()->in('item_type', $qb->createNamedParameter(['file', 'folder'], IQueryBuilder::PARAM_STR_ARRAY))); $cursor = $qb->executeQuery(); $public = false; |