Skip to content

Commit 5630c33

Browse files
committed
fix(files_sharing): Also set the expiration date timezone during validation
This is needed as we want to store the difference between the server's and the user's timezones. Signed-off-by: Louis Chemineau <[email protected]>
1 parent eed6216 commit 5630c33

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

lib/private/Share20/Manager.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,11 @@ protected function validateExpirationDateInternal(IShare $share) {
276276

277277
// If $expirationDate is falsy, noExpirationDate is true and expiration not enforced
278278
// Then skip expiration date validation as null is accepted
279-
if(!($share->getNoExpirationDate() && !$isEnforced)) {
280-
if ($expirationDate != null) {
279+
if(!$share->getNoExpirationDate() || $isEnforced) {
280+
if ($expirationDate !== null) {
281281
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
282282
$expirationDate->setTime(0, 0, 0);
283+
$expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
283284

284285
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
285286
$date->setTime(0, 0, 0);
@@ -300,6 +301,7 @@ protected function validateExpirationDateInternal(IShare $share) {
300301
if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
301302
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
302303
$expirationDate->setTime(0, 0, 0);
304+
$expirationDate->setTimezone(new \DateTimeZone(date_default_timezone_get()));
303305
$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
304306
if ($days > $defaultExpireDays) {
305307
$days = $defaultExpireDays;
@@ -360,7 +362,7 @@ protected function validateExpirationDateLink(IShare $share) {
360362
if ($expirationDate !== null) {
361363
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
362364
$expirationDate->setTime(0, 0, 0);
363-
365+
364366
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
365367
$date->setTime(0, 0, 0);
366368
if ($date >= $expirationDate) {
@@ -376,24 +378,24 @@ protected function validateExpirationDateLink(IShare $share) {
376378
} catch (\UnexpectedValueException $e) {
377379
// This is a new share
378380
}
379-
381+
380382
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
381383
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
382384
$expirationDate->setTime(0, 0, 0);
383-
385+
384386
$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
385387
if ($days > $this->shareApiLinkDefaultExpireDays()) {
386388
$days = $this->shareApiLinkDefaultExpireDays();
387389
}
388390
$expirationDate->add(new \DateInterval('P' . $days . 'D'));
389391
}
390-
392+
391393
// If we enforce the expiration date check that is does not exceed
392394
if ($isEnforced) {
393395
if (empty($expirationDate)) {
394396
throw new \InvalidArgumentException('Expiration date is enforced');
395397
}
396-
398+
397399
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
398400
$date->setTime(0, 0, 0);
399401
$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));

0 commit comments

Comments
 (0)