]> git.mxchange.org Git - friendica-addons.git/blobdiff - dav/common/calendar_rendering.fnk.php
Move Temporal::convert() to DateTimeFormat::convert()
[friendica-addons.git] / dav / common / calendar_rendering.fnk.php
index b6c009dbb997ef7f167072455529316bd31c5180..bc13ce39fe7250b6e2cc68932cf57d68ed1e5745 100644 (file)
@@ -1,10 +1,11 @@
 <?php
 
+use Friendica\Util\DateTimeFormat;
 
 
 /**
- * @param Sabre_VObject_Component_VAlarm $alarm
- * @param Sabre_VObject_Component_VEvent|Sabre_VObject_Component_VTodo $parent
+ * @param Sabre\VObject\Component\VAlarm $alarm
+ * @param Sabre\VObject\Component\VEvent|Sabre\VObject\Component\VTodo $parent
  * @return DateTime|null
  * @throws Sabre_DAV_Exception
  */
@@ -12,12 +13,12 @@ function renderCalDavEntry_calcalarm(&$alarm, &$parent)
 {
        $trigger = $alarm->__get("TRIGGER");
        if (!isset($trigger['VALUE']) || strtoupper($trigger['VALUE']) === 'DURATION') {
-               $triggerDuration = Sabre_VObject_DateTimeParser::parseDuration($trigger);
+               $triggerDuration = Sabre\VObject\DateTimeParser::parseDuration($trigger->value);
 
                $related = (isset($trigger['RELATED']) && strtoupper($trigger['RELATED']) == 'END') ? 'END' : 'START';
 
                if ($related === 'START') {
-                       /** @var Sabre_VObject_Property_DateTime $dtstart  */
+                       /** @var Sabre\VObject\Property\DateTime $dtstart  */
                        $dtstart          = $parent->__get("DTSTART");
                        $effectiveTrigger = $dtstart->getDateTime();
                        $effectiveTrigger->add($triggerDuration);
@@ -28,14 +29,14 @@ function renderCalDavEntry_calcalarm(&$alarm, &$parent)
                                $endProp = 'DTEND';
                        }
 
-                       /** @var Sabre_VObject_Property_DateTime $dtstart  */
+                       /** @var Sabre\VObject\Property\DateTime $dtstart  */
                        $dtstart = $parent->__get("DTSTART");
                        if (isset($parent->$endProp)) {
                                $effectiveTrigger = clone $parent->$endProp->getDateTime();
                                $effectiveTrigger->add($triggerDuration);
                        } elseif ($parent->__get("DURATION") != "") {
                                $effectiveTrigger = clone $dtstart->getDateTime();
-                               $duration         = Sabre_VObject_DateTimeParser::parseDuration($parent->__get("DURATION"));
+                               $duration         = Sabre\VObject\DateTimeParser::parseDuration($parent->__get("DURATION"));
                                $effectiveTrigger->add($duration);
                                $effectiveTrigger->add($triggerDuration);
                        } else {
@@ -58,10 +59,10 @@ function renderCalDavEntry_calcalarm(&$alarm, &$parent)
  */
 function renderCalDavEntry_data(&$calendar, &$calendarobject)
 {
-       /** @var Sabre_VObject_Component_VCalendar $vObject  */
-       $vObject       = Sabre_VObject_Reader::read($calendarobject["calendardata"]);
+       /** @var Sabre\VObject\Component\VCalendar $vObject  */
+       $vObject       = Sabre\VObject\Reader::read($calendarobject["calendardata"]);
        $componentType = null;
-       /** @var Sabre_VObject_Component_VEvent $component  */
+       /** @var Sabre\VObject\Component\VEvent $component  */
        $component = null;
        foreach ($vObject->getComponents() as $component) {
                if ($component->name !== 'VTIMEZONE') {
@@ -73,6 +74,8 @@ function renderCalDavEntry_data(&$calendar, &$calendarobject)
                throw new Sabre_DAV_Exception_BadRequest('Calendar objects must have a VJOURNAL, VEVENT or VTODO component');
        }
 
+       $timezoneOffset = date("P"); // @TODO Get the actual timezone from the event
+
 
        if ($componentType !== 'VEVENT') return;
 
@@ -84,18 +87,18 @@ function renderCalDavEntry_data(&$calendar, &$calendarobject)
        );
 
        $recurring = ($component->__get("RRULE") ? 1 : 0);
-       /** @var Sabre_VObject_Property_DateTime $dtstart  */
+       /** @var Sabre\VObject\Property\DateTime $dtstart  */
        $dtstart = $component->__get("DTSTART");
-       $allday  = ($dtstart->getDateType() == Sabre_VObject_Property_DateTime::DATE ? 1 : 0);
+       $allday  = ($dtstart->getDateType() == Sabre\VObject\Property\DateTime::DATE ? 1 : 0);
 
-       /** @var array|Sabre_VObject_Component_VAlarm[] $alarms  */
+       /** @var array|Sabre\VObject\Component\VAlarm[] $alarms  */
        $alarms = array();
        foreach ($component->getComponents() as $a_component) if ($a_component->name == "VALARM") {
-               /** var Sabre_VObject_Component_VAlarm $component */
+               /** var Sabre\VObject\Component\VAlarm $component */
                $alarms[] = $a_component;
        }
 
-       $it       = new Sabre_VObject_RecurrenceIterator($vObject, (string)$component->__get("UID"));
+       $it       = new Sabre\VObject\RecurrenceIterator($vObject, (string)$component->__get("UID"));
        $last_end = 0;
        $max_ts   = mktime(0, 0, 0, 1, 1, CALDAV_MAX_YEAR * 1);
        $first    = true;
@@ -106,16 +109,16 @@ function renderCalDavEntry_data(&$calendar, &$calendarobject)
                $start    = $it->getDtStart()->getTimestamp();
 
                q("INSERT INTO %s%sjqcalendar (`calendar_id`, `calendarobject_id`, `Summary`, `StartTime`, `EndTime`, `IsEditable`, `IsAllDayEvent`, `IsRecurring`, `Color`) VALUES
-                       (%d, %d, '%s', '%s', '%s', %d, %d, %d, '%s')", CALDAV_SQL_DB, CALDAV_SQL_PREFIX,
-                       IntVal($calendar["id"]), IntVal($calendarobject["id"]), dbesc($event["summary"]), date("Y-m-d H:i:s", $start), date("Y-m-d H:i:s", $last_end),
-                       1, $allday, $recurring, dbesc(substr($event["color"], 1))
+                       (%d, %d, '%s', CONVERT_TZ('%s', '$timezoneOffset', @@session.time_zone), CONVERT_TZ('%s', '$timezoneOffset', @@session.time_zone), %d, %d, %d, '%s')",
+                       CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendar["id"]), IntVal($calendarobject["id"]), dbesc($event["summary"]), date(DateTimeFormat::MYSQL, $start),
+                       date(DateTimeFormat::MYSQL, $last_end), 1, $allday, $recurring, dbesc(substr($event["color"], 1))
                );
 
                foreach ($alarms as $alarm) {
                        $alarm    = renderCalDavEntry_calcalarm($alarm, $component);
                        $notified = ($alarm->getTimestamp() < time() ? 1 : 0);
-                       q("INSERT INTO %s%snotifications (`calendar_id`, `calendarobject_id`, `alert_date`, `notified`) VALUES (%d, %d, '%s', %d)",
-                               CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendar["id"]), IntVal($calendarobject["id"]), $alarm->format("Y-m-d H:i:s"), $notified
+                       q("INSERT INTO %s%snotifications (`calendar_id`, `calendarobject_id`, `alert_date`, `notified`) VALUES (%d, %d, CONVERT_TZ('%s', '$timezoneOffset', @@session.time_zone), %d)",
+                               CALDAV_SQL_DB, CALDAV_SQL_PREFIX, IntVal($calendar["id"]), IntVal($calendarobject["id"]), $alarm->format(DateTimeFormat::MYSQL), $notified
                        );
                }