Skip to content

Commit 51a5b9f

Browse files
committed
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>
1 parent d2a8c00 commit 51a5b9f

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
@@ -195,7 +195,7 @@ protected function formatShare(IShare $share, ?Node $recipientNode = null): arra
195195
$expiration = $share->getExpirationDate();
196196
if ($expiration !== null) {
197197
$expiration->setTimezone($this->dateTimeZone->getTimeZone());
198-
$result['expiration'] = $expiration->format('Y-m-d 00:00:00');
198+
$result['expiration'] = $expiration->format('Y-m-d H:i:s');
199199
}
200200

201201
$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
@@ -295,7 +295,7 @@ protected function validateExpirationDateInternal(IShare $share) {
295295
if (!$share->getNoExpirationDate() || $isEnforced) {
296296
if ($expirationDate !== null) {
297297
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
298-
$expirationDate->setTime(0, 0, 0);
298+
$expirationDate->setTime(23, 59, 59);
299299

300300
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
301301
$date->setTime(0, 0, 0);
@@ -315,7 +315,7 @@ protected function validateExpirationDateInternal(IShare $share) {
315315

316316
if ($fullId === null && $expirationDate === null && $defaultExpireDate) {
317317
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
318-
$expirationDate->setTime(0, 0, 0);
318+
$expirationDate->setTime(23, 59, 59);
319319
$days = (int) $this->config->getAppValue('core', $configProp, (string) $defaultExpireDays);
320320
if ($days > $defaultExpireDays) {
321321
$days = $defaultExpireDays;
@@ -330,7 +330,7 @@ protected function validateExpirationDateInternal(IShare $share) {
330330
}
331331

332332
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
333-
$date->setTime(0, 0, 0);
333+
$date->setTime(23, 59, 59);
334334
$date->add(new \DateInterval('P' . $defaultExpireDays . 'D'));
335335
if ($date < $expirationDate) {
336336
$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);
@@ -375,7 +375,7 @@ protected function validateExpirationDateLink(IShare $share) {
375375
if (!($share->getNoExpirationDate() && !$isEnforced)) {
376376
if ($expirationDate !== null) {
377377
$expirationDate->setTimezone($this->dateTimeZone->getTimeZone());
378-
$expirationDate->setTime(0, 0, 0);
378+
$expirationDate->setTime(23, 59, 59);
379379

380380
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
381381
$date->setTime(0, 0, 0);
@@ -395,7 +395,7 @@ protected function validateExpirationDateLink(IShare $share) {
395395

396396
if ($fullId === null && $expirationDate === null && $this->shareApiLinkDefaultExpireDate()) {
397397
$expirationDate = new \DateTime('now', $this->dateTimeZone->getTimeZone());
398-
$expirationDate->setTime(0, 0, 0);
398+
$expirationDate->setTime(23, 59, 59);
399399

400400
$days = (int) $this->config->getAppValue('core', 'link_defaultExpDays', (string) $this->shareApiLinkDefaultExpireDays());
401401
if ($days > $this->shareApiLinkDefaultExpireDays()) {
@@ -411,7 +411,7 @@ protected function validateExpirationDateLink(IShare $share) {
411411
}
412412

413413
$date = new \DateTime('now', $this->dateTimeZone->getTimeZone());
414-
$date->setTime(0, 0, 0);
414+
$date->setTime(23, 59, 59);
415415
$date->add(new \DateInterval('P' . $this->shareApiLinkDefaultExpireDays() . 'D'));
416416
if ($date < $expirationDate) {
417417
$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)