Преглед изворни кода

fixed ical issue with irregular timezone in dtstart field (#1797)

CauseFX пре 4 година
родитељ
комит
faa61bc8b3
1 измењених фајлова са 5 додато и 2 уклоњено
  1. 5 2
      api/homepage/ical.php

+ 5 - 2
api/homepage/ical.php

@@ -242,6 +242,7 @@ trait ICalHomepageItem
 							if (strpos($tzKey[0], 'TZID=') !== false) {
 								$originalTimeZone = explode('TZID=', (string)$tzKey[0]);
 								$originalTimeZone = (count($originalTimeZone) >= 2) ? str_replace('"', '', $originalTimeZone[1]) : false;
+								$originalTimeZone = stripos($originalTimeZone, ';') !== false ? explode(';', $originalTimeZone)[0] : $originalTimeZone;
 							}
 						}
 						$start = reset($startKeys);
@@ -277,8 +278,10 @@ trait ICalHomepageItem
 								$dateTimeOriginalOffset = $dateTimeOriginal->getOffset() / 3600;
 								$dateTimeUTCOffset = $dateTimeUTC->getOffset() / 3600;
 								$diff = $dateTimeUTCOffset - $dateTimeOriginalOffset;
-								$startDt->modify('+ ' . $diff . ' hour');
-								$endDt->modify('+ ' . $diff . ' hour');
+								if ((int)$diff >= 0) {
+									$startDt->modify('+ ' . $diff . ' hour');
+									$endDt->modify('+ ' . $diff . ' hour');
+								}
 							}
 							$startDt->setTimeZone(new DateTimezone ($timeZone));
 							$endDt->setTimeZone(new DateTimezone ($timeZone));