Skip to content

Commit 6d6c63e

Browse files
nfebesusnux
authored andcommitted
fix(share): Set expiration time to end of day (23:59:59)
Shares now expire at the end of the selected day instead of the beginning, allowing access throughout the entire expiration day. Also return actual stored time in API response instead of hardcoded 00:00:00 to prevent timezone-related display issues in the UI. Signed-off-by: nfebe <fenn25.fn@gmail.com> [skip ci]
1 parent 53039f7 commit 6d6c63e

2 files changed

Lines changed: 7 additions & 7 deletions

File tree

apps/files_sharing/lib/Controller/ShareAPIController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ protected function formatShare(IShare $share, ?Node $recipientNode = null): arra
225225
$expiration = $share->getExpirationDate();
226226
if ($expiration !== null) {
227227
$expiration->setTimezone($this->dateTimeZone->getTimeZone());
228-
$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
228+
$result['expiration'] = $expiration->format('Y-m-d H:i:s');
229229
}
230230

231231
$currentUserPermissions = $recipientNode?->getPermissions() ?? Constants::PERMISSION_ALL;

lib/private/Share20/Manager.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ protected function validateExpirationDateInternal(IShare $share) {
327327
if(!$share->getNoExpirationDate() || $isEnforced) {
328328
if ($expirationDate !== null) {
329329
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
330-
$expirationDate->setTime(0, 0, 0);
330+
$expirationDate->setTime(23, 59, 59);
331331

332332
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
333333
$date->setTime(0, 0, 0);
@@ -347,7 +347,7 @@ protected function validateExpirationDateInternal(IShare $share) {
347347

348348
if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
349349
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
350-
$expirationDate->setTime(0, 0, 0);
350+
$expirationDate->setTime(23, 59, 59);
351351
$days = (int)$this->config->getAppValue('core', $configProp, (string)$defaultExpireDays);
352352
if ($days > $defaultExpireDays) {
353353
$days = $defaultExpireDays;
@@ -362,7 +362,7 @@ protected function validateExpirationDateInternal(IShare $share) {
362362
}
363363

364364
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
365-
$date->setTime(0, 0, 0);
365+
$date->setTime(23, 59, 59);
366366
$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
367367
if ($date < $expirationDate) {
368368
$message = $this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $defaultExpireDays);
@@ -407,7 +407,7 @@ protected function validateExpirationDateLink(IShare $share) {
407407
if(!($share->getNoExpirationDate() && !$isEnforced)) {
408408
if ($expirationDate !== null) {
409409
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
410-
$expirationDate->setTime(0, 0, 0);
410+
$expirationDate->setTime(23, 59, 59);
411411

412412
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
413413
$date->setTime(0, 0, 0);
@@ -427,7 +427,7 @@ protected function validateExpirationDateLink(IShare $share) {
427427

428428
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
429429
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
430-
$expirationDate->setTime(0, 0, 0);
430+
$expirationDate->setTime(23, 59, 59);
431431

432432
$days = (int)$this->config->getAppValue('core', 'link_defaultExpDays', (string)$this->shareApiLinkDefaultExpireDays());
433433
if ($days > $this->shareApiLinkDefaultExpireDays()) {
@@ -443,7 +443,7 @@ protected function validateExpirationDateLink(IShare $share) {
443443
}
444444

445445
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
446-
$date->setTime(0, 0, 0);
446+
$date->setTime(23, 59, 59);
447447
$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
448448
if ($date < $expirationDate) {
449449
$message = $this->l->n('Cannot set expiration date more than %n day in the future', 'Cannot set expiration date more than %n days in the future', $this->shareApiLinkDefaultExpireDays());

0 commit comments

Comments
 (0)