diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-09 23:38:00 +0100 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-02-09 23:38:00 +0100 |
commit | 29f6f451a955507a8dff4a5d819e636f14b82ce5 (patch) | |
tree | 2f5e3da200fd6687ad0d92b9b7ff65c9749e5a07 /lib/private/share20 | |
parent | febe5359aaea69e8072fd0e28d01349e27dd6cc4 (diff) | |
parent | 49726470abe14b23543dab0d5ba5af939d1f7634 (diff) | |
download | nextcloud-server-29f6f451a955507a8dff4a5d819e636f14b82ce5.tar.gz nextcloud-server-29f6f451a955507a8dff4a5d819e636f14b82ce5.zip |
Merge pull request #22192 from owncloud/fix_19685
Only set the default expiration date on share creation
Diffstat (limited to 'lib/private/share20')
-rw-r--r-- | lib/private/share20/manager.php | 38 | ||||
-rw-r--r-- | lib/private/share20/share.php | 3 |
2 files changed, 34 insertions, 7 deletions
diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 3a19bd2dc3a..c13bf965676 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -261,7 +261,14 @@ class Manager implements IManager { } // If expiredate is empty set a default one if there is a default - if ($expirationDate === null && $this->shareApiLinkDefaultExpireDate()) { + $fullId = null; + try { + $fullId = $share->getFullId(); + } catch (\UnexpectedValueException $e) { + // This is a new share + } + + if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) { $expirationDate = new \DateTime(); $expirationDate->setTime(0,0,0); $expirationDate->add(new \DateInterval('P'.$this->shareApiLinkDefaultExpireDays().'D')); @@ -315,8 +322,12 @@ class Manager implements IManager { $existingShares = $provider->getSharesByPath($share->getNode()); foreach($existingShares as $existingShare) { // Ignore if it is the same share - if ($existingShare->getFullId() === $share->getFullId()) { - continue; + try { + if ($existingShare->getFullId() === $share->getFullId()) { + continue; + } + } catch (\UnexpectedValueException $e) { + //Shares are not identical } // Identical share already existst @@ -360,8 +371,12 @@ class Manager implements IManager { $provider = $this->factory->getProviderForType(\OCP\Share::SHARE_TYPE_GROUP); $existingShares = $provider->getSharesByPath($share->getNode()); foreach($existingShares as $existingShare) { - if ($existingShare->getFullId() === $share->getFullId()) { - continue; + try { + if ($existingShare->getFullId() === $share->getFullId()) { + continue; + } + } catch (\UnexpectedValueException $e) { + //It is a new share so just continue } if ($existingShare->getSharedWith() === $share->getSharedWith()) { @@ -558,7 +573,11 @@ class Manager implements IManager { throw new \Exception('The Share API is disabled'); } - $originalShare = $this->getShareById($share->getFullId()); + try { + $originalShare = $this->getShareById($share->getFullId()); + } catch (\UnexpectedValueException $e) { + throw new \InvalidArgumentException('Share does not have a full id'); + } // We can't change the share type! if ($share->getShareType() !== $originalShare->getShareType()) { @@ -673,10 +692,15 @@ class Manager implements IManager { * * @param \OCP\Share\IShare $share * @throws ShareNotFound + * @throws \InvalidArgumentException */ public function deleteShare(\OCP\Share\IShare $share) { // Just to make sure we have all the info - $share = $this->getShareById($share->getFullId()); + try { + $share = $this->getShareById($share->getFullId()); + } catch (\UnexpectedValueException $e) { + throw new \InvalidArgumentException('Share does not have a full id'); + } $formatHookParams = function(\OCP\Share\IShare $share) { // Prepare hook diff --git a/lib/private/share20/share.php b/lib/private/share20/share.php index e84d52b63a0..323d8c8e8ab 100644 --- a/lib/private/share20/share.php +++ b/lib/private/share20/share.php @@ -90,6 +90,9 @@ class Share implements \OCP\Share\IShare { * @inheritdoc */ public function getFullId() { + if ($this->providerId === null || $this->id === null) { + throw new \UnexpectedValueException; + } return $this->providerId . ':' . $this->id; } |