* Validate if the expiration date fits the system settings
*
* @param \OCP\Share\IShare $share The share to validate the expiration date of
- * @return \OCP\Share\IShare The expiration date or null if $expireDate was null and it is not required
+ * @return \OCP\Share\IShare The modified share object
* @throws GenericShareException
* @throws \InvalidArgumentException
* @throws \Exception
}
}
+ // If expiredate is empty set a default one if there is a default
+ $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'));
+ }
+
// If we enforce the expiration date check that is does not exceed
if ($this->shareApiLinkDefaultExpireDateEnforced()) {
if ($expirationDate === null) {
}
}
- // If expiredate is empty set a default one if there is a default
- $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'));
- }
-
$accepted = true;
$message = '';
\OCP\Util::emitHook('\OC\Share', 'verifyExpirationDate', [
$share->setExpirationDate($expirationDate);
- return $expirationDate;
+ return $share;
}
/**
*/
public function testvalidateExpirationDateEnforceButNotSet() {
$share = $this->manager->newShare();
+ $share->setProviderId('foo')->setId('bar');
$this->config->method('getAppValue')
->will($this->returnValueMap([
$this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
}
+ public function testvalidateExpirationDateEnforceButNotSetNewShare() {
+ $share = $this->manager->newShare();
+
+ $this->config->method('getAppValue')
+ ->will($this->returnValueMap([
+ ['core', 'shareapi_enforce_expire_date', 'no', 'yes'],
+ ['core', 'shareapi_expire_after_n_days', '7', '3'],
+ ['core', 'shareapi_default_expire_date', 'no', 'yes'],
+ ]));
+
+ $expected = new \DateTime();
+ $expected->setTime(0,0,0);
+ $expected->add(new \DateInterval('P3D'));
+
+ $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
+
+ $this->assertNotNull($share->getExpirationDate());
+ $this->assertEquals($expected, $share->getExpirationDate());
+ }
+
public function testvalidateExpirationDateEnforceToFarIntoFuture() {
// Expire date in the past
$future = new \DateTime();
return $data['expirationDate'] == $future;
}));
- $future = $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
+ $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
- $this->assertEquals($expected, $future);
+ $this->assertEquals($expected, $share->getExpirationDate());
}
public function testvalidateExpirationDateNoDateNoDefaultNull() {
return $data['expirationDate'] == $expected;
}));
- $res = $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
+ $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
- $this->assertEquals($expected, $res);
+ $this->assertEquals($expected, $share->getExpirationDate());
}
public function testvalidateExpirationDateNoDateNoDefault() {
$share = $this->manager->newShare();
- $date = $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
+ $this->invokePrivate($this->manager, 'validateExpirationDate', [$share]);
- $this->assertNull($date);
+ $this->assertNull($share->getExpirationDate());
}
public function testvalidateExpirationDateNoDateDefault() {