diff options
-rw-r--r-- | lib/private/share20/manager.php | 2 | ||||
-rw-r--r-- | lib/private/share20/share.php | 3 | ||||
-rw-r--r-- | lib/public/share/ishare.php | 2 | ||||
-rw-r--r-- | tests/lib/share20/managertest.php | 16 |
4 files changed, 21 insertions, 2 deletions
diff --git a/lib/private/share20/manager.php b/lib/private/share20/manager.php index 7cd44a7cb37..c00d7aa4072 100644 --- a/lib/private/share20/manager.php +++ b/lib/private/share20/manager.php @@ -261,7 +261,7 @@ class Manager implements IManager { } // If expiredate is empty set a default one if there is a default - if ($expirationDate === null && $this->shareApiLinkDefaultExpireDate()) { + if ($share->getFullId() === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) { $expirationDate = new \DateTime(); $expirationDate->setTime(0,0,0); $expirationDate->add(new \DateInterval('P'.$this->shareApiLinkDefaultExpireDays().'D')); diff --git a/lib/private/share20/share.php b/lib/private/share20/share.php index cd30f24c42e..eb112d37942 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) { + return null; + } return $this->providerId . ':' . $this->id; } diff --git a/lib/public/share/ishare.php b/lib/public/share/ishare.php index 5054a886af5..8f5175b0dbf 100644 --- a/lib/public/share/ishare.php +++ b/lib/public/share/ishare.php @@ -46,7 +46,7 @@ interface IShare { * Get the full share id. This is the <providerid>:<internalid>. * The full id is unique in the system. * - * @return string + * @return string|null null is returned when the fullId can't be constructed * @since 9.0.0 */ public function getFullId(); diff --git a/tests/lib/share20/managertest.php b/tests/lib/share20/managertest.php index ea0fb1838d7..73a1b0a6530 100644 --- a/tests/lib/share20/managertest.php +++ b/tests/lib/share20/managertest.php @@ -890,6 +890,22 @@ class ManagerTest extends \Test\TestCase { $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]); } + public function testValidateExpirationDateExistingShareNoDefault() { + $share = $this->manager->newShare(); + + $share->setId('42')->setProviderId('foo'); + + $this->config->method('getAppValue') + ->will($this->returnValueMap([ + ['core', 'shareapi_default_expire_date', 'no', 'yes'], + ['core', 'shareapi_expire_after_n_days', '7', '6'], + ])); + + $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]); + + $this->assertEquals(null, $share->getExpirationDate()); + } + /** * @expectedException Exception * @expectedExceptionMessage Only sharing with group members is allowed |