aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/share20/manager.php2
-rw-r--r--lib/private/share20/share.php3
-rw-r--r--lib/public/share/ishare.php2
-rw-r--r--tests/lib/share20/managertest.php16
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