summaryrefslogtreecommitdiffstats
path: root/lib/private/Share20
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Share20')
-rw-r--r--lib/private/Share20/DefaultShareProvider.php88
-rw-r--r--lib/private/Share20/Exception/BackendError.php1
-rw-r--r--lib/private/Share20/Exception/InvalidShare.php1
-rw-r--r--lib/private/Share20/Exception/ProviderException.php2
-rw-r--r--lib/private/Share20/LegacyHooks.php3
-rw-r--r--lib/private/Share20/Manager.php76
-rw-r--r--lib/private/Share20/ProviderFactory.php19
-rw-r--r--lib/private/Share20/Share.php7
8 files changed, 94 insertions, 103 deletions
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index e7f077f4022..ff46badee3b 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -2,9 +2,9 @@
/**
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
- * @author Andrius <andrius.kulbis@ktu.lt>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Björn Schießle <bjoern@schiessle.org>
+ * @author Christoph Wurst <christoph@winzerhof-wurst.at>
* @author Daniel Calviño Sánchez <danxuliu@gmail.com>
* @author Jan-Philipp Litza <jplitza@users.noreply.github.com>
* @author Joas Schilling <coding@schilljs.com>
@@ -53,7 +53,6 @@ use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IShare;
-use OCP\Share\IShareHelper;
use OCP\Share\IShareProvider;
/**
@@ -64,7 +63,7 @@ use OCP\Share\IShareProvider;
class DefaultShareProvider implements IShareProvider {
// Special share type for user modified group shares
- const SHARE_TYPE_USERGROUP = 2;
+ public const SHARE_TYPE_USERGROUP = 2;
/** @var IDBConnection */
private $dbConn;
@@ -153,7 +152,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getExpirationDate() !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
//Set the GID of the group we share with
$qb->setValue('share_with', $qb->createNamedParameter($share->getSharedWith()));
@@ -161,7 +160,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getExpirationDate() !== null) {
$qb->setValue('expiration', $qb->createNamedParameter($share->getExpirationDate(), 'datetime'));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
//set label for public link
$qb->setValue('label', $qb->createNamedParameter($share->getLabel()));
//Set the token of the share
@@ -250,7 +249,6 @@ class DefaultShareProvider implements IShareProvider {
* @throws \OCP\Files\NotFoundException
*/
public function update(\OCP\Share\IShare $share) {
-
$originalShare = $this->getShareById($share->getId());
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
@@ -270,7 +268,7 @@ class DefaultShareProvider implements IShareProvider {
->set('note', $qb->createNamedParameter($share->getNote()))
->set('accepted', $qb->createNamedParameter($share->getStatus()))
->execute();
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$qb = $this->dbConn->getQueryBuilder();
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
@@ -307,8 +305,7 @@ class DefaultShareProvider implements IShareProvider {
->andWhere($qb->expr()->neq('permissions', $qb->createNamedParameter(0)))
->set('permissions', $qb->createNamedParameter($share->getPermissions()))
->execute();
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$qb = $this->dbConn->getQueryBuilder();
$qb->update('share')
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
@@ -381,8 +378,7 @@ class DefaultShareProvider implements IShareProvider {
} else {
$id = $data['id'];
}
-
- } else if ($share->getShareType() === IShare::TYPE_USER) {
+ } elseif ($share->getShareType() === IShare::TYPE_USER) {
if ($share->getSharedWith() !== $recipient) {
throw new ProviderException('Recipient does not match');
}
@@ -432,7 +428,7 @@ class DefaultShareProvider implements IShareProvider {
->orderBy('id');
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$children[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -472,7 +468,6 @@ class DefaultShareProvider implements IShareProvider {
*/
public function deleteFromSelf(IShare $share, $recipient) {
if ($share->getShareType() === IShare::TYPE_GROUP) {
-
$group = $this->groupManager->get($share->getSharedWith());
$user = $this->userManager->get($recipient);
@@ -519,9 +514,7 @@ class DefaultShareProvider implements IShareProvider {
->where($qb->expr()->eq('id', $qb->createNamedParameter($id)))
->execute();
}
-
- } else if ($share->getShareType() === IShare::TYPE_USER) {
-
+ } elseif ($share->getShareType() === IShare::TYPE_USER) {
if ($share->getSharedWith() !== $recipient) {
throw new ProviderException('Recipient does not match');
}
@@ -601,8 +594,7 @@ class DefaultShareProvider implements IShareProvider {
->set('file_target', $qb->createNamedParameter($share->getTarget()))
->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId())))
->execute();
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
// Check if there is a usergroup share
$qb = $this->dbConn->getQueryBuilder();
@@ -738,7 +730,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$shares = [];
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$shares[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -817,7 +809,7 @@ class DefaultShareProvider implements IShareProvider {
->execute();
$shares = [];
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
$shares[] = $this->createShare($data);
}
$cursor->closeCursor();
@@ -831,7 +823,7 @@ class DefaultShareProvider implements IShareProvider {
*/
private function isAccessibleResult($data) {
// exclude shares leading to deleted file entries
- if ($data['fileid'] === null) {
+ if ($data['fileid'] === null || $data['path'] === null) {
return false;
}
@@ -839,7 +831,7 @@ class DefaultShareProvider implements IShareProvider {
$pathSections = explode('/', $data['path'], 2);
// FIXME: would not detect rare md5'd home storage case properly
if ($pathSections[0] !== 'files'
- && in_array(explode(':', $data['storage_string_id'], 2)[0], array('home', 'object'))) {
+ && in_array(explode(':', $data['storage_string_id'], 2)[0], ['home', 'object'])) {
return false;
}
return true;
@@ -888,14 +880,13 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
if ($this->isAccessibleResult($data)) {
$shares[] = $this->createShare($data);
}
}
$cursor->closeCursor();
-
- } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
$user = $this->userManager->get($userId);
$allGroups = $this->groupManager->getUserGroups($user);
@@ -903,7 +894,7 @@ class DefaultShareProvider implements IShareProvider {
$shares2 = [];
$start = 0;
- while(true) {
+ while (true) {
$groups = array_slice($allGroups, $start, 100);
$start += 100;
@@ -934,8 +925,12 @@ class DefaultShareProvider implements IShareProvider {
}
- $groups = array_filter($groups, function($group) { return $group instanceof IGroup; });
- $groups = array_map(function(IGroup $group) { return $group->getGID(); }, $groups);
+ $groups = array_filter($groups, function ($group) {
+ return $group instanceof IGroup;
+ });
+ $groups = array_map(function (IGroup $group) {
+ return $group->getGID();
+ }, $groups);
$qb->andWhere($qb->expr()->eq('share_type', $qb->createNamedParameter(\OCP\Share::SHARE_TYPE_GROUP)))
->andWhere($qb->expr()->in('share_with', $qb->createNamedParameter(
@@ -948,7 +943,7 @@ class DefaultShareProvider implements IShareProvider {
));
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
if ($offset > 0) {
$offset--;
continue;
@@ -962,8 +957,8 @@ class DefaultShareProvider implements IShareProvider {
}
/*
- * Resolve all group shares to user specific shares
- */
+ * Resolve all group shares to user specific shares
+ */
$shares = $this->resolveGroupShares($shares2, $userId);
} else {
throw new BackendError('Invalid backend');
@@ -1036,9 +1031,9 @@ class DefaultShareProvider implements IShareProvider {
if ($user !== null) {
$share->setSharedWithDisplayName($user->getDisplayName());
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$share->setSharedWith($data['share_with']);
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$share->setPassword($data['password']);
$share->setSendPasswordByTalk((bool)$data['password_by_talk']);
$share->setToken($data['token']);
@@ -1078,7 +1073,7 @@ class DefaultShareProvider implements IShareProvider {
$result = [];
$start = 0;
- while(true) {
+ while (true) {
/** @var Share[] $shareSlice */
$shareSlice = array_slice($shares, $start, 100);
$start += 100;
@@ -1110,7 +1105,7 @@ class DefaultShareProvider implements IShareProvider {
$stmt = $query->execute();
- while($data = $stmt->fetch()) {
+ while ($data = $stmt->fetch()) {
$shareMap[$data['parent']]->setPermissions((int)$data['permissions']);
$shareMap[$data['parent']]->setStatus((int)$data['accepted']);
$shareMap[$data['parent']]->setTarget($data['file_target']);
@@ -1153,7 +1148,7 @@ class DefaultShareProvider implements IShareProvider {
$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
)
);
- } else if ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
/*
* Delete all group shares that are owned by this user
* Or special user group shares that are received by this user
@@ -1174,7 +1169,7 @@ class DefaultShareProvider implements IShareProvider {
$qb->expr()->eq('share_with', $qb->createNamedParameter($uid))
)
);
- } else if ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_LINK) {
/*
* Delete all link shares owned by this user.
* And all link shares initiated by this user (until #22327 is in)
@@ -1213,7 +1208,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$ids = [];
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$ids[] = (int)$row['id'];
}
$cursor->closeCursor();
@@ -1256,7 +1251,7 @@ class DefaultShareProvider implements IShareProvider {
$cursor = $qb->execute();
$ids = [];
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$ids[] = (int)$row['id'];
}
$cursor->closeCursor();
@@ -1311,13 +1306,13 @@ class DefaultShareProvider implements IShareProvider {
$users = [];
$link = false;
- while($row = $cursor->fetch()) {
+ while ($row = $cursor->fetch()) {
$type = (int)$row['share_type'];
if ($type === \OCP\Share::SHARE_TYPE_USER) {
$uid = $row['share_with'];
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
- } else if ($type === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($type === \OCP\Share::SHARE_TYPE_GROUP) {
$gid = $row['share_with'];
$group = $this->groupManager->get($gid);
@@ -1331,9 +1326,9 @@ class DefaultShareProvider implements IShareProvider {
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
}
- } else if ($type === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($type === \OCP\Share::SHARE_TYPE_LINK) {
$link = true;
- } else if ($type === self::SHARE_TYPE_USERGROUP && $currentAccess === true) {
+ } elseif ($type === self::SHARE_TYPE_USERGROUP && $currentAccess === true) {
$uid = $row['share_with'];
$users[$uid] = isset($users[$uid]) ? $users[$uid] : [];
$users[$uid][$row['id']] = $row;
@@ -1397,7 +1392,7 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$user = $this->userManager->get($share->getSharedWith());
$this->sendNote([$user], $share);
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$group = $this->groupManager->get($share->getSharedWith());
$groupMembers = $group->getUsers();
$this->sendNote($groupMembers, $share);
@@ -1412,7 +1407,6 @@ class DefaultShareProvider implements IShareProvider {
* @throws \OCP\Files\NotFoundException
*/
private function sendNote(array $recipients, IShare $share) {
-
$toList = [];
foreach ($recipients as $recipient) {
@@ -1424,7 +1418,6 @@ class DefaultShareProvider implements IShareProvider {
}
if (!empty($toList)) {
-
$filename = $share->getNode()->getName();
$initiator = $share->getSharedBy();
$note = $share->getNote();
@@ -1476,7 +1469,6 @@ class DefaultShareProvider implements IShareProvider {
$message->useTemplate($emailTemplate);
$this->mailer->send($message);
}
-
}
public function getAllShares(): iterable {
@@ -1493,7 +1485,7 @@ class DefaultShareProvider implements IShareProvider {
);
$cursor = $qb->execute();
- while($data = $cursor->fetch()) {
+ while ($data = $cursor->fetch()) {
try {
$share = $this->createShare($data);
} catch (InvalidShare $e) {
diff --git a/lib/private/Share20/Exception/BackendError.php b/lib/private/Share20/Exception/BackendError.php
index b36cc1a9111..5ba17b7a458 100644
--- a/lib/private/Share20/Exception/BackendError.php
+++ b/lib/private/Share20/Exception/BackendError.php
@@ -23,5 +23,4 @@
namespace OC\Share20\Exception;
class BackendError extends \Exception {
-
}
diff --git a/lib/private/Share20/Exception/InvalidShare.php b/lib/private/Share20/Exception/InvalidShare.php
index 908049ae75a..1216bfa9aea 100644
--- a/lib/private/Share20/Exception/InvalidShare.php
+++ b/lib/private/Share20/Exception/InvalidShare.php
@@ -23,5 +23,4 @@
namespace OC\Share20\Exception;
class InvalidShare extends \Exception {
-
}
diff --git a/lib/private/Share20/Exception/ProviderException.php b/lib/private/Share20/Exception/ProviderException.php
index 360f42f63f0..f60f5a8f385 100644
--- a/lib/private/Share20/Exception/ProviderException.php
+++ b/lib/private/Share20/Exception/ProviderException.php
@@ -22,7 +22,5 @@
namespace OC\Share20\Exception;
-
class ProviderException extends \Exception {
-
}
diff --git a/lib/private/Share20/LegacyHooks.php b/lib/private/Share20/LegacyHooks.php
index 5cfc1cc27e3..1e2391f0bd0 100644
--- a/lib/private/Share20/LegacyHooks.php
+++ b/lib/private/Share20/LegacyHooks.php
@@ -75,7 +75,7 @@ class LegacyHooks {
/** @var IShare[] $deletedShares */
$deletedShares = $e->getArgument('deletedShares');
- $formattedDeletedShares = array_map(function($share) {
+ $formattedDeletedShares = array_map(function ($share) {
return $this->formatHookParams($share);
}, $deletedShares);
@@ -173,6 +173,5 @@ class LegacyHooks {
];
\OC_Hook::emit(Share::class, 'post_shared', $postHookData);
-
}
}
diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php
index 3e22e7158ca..78d79b5c4da 100644
--- a/lib/private/Share20/Manager.php
+++ b/lib/private/Share20/Manager.php
@@ -221,33 +221,33 @@ class Manager implements IManager {
if (!$this->userManager->userExists($share->getSharedWith())) {
throw new \InvalidArgumentException('SharedWith is not a valid user');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
// We expect a valid group as sharedWith for group shares
if (!$this->groupManager->groupExists($share->getSharedWith())) {
throw new \InvalidArgumentException('SharedWith is not a valid group');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
if ($share->getSharedWith() !== null) {
throw new \InvalidArgumentException('SharedWith should be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
if ($share->getSharedWith() === null) {
throw new \InvalidArgumentException('SharedWith should not be empty');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_CIRCLE) {
$circle = \OCA\Circles\Api\v1\Circles::detailsCircle($share->getSharedWith());
if ($circle === null) {
throw new \InvalidArgumentException('SharedWith is not a valid circle');
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_ROOM) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_ROOM) {
} else {
// We can't handle other types yet
throw new \InvalidArgumentException('unknown share type');
@@ -442,7 +442,6 @@ class Manager implements IManager {
* @throws \Exception
*/
protected function validateExpirationDate(\OCP\Share\IShare $share) {
-
$expirationDate = $share->getExpirationDate();
if ($expirationDate !== null) {
@@ -532,7 +531,7 @@ class Manager implements IManager {
*/
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_USER);
$existingShares = $provider->getSharesByPath($share->getNode());
- foreach($existingShares as $existingShare) {
+ foreach ($existingShares as $existingShare) {
// Ignore if it is the same share
try {
if ($existingShare->getFullId() === $share->getFullId()) {
@@ -589,7 +588,7 @@ class Manager implements IManager {
*/
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_GROUP);
$existingShares = $provider->getSharesByPath($share->getNode());
- foreach($existingShares as $existingShare) {
+ foreach ($existingShares as $existingShare) {
try {
if ($existingShare->getFullId() === $share->getFullId()) {
continue;
@@ -658,7 +657,7 @@ class Manager implements IManager {
// Make sure that we do not share a path that contains a shared mountpoint
if ($path instanceof \OCP\Files\Folder) {
$mounts = $this->mountManager->findIn($path->getPath());
- foreach($mounts as $mount) {
+ foreach ($mounts as $mount) {
if ($mount->getStorage()->instanceOfStorage('\OCA\Files_Sharing\ISharedStorage')) {
throw new \InvalidArgumentException('Path contains files shared with you');
}
@@ -706,7 +705,7 @@ class Manager implements IManager {
$storage = $share->getNode()->getStorage();
if ($storage->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
$parent = $share->getNode()->getParent();
- while($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
+ while ($parent->getStorage()->instanceOfStorage('OCA\Files_Sharing\External\Storage')) {
$parent = $parent->getParent();
}
$share->setShareOwner($parent->getOwner()->getUID());
@@ -724,14 +723,12 @@ class Manager implements IManager {
//Verify the expiration date
$share = $this->validateExpirationDateInternal($share);
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
//Verify the expiration date
$share = $this->validateExpirationDateInternal($share);
-
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
$this->setLinkParent($share);
@@ -755,7 +752,7 @@ class Manager implements IManager {
if ($share->getPassword() !== null) {
$share->setPassword($this->hasher->hash($share->getPassword()));
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
$share->setToken(
$this->secureRandom->generate(
\OC\Share\Constants::TOKEN_LENGTH,
@@ -788,6 +785,11 @@ class Manager implements IManager {
//reuse the node we already have
$share->setNode($oldShare->getNode());
+ // Reset the target if it is null for the new share
+ if ($share->getTarget() === '') {
+ $share->setTarget($target);
+ }
+
// Post share event
$event = new GenericEvent($share);
$this->legacyDispatcher->dispatch('OCP\Share::postShare', $event);
@@ -796,7 +798,7 @@ class Manager implements IManager {
if ($share->getShareType() === \OCP\Share::SHARE_TYPE_USER) {
$mailSend = $share->getMailSend();
- if($mailSend === true) {
+ if ($mailSend === true) {
$user = $this->userManager->get($share->getSharedWith());
if ($user !== null) {
$emailAddress = $user->getEMailAddress();
@@ -857,7 +859,7 @@ class Manager implements IManager {
'shareWith' => $shareWith,
]);
- $emailTemplate->setSubject($l->t('%1$s shared »%2$s« with you', array($initiatorDisplayName, $filename)));
+ $emailTemplate->setSubject($l->t('%1$s shared »%2$s« with you', [$initiatorDisplayName, $filename]));
$emailTemplate->addHeader();
$emailTemplate->addHeading($l->t('%1$s shared »%2$s« with you', [$initiatorDisplayName, $filename]), false);
$text = $l->t('%1$s shared »%2$s« with you.', [$initiatorDisplayName, $filename]);
@@ -887,7 +889,7 @@ class Manager implements IManager {
// The "Reply-To" is set to the sharer if an mail address is configured
// also the default footer contains a "Do not reply" which needs to be adjusted.
$initiatorEmail = $initiatorUser->getEMailAddress();
- if($initiatorEmail !== null) {
+ if ($initiatorEmail !== null) {
$message->setReplyTo([$initiatorEmail => $initiatorDisplayName]);
$emailTemplate->addFooter($instanceName . ($this->defaults->getSlogan() !== '' ? ' - ' . $this->defaults->getSlogan() : ''));
} else {
@@ -897,7 +899,7 @@ class Manager implements IManager {
$message->useTemplate($emailTemplate);
try {
$failedRecipients = $this->mailer->send($message);
- if(!empty($failedRecipients)) {
+ if (!empty($failedRecipients)) {
$this->logger->error('Share notification mail could not be sent to: ' . implode(', ', $failedRecipients));
return;
}
@@ -931,7 +933,7 @@ class Manager implements IManager {
// We can only change the recipient on user shares
if ($share->getSharedWith() !== $originalShare->getSharedWith() &&
- $share->getShareType() !== \OCP\Share::SHARE_TYPE_USER) {
+ $share->getShareType() !== \OCP\Share::SHARE_TYPE_USER) {
throw new \InvalidArgumentException('Can only update recipient on user shares');
}
@@ -951,7 +953,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) {
$this->groupCreateChecks($share);
if ($share->getExpirationDate() != $originalShare->getExpirationDate()) {
@@ -959,7 +961,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_LINK) {
$this->linkCreateChecks($share);
$this->updateSharePasswordIfNeeded($share, $originalShare);
@@ -969,7 +971,7 @@ class Manager implements IManager {
$this->validateExpirationDate($share);
$expirationDateUpdated = true;
}
- } else if ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($share->getShareType() === \OCP\Share::SHARE_TYPE_EMAIL) {
// The new password is not set again if it is the same as the old
// one, unless when switching from sending by Talk to sending by
// mail.
@@ -1021,7 +1023,7 @@ class Manager implements IManager {
} else {
$userFolder = $this->rootFolder->getUserFolder($share->getSharedBy());
}
- \OC_Hook::emit(Share::class, 'post_update_permissions', array(
+ \OC_Hook::emit(Share::class, 'post_update_permissions', [
'itemType' => $share->getNode() instanceof \OCP\Files\File ? 'file' : 'folder',
'itemSource' => $share->getNode()->getId(),
'shareType' => $share->getShareType(),
@@ -1029,7 +1031,7 @@ class Manager implements IManager {
'uidOwner' => $share->getSharedBy(),
'permissions' => $share->getPermissions(),
'path' => $userFolder->getRelativePath($share->getNode()->getPath()),
- ));
+ ]);
}
return $share;
@@ -1116,7 +1118,6 @@ class Manager implements IManager {
* @throws \InvalidArgumentException
*/
public function deleteShare(\OCP\Share\IShare $share) {
-
try {
$share->getFullId();
} catch (\UnexpectedValueException $e) {
@@ -1199,7 +1200,7 @@ class Manager implements IManager {
public function getSharesInFolder($userId, Folder $node, $reshares = false) {
$providers = $this->factory->getAllProviders();
- return array_reduce($providers, function($shares, IShareProvider $provider) use ($userId, $node, $reshares) {
+ return array_reduce($providers, function ($shares, IShareProvider $provider) use ($userId, $node, $reshares) {
$newShares = $provider->getSharesInFolder($userId, $node, $reshares);
foreach ($newShares as $fid => $data) {
if (!isset($shares[$fid])) {
@@ -1237,10 +1238,9 @@ class Manager implements IManager {
$shares2 = [];
- while(true) {
+ while (true) {
$added = 0;
foreach ($shares as $share) {
-
try {
$this->checkExpireDate($share);
} catch (ShareNotFound $e) {
@@ -1317,7 +1317,7 @@ class Manager implements IManager {
$shares = $this->getSharedWith($userId, $shareType, $node, $limit, $offset);
// Only get deleted shares
- $shares = array_filter($shares, function(IShare $share) {
+ $shares = array_filter($shares, function (IShare $share) {
return $share->getPermissions() === 0;
});
@@ -1380,7 +1380,7 @@ class Manager implements IManager {
}
$share = null;
try {
- if($this->shareApiAllowLinks()) {
+ if ($this->shareApiAllowLinks()) {
$provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_LINK);
$share = $provider->getShareByToken($token);
}
@@ -1449,7 +1449,6 @@ class Manager implements IManager {
$this->deleteShare($share);
throw new ShareNotFound($this->l->t('The requested share does not exist anymore'));
}
-
}
/**
@@ -1763,6 +1762,15 @@ class Manager implements IManager {
return $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes') === 'yes';
}
+ public function allowEnumeration(): bool {
+ return $this->config->getAppValue('core', 'shareapi_allow_share_dialog_user_enumeration', 'yes') === 'yes';
+ }
+
+ public function limitEnumerationToGroups(): bool {
+ return $this->allowEnumeration() &&
+ $this->config->getAppValue('core', 'shareapi_restrict_user_enumeration_to_group', 'no') === 'yes';
+ }
+
/**
* Copied from \OC_Util::isSharingDisabledForUser
*
diff --git a/lib/private/Share20/ProviderFactory.php b/lib/private/Share20/ProviderFactory.php
index 5a91202a1d0..6186d1c37cf 100644
--- a/lib/private/Share20/ProviderFactory.php
+++ b/lib/private/Share20/ProviderFactory.php
@@ -36,7 +36,6 @@ use OC\Share20\Exception\ProviderException;
use OCA\FederatedFileSharing\AddressHandler;
use OCA\FederatedFileSharing\FederatedShareProvider;
use OCA\FederatedFileSharing\Notifications;
-use OCA\FederatedFileSharing\OCM\CloudFederationProvider;
use OCA\FederatedFileSharing\TokenHandler;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
@@ -198,7 +197,6 @@ class ProviderFactory implements IProviderFactory {
* @suppress PhanUndeclaredClassMethod
*/
protected function getShareByCircleProvider() {
-
if ($this->circlesAreNotAvailable) {
return null;
}
@@ -211,7 +209,6 @@ class ProviderFactory implements IProviderFactory {
}
if ($this->shareByCircleProvider === null) {
-
$this->shareByCircleProvider = new \OCA\Circles\ShareByCircleProvider(
$this->serverContainer->getDatabaseConnection(),
$this->serverContainer->getSecureRandom(),
@@ -258,13 +255,13 @@ class ProviderFactory implements IProviderFactory {
$provider = null;
if ($id === 'ocinternal') {
$provider = $this->defaultShareProvider();
- } else if ($id === 'ocFederatedSharing') {
+ } elseif ($id === 'ocFederatedSharing') {
$provider = $this->federatedShareProvider();
- } else if ($id === 'ocMailShare') {
+ } elseif ($id === 'ocMailShare') {
$provider = $this->getShareByMailProvider();
- } else if ($id === 'ocCircleShare') {
+ } elseif ($id === 'ocCircleShare') {
$provider = $this->getShareByCircleProvider();
- } else if ($id === 'ocRoomShare') {
+ } elseif ($id === 'ocRoomShare') {
$provider = $this->getRoomShareProvider();
}
@@ -286,13 +283,13 @@ class ProviderFactory implements IProviderFactory {
$shareType === \OCP\Share::SHARE_TYPE_LINK
) {
$provider = $this->defaultShareProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_REMOTE || $shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_REMOTE || $shareType === \OCP\Share::SHARE_TYPE_REMOTE_GROUP) {
$provider = $this->federatedShareProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_EMAIL) {
$provider = $this->getShareByMailProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_CIRCLE) {
$provider = $this->getShareByCircleProvider();
- } else if ($shareType === \OCP\Share::SHARE_TYPE_ROOM) {
+ } elseif ($shareType === \OCP\Share::SHARE_TYPE_ROOM) {
$provider = $this->getRoomShareProvider();
}
diff --git a/lib/private/Share20/Share.php b/lib/private/Share20/Share.php
index b05b72e7ada..fb4fc4c4078 100644
--- a/lib/private/Share20/Share.php
+++ b/lib/private/Share20/Share.php
@@ -112,7 +112,7 @@ class Share implements \OCP\Share\IShare {
$id = (string)$id;
}
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
@@ -145,7 +145,7 @@ class Share implements \OCP\Share\IShare {
* @inheritdoc
*/
public function setProviderId($id) {
- if(!is_string($id)) {
+ if (!is_string($id)) {
throw new \InvalidArgumentException('String expected.');
}
@@ -172,14 +172,13 @@ class Share implements \OCP\Share\IShare {
*/
public function getNode() {
if ($this->node === null) {
-
if ($this->shareOwner === null || $this->fileId === null) {
throw new NotFoundException();
}
// for federated shares the owner can be a remote user, in this
// case we use the initiator
- if($this->userManager->userExists($this->shareOwner)) {
+ if ($this->userManager->userExists($this->shareOwner)) {
$userFolder = $this->rootFolder->getUserFolder($this->shareOwner);
} else {
$userFolder = $this->rootFolder->getUserFolder($this->sharedBy);