5454use OCP \Files \Node ;
5555use OCP \HintException ;
5656use OCP \IConfig ;
57+ use OCP \IDateTimeZone ;
5758use OCP \IGroupManager ;
5859use OCP \IL10N ;
5960use OCP \IURLGenerator ;
@@ -119,6 +120,7 @@ class Manager implements IManager {
119120 /** @var KnownUserService */
120121 private $ knownUserService ;
121122 private ShareDisableChecker $ shareDisableChecker ;
123+ private IDateTimeZone $ dateTimeZone ;
122124
123125 public function __construct (
124126 LoggerInterface $ logger ,
@@ -139,7 +141,8 @@ public function __construct(
139141 IEventDispatcher $ dispatcher ,
140142 IUserSession $ userSession ,
141143 KnownUserService $ knownUserService ,
142- ShareDisableChecker $ shareDisableChecker
144+ ShareDisableChecker $ shareDisableChecker ,
145+ IDateTimeZone $ dateTimeZone ,
143146 ) {
144147 $ this ->logger = $ logger ;
145148 $ this ->config = $ config ;
@@ -163,6 +166,7 @@ public function __construct(
163166 $ this ->userSession = $ userSession ;
164167 $ this ->knownUserService = $ knownUserService ;
165168 $ this ->shareDisableChecker = $ shareDisableChecker ;
169+ $ this ->dateTimeZone = $ dateTimeZone ;
166170 }
167171
168172 /**
@@ -383,10 +387,10 @@ protected function validateExpirationDateInternal(IShare $share) {
383387 $ expirationDate = $ share ->getExpirationDate ();
384388
385389 if ($ expirationDate !== null ) {
386- //Make sure the expiration date is a date
390+ $ expirationDate -> setTimezone ( $ this -> dateTimeZone -> getTimeZone ());
387391 $ expirationDate ->setTime (0 , 0 , 0 );
388392
389- $ date = new \DateTime ();
393+ $ date = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
390394 $ date ->setTime (0 , 0 , 0 );
391395 if ($ date >= $ expirationDate ) {
392396 $ message = $ this ->l ->t ('Expiration date is in the past ' );
@@ -414,9 +418,8 @@ protected function validateExpirationDateInternal(IShare $share) {
414418 $ isEnforced = $ this ->shareApiInternalDefaultExpireDateEnforced ();
415419 }
416420 if ($ fullId === null && $ expirationDate === null && $ defaultExpireDate ) {
417- $ expirationDate = new \DateTime ();
421+ $ expirationDate = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
418422 $ expirationDate ->setTime (0 , 0 , 0 );
419-
420423 $ days = (int )$ this ->config ->getAppValue ('core ' , $ configProp , (string )$ defaultExpireDays );
421424 if ($ days > $ defaultExpireDays ) {
422425 $ days = $ defaultExpireDays ;
@@ -430,7 +433,7 @@ protected function validateExpirationDateInternal(IShare $share) {
430433 throw new \InvalidArgumentException ('Expiration date is enforced ' );
431434 }
432435
433- $ date = new \DateTime ();
436+ $ date = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
434437 $ date ->setTime (0 , 0 , 0 );
435438 $ date ->add (new \DateInterval ('P ' . $ defaultExpireDays . 'D ' ));
436439 if ($ date < $ expirationDate ) {
@@ -470,10 +473,10 @@ protected function validateExpirationDateLink(IShare $share) {
470473 $ expirationDate = $ share ->getExpirationDate ();
471474
472475 if ($ expirationDate !== null ) {
473- //Make sure the expiration date is a date
476+ $ expirationDate -> setTimezone ( $ this -> dateTimeZone -> getTimeZone ());
474477 $ expirationDate ->setTime (0 , 0 , 0 );
475478
476- $ date = new \DateTime ();
479+ $ date = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
477480 $ date ->setTime (0 , 0 , 0 );
478481 if ($ date >= $ expirationDate ) {
479482 $ message = $ this ->l ->t ('Expiration date is in the past ' );
@@ -490,7 +493,7 @@ protected function validateExpirationDateLink(IShare $share) {
490493 }
491494
492495 if ($ fullId === null && $ expirationDate === null && $ this ->shareApiLinkDefaultExpireDate ()) {
493- $ expirationDate = new \DateTime ();
496+ $ expirationDate = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
494497 $ expirationDate ->setTime (0 , 0 , 0 );
495498
496499 $ days = (int )$ this ->config ->getAppValue ('core ' , 'link_defaultExpDays ' , $ this ->shareApiLinkDefaultExpireDays ());
@@ -506,7 +509,7 @@ protected function validateExpirationDateLink(IShare $share) {
506509 throw new \InvalidArgumentException ('Expiration date is enforced ' );
507510 }
508511
509- $ date = new \DateTime ();
512+ $ date = new \DateTime (' now ' , $ this -> dateTimeZone -> getTimeZone () );
510513 $ date ->setTime (0 , 0 , 0 );
511514 $ date ->add (new \DateInterval ('P ' . $ this ->shareApiLinkDefaultExpireDays () . 'D ' ));
512515 if ($ date < $ expirationDate ) {
@@ -528,6 +531,9 @@ protected function validateExpirationDateLink(IShare $share) {
528531 throw new \Exception ($ message );
529532 }
530533
534+ if ($ expirationDate instanceof \DateTime) {
535+ $ expirationDate ->setTimezone (new \DateTimeZone (date_default_timezone_get ()));
536+ }
531537 $ share ->setExpirationDate ($ expirationDate );
532538
533539 return $ share ;
0 commit comments