LoxBerry: CalDAV-4-Lox Plugin verfügbar.

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • svethi
    Lebende Foren Legende
    • 25.08.2015
    • 6289

    Ja, ganz klar. Microsoft meint da sich mal wieder nicht an Standards zu halten. Die von Microsoft angegeben TZID (Timezone Information ID) gibt es gar nicht. Aus dem Grund bricht die Verarbeitung des Kalenders ab. Gültige TZID‘s für Dich wären WET oder Europe/Lisboa, oder halt alles was da liegt. Ob das jetzt Dein Client so blöd da einträgt, oder der Exchange 2010 das macht, kann ich Dir nicht sagen. Kannst versuchen den Kalender auf UTC umzustellen.
    Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

    Kommentar

    • blacksun
      MS Profi
      • 20.01.2016
      • 559

      Guten Morgen svethi ,

      ich habe die Terminserie Montag-Freitag täglich 13:30 - 22:00 Uhr umgestellt auf UTC.

      Dann siehts so aus.

      Code:
      BEGIN:VCALENDAR
      METHOD:PUBLISH
      PRODID:Microsoft Exchange Server 2010
      VERSION:2.0
      X-WR-CALNAME:Kalender
      BEGIN:VTIMEZONE
      TZID:UTC
      BEGIN:STANDARD
      DTSTART:16010101T000000
      TZOFFSETFROM:+0000
      TZOFFSETTO:+0000
      END:STANDARD
      BEGIN:DAYLIGHT
      DTSTART:16010101T000000
      TZOFFSETFROM:+0000
      TZOFFSETTO:+0000
      END:DAYLIGHT
      END:VTIMEZONE
      BEGIN:VEVENT
      DESCRIPTION:\n
      RRULE:FREQ=DAILY;UNTIL=20191130T133000Z;INTERVAL=1
      UID:040000008200E00074C5B7101A82E0080000000010F006AC8617D501000000000000000
       01000000081A1A8B98ABE3947B6117DC73461EB27
      SUMMARY:Spätschicht
      DTSTART;TZID=UTC:20190527T133000
      DTEND;TZID=UTC:20190527T220000
      CLASS:PUBLIC
      PRIORITY:5
      DTSTAMP:20190531T060933Z
      TRANSP:TRANSPARENT
      STATUS:CONFIRMED
      SEQUENCE:0
      LOCATION:
      X-MICROSOFT-CDO-APPT-SEQUENCE:0
      X-MICROSOFT-CDO-BUSYSTATUS:FREE
      X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
      X-MICROSOFT-CDO-ALLDAYE
      
      VENT:FALSE
      X-MICROSOFT-CDO-IMPORTANCE:1
      X-MICROSOFT-CDO-INSTTYPE:1
      X-MICROSOFT-DONOTFORWARDMEETING:FALSE
      X-MICROSOFT-DISALLOW-COUNTER:FALSE
      END:VEVENT
      END:VCALENDAR
      Abfrage des Kalenders:


      Rückmeldung von CalDav4Lox:
      { "Spätschicht": { "Start": 328455000, "End": 328492800, "Summary": "Spätschicht", "Description": "\n", "fwDay": -0, "wkDay": 4 }, "now": 328522199 }

      Zumindestens kommt jetzt eine Rückmeldung.

      Auf dieser Seite https://unicode.org/cldr/charts/late...zone_tzid.html findet man eine "Mapping for Windows" Table :-) Warum das Microsoft wieder macht. Ist ja genau verdreht drum

      Klicke auf die Grafik für eine vergrößerte Ansicht

Name: 5.png
Ansichten: 467
Größe: 11,6 KB
ID: 202994

      Könntest evtl. die Table in deine APP übernehmen?

      Allerdings frage ich mich noch, warums denn funktioniert, wenn man einen Termin von Montag-Freitag ganztägig erstellt und warum nicht, wenn man einen Termin Montag-Freitag 13:30-22:00 erstellt. Wegen der Zeitangabe. Spielt die Zeitzone evtl. nur dann eine Rolle? Muss ja dran liegen, weils mit UTC ja geht.

      Gruß
      Michael

      Kommentar


      • blacksun
        blacksun kommentierte
        Kommentar bearbeiten
        Ich meine schon, das das schon so passt. Wenn ich die Weboberfläche auf UTC stelle, aber ich vorher mit Outlook Desktop UTC+1 einen Termin eingestellt habe, wird mir der Termin in OUtlook Desktop korrekt angezeigt und in der Weboberfläche aber falsch. Aber der Termineintrag ist in der ics trotzdem UTC+1, da ich diesen ja im Outlook Desktop erstellt habe. Wo müsste ich denn da in der php ansetzen, das es wenigstens für mich läuft. Ich kann leider kein php ;-)

      • svethi
        svethi kommentierte
        Kommentar bearbeiten
        Wenn Du den Termin als UTC+2 anlegst und die Weboberfläche auf UTC umstellst, dann muss im ical-File bei der Angabe UTC auch die UTC Zeit stehen und nicht die UTC + 2 Zeit
        Du müsstest im ical file alle TZID auf den richtigen Wert ändern, bevor das verarbeitet wird

      • blacksun
        blacksun kommentierte
        Kommentar bearbeiten
        Nein, so macht er es eben nicht. Ich lege den Termin mit UTC+2 in Outlook Desktop an, die Weboberfläche stelle ich auf UTC. Dann werden die Termine zeitlich für UTC korrekt angezeigt, also 11:30. Aber in der ics steht trotzdem UTC+2, also W. Europe Standard Time.
    • blacksun
      MS Profi
      • 20.01.2016
      • 559

      Ich habe mir jetzt mit folgendem Code geholfen.

      if ($estart[1] == "W. Europe Standard Time") {
      $estart[1] = "Europe/Berlin";
      }

      if ($eend[1] == "W. Europe Standard Time") {
      $eend[1] = " Europe/Berlin";
      }

      Kann man das so lassen? Was meinst du?


      Code:
      if (preg_match("/SUMMARY:(.*($search)[^\r\n]*)/",$event,$ematch)) {
                  $countevents +=1;
                  $teststart = $ustart;
                  if(preg_match("/DTSTART;.*TZID=(.*);(VALUE=DATE):(.*)\b/",$event,$estart)) {
      
                      if ($estart[1] == "W. Europe Standard Time") {
                      $estart[1] = "Europe/Berlin";
                      }
      
                      $teststart = $vdstart;
                      $estart[3] .= "T000000";
                      $estart = DateTime::createFromFormat('YmdHis',str_replace("T","",$estart[3]),new DateTimeZone($estart[1]));
                  } elseif (preg_match("/DTSTART;.*TZID=(.*):(.*)\b/",$event,$estart)) {
                      $estart = DateTime::createFromFormat('YmdHis',str_replace("T","",$estart[2]));
                  } elseif (preg_match("/DTSTART(:)(.*)Z\b/",$event,$estart)) {
                      $estart = DateTime::createFromFormat('YmdHis',str_replace("T","",$estart[2]),new DateTimeZone("UTC"));
                  } elseif (preg_match("/DTSTART;(VALUE=DATE):(.*)\b/",$event,$estart)) {
                      $teststart = $vdstart;
                      $estart[2] .= "T000000";
                      $estart = DateTime::createFromFormat('YmdHis',str_replace("T","",$estart[2]));
                  }
                  if (preg_match("/DTEND;.*TZID=(.*);(VALUE=DATE):(.*)\b/",$event,$eend)) {            
                      if ($eend[1] == "W. Europe Standard Time") {
                          $eend[1] = " Europe/Berlin";
                      }
                      $eend[3] .= "T000000";
                      $eend = DateTime::createFromFormat('YmdHis',str_replace("T","",$eend[3]),new DateTimeZone($eend[1]));
                  } elseif (preg_match("/DTEND;.*TZID=(.*):(.*)\b/",$event,$eend)) {
                      if ($eend[1] == "W. Europe Standard Time") {
                          $eend[1] = " Europe/Berlin";
                      }
                      $eend = DateTime::createFromFormat('YmdHis',str_replace("T","",$eend[2]),new DateTimeZone($eend[1]));
                  } elseif (preg_match("/DTEND(:)(.*)Z\b/",$event,$eend)) {
                      $eend = DateTime::createFromFormat('YmdHis',str_replace("T","",$eend[2]),new DateTimeZone("UTC"));
                  } elseif (preg_match("/DTEND;(VALUE=DATE):(.*)\b/",$event,$eend)) {
                      $eend[2] .= "T000000";
                      $eend = DateTime::createFromFormat('YmdHis',str_replace("T","",$eend[2]));
                  }
                  date_timezone_set($estart,$localTZ);
                  date_timezone_set($eend,$localTZ);

      Kommentar

      • svethi
        Lebende Foren Legende
        • 25.08.2015
        • 6289

        Ich glaube nicht, dass das reicht, denn die TZID steht oft in mehreren Angaben. Ich habe mir mal den Microsoft Kalender angesehen und habe auch Dein Problem nachstellen können. Zeitzone des Accounts UTC. Zeitzone des Kalenders Berlin (UTC+1 ist hier ja auch schon falsch). Einen Termin angelegt, der steht richtig im Kalender. Exportiere ich den Kalender, steht im ics UTC aber mit der Zeit UTC+2 das ist alles total falsch und absoluter Murks. Vergiss Microsoft. iCal wurde von Apple entwickelt. Das funktioniert halt nicht.
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar


        • blacksun
          blacksun kommentierte
          Kommentar bearbeiten
          Weiter unten im Code der caldav.php kommen auch nochmal 4 DateTimeZone. Diese habe ich jetzt ebenso noch angepasst, das es für Outlook.com passt. Ich stelle da nie was rum, an der Zeitzone. Es läuft jetzt für mich. Ich muss halt jetzt jedesmal die caldav.php anpassen, wenn du eine neue Version rausbringst, aber das hält sich in Grenzen.
      • svethi
        Lebende Foren Legende
        • 25.08.2015
        • 6289

        Ich kann das nicht einfach nur so mal eben für einen machen. Der LB wird in vielen Zeitzonen eingesetzt. Wenn ich das mache, muss es für alle sein. Das heißt, dass Deine komplette Mappingliste integriert werden müsste.
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar

        • blacksun
          MS Profi
          • 20.01.2016
          • 559

          Ok, das verstehe ich schon. Dann könnt ich ja die Mappingtable komplett abtippen.

          Hilf mir mal bitte mit deinen php Kenntnissen weiter.

          Bei den Terminen Frühschicht gibts noch ein Problem. Und zwar beim Parameter EXDATE.

          Ich vermute mal, das das Suchpattern nicht klar kommt mit dem Punkt in "W. Europe Standard Time".

          Code:
          //echo "$timeend - Wiederholung gefunden, RRULE starten.\n";
                          preg_match_all("/EXDATE.*:(.*)\s/iU",$event,$resExDates, PREG_PATTERN_ORDER);
                          foreach ($resExDates[1] AS $d => $ExDate) {
                              $ExDates[] = $ExDate;
                          }
          Wenn ich die o. g. Zeilen auskommentiere, dann kommt wieder eine Rückmeldung. Kannst du dir das Suchmuster mal anschauen. Da komm ich nicht mehr klar mit

          Code:
          "/EXDATE.*:(.*)\s/iU"
          Was sagt das genau aus?


          Code:
          BEGIN:VCALENDAR
          METHOD:PUBLISH
          PRODID:Microsoft Exchange Server 2010
          VERSION:2.0
          X-WR-CALNAME:Kalender
          BEGIN:VTIMEZONE
          TZID:W. Europe Standard Time
          BEGIN:STANDARD
          DTSTART:16010101T030000
          TZOFFSETFROM:+0200
          TZOFFSETTO:+0100
          RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
          END:STANDARD
          BEGIN:DAYLIGHT
          DTSTART:16010101T020000
          TZOFFSETFROM:+0100
          TZOFFSETTO:+0200
          RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
          END:DAYLIGHT
          END:VTIMEZONE
          BEGIN:VEVENT
          DESCRIPTION:\n
          RRULE:FREQ=WEEKLY;UNTIL=20191122T040000Z;INTERVAL=2;BYDAY=MO,TU,WE,TH,FR;WK
           ST=MO
          EXDATE;TZID=W. Europe Standard Time:20190422T050000,20190423T050000,2019042
           4T050000,20190425T050000,20190426T050000,20190617T050000,20190618T050000,2
           0190619T050000,20190620T050000,20190621T050000,20190812T050000,20190813T05
           0000,20190814T050000,20190815T050000,20190816T050000,20191007T050000,20191
           008T050000,20191009T050000,20191010T050000,20191011T050000
          UID:040000008200E00074C5B7101A82E008000000003063AAE3BD17D501000000000000000
           0100000007C821FFFA5DE6044A440448A3A7C5CD9
          SUMMARY:Frühschicht
          DTSTART;TZID=W. Europe Standard Time:20190228T050000
          DTEND;TZID=W. Europe Standard Time:20190228T133000
          CLASS:PUBLIC
          PRIORITY:5
          DTSTAMP:20190531T124524Z
          TRANSP:OPAQUE
          STATUS:CONFIRMED
          SEQUENCE:0
          LOCATION:
          X-MICROSOFT-CDO-APPT-SEQUENCE:0
          X-MICROSOFT-CDO-BUSYSTATUS:BUSY
          X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
          X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
          X-MICROSOFT-CDO-IMPORTANCE:1
          X-MICROSOFT-CDO-INSTTYPE:1
          X-MICROSOFT-DONOTFORWARDMEETING:FALSE
          X-MICROSOFT-DISALLOW-COUNTER:FALSE
          END:VEVENT

          Kommentar

          • svethi
            Lebende Foren Legende
            • 25.08.2015
            • 6289

            Deshalb habe ich ja gesagt, dass es einfacher ist die Namen vorher auszutauschen.
            Okay, dann gib die Mappingtabelle als JSON ein.
            Code:
            {
            "Windowsname":"TZID",
            "nächster":"...",
            .,
            .,
            .
            }
            Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

            Kommentar

            • blacksun
              MS Profi
              • 20.01.2016
              • 559

              Ok, kann ich machen.

              Aber was bedeutet dieser Code?
              Code:
               
               "/EXDATE.*:(.*)\s/iU"

              Kommentar


              • svethi
                svethi kommentierte
                Kommentar bearbeiten
                Das ist kein PHP, das ist ein regulärer Ausdruck. Das ist nichts für schwache Nerven ;-)

              • blacksun
                blacksun kommentierte
                Kommentar bearbeiten
                Ich habe gute Nerven, also bitte, gibs mir :-)
            • blacksun
              MS Profi
              • 20.01.2016
              • 559

              Anbei die gewünschte Datei.

              Daten hab ich von hier genommen:
              https://unicode.org/cldr/charts/late...zone_tzid.html

              Bräuchtest die Region nicht auch noch in der Datei?
              W.Europe Standard Time gibts ja öfters.

              "W. Europe Standard Time":"Europe/Berlin",
              "W. Europe Standard Time":"Europe/Andorra",
              "W. Europe Standard Time":"Europe/Vienna",
              "W. Europe Standard Time":"Europe/Zurich",
              "W. Europe Standard Time":"Europe/Berlin Europe/Busingen",
              "W. Europe Standard Time":"Europe/Gibraltar",
              "W. Europe Standard Time":"Europe/Rome",
              "W. Europe Standard Time":"Europe/Vaduz",
              "W. Europe Standard Time":"Europe/Luxembourg",
              "W. Europe Standard Time":"Europe/Monaco",
              "W. Europe Standard Time":"Europe/Malta",
              "W. Europe Standard Time":"Europe/Amsterdam",
              "W. Europe Standard Time":"Europe/Oslo",
              "W. Europe Standard Time":"Europe/Stockholm",
              "W. Europe Standard Time":"Arctic/Longyearbyen",
              "W. Europe Standard Time":"Europe/San_Marino",
              "W. Europe Standard Time":"Europe/Vatican",

              Hab noch eine Datei angehängt, die die Region auch noch enthält. Ich hoffe es passt so.

              Hab grad noch was gefunden. https://github.com/mj1856/TimeZoneConverter
              evtl. gibts sowas schon passend für den loxberry.
              Angehängte Dateien
              Zuletzt geändert von blacksun; 31.05.2019, 19:02.

              Kommentar


              • svethi
                svethi kommentierte
                Kommentar bearbeiten
                Das ist ein C# Projekt, was soll ich damit anfangen? Das gibts dort, weil es eine Windows Umgebung hat.
            • blacksun
              MS Profi
              • 20.01.2016
              • 559

              Sorry, aber jetzt muss ich noch auf den regulären Ausdruck
              Code:
               "/EXDATE.*:(.*)\s/iU"
              zurück kommen.

              Der Fehler liegt anscheinend an dem Ausdruck und nicht an der Zeitzone.

              Wie bin ich vorgegangen. Ich habe einen Termin Frühschicht 05:00 - 13:30 Uhr Wöchentlich Mo-Fr, Wiederholung alle 2 Wochen für das ganze Jahr erstellt. Ich habe manchmal in den Frühschicht Wochen Nachtschicht, also habe ich in den Frühschicht Wochen die Frühschicht Termine gelöscht, nur diese Einträge, nicht die Serie. Das führt dann zu Exdate Einträgen im *.ics.

              Code:
              BEGIN:VEVENT
              DESCRIPTION:\n
              RRULE:FREQ=WEEKLY;UNTIL=20191122T040000Z;INTERVAL=2;BYDAY=MO,TU,WE,TH,FR;WK
               ST=MO
              EXDATE;TZID=W. Europe Standard Time:20190422T050000,20190423T050000,2019042
               4T050000,20190425T050000,20190426T050000,20190617T050000,20190618T050000,2
               0190619T050000,20190620T050000,20190621T050000,20190812T050000,20190813T05
               0000,20190814T050000,20190815T050000,20190816T050000,20191007T050000,20191
               008T050000,20191009T050000,20191010T050000,20191011T050000
              UID:040000008200E00074C5B7101A82E008000000003063AAE3BD17D501000000000000000
               0100000007C821FFFA5DE6044A440448A3A7C5CD9
              SUMMARY:Frühschicht
              DTSTART;TZID=W. Europe Standard Time:20190228T050000
              DTEND;TZID=W. Europe Standard Time:20190228T133000
              CLASS:PUBLIC
              PRIORITY:5
              DTSTAMP:20190531T173318Z
              TRANSP:OPAQUE
              STATUS:CONFIRMED
              SEQUENCE:0
              LOCATION:
              X-MICROSOFT-CDO-APPT-SEQUENCE:0
              X-MICROSOFT-CDO-BUSYSTATUS:BUSY
              X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
              X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
              X-MICROSOFT-CDO-IMPORTANCE:1
              X-MICROSOFT-CDO-INSTTYPE:1
              X-MICROSOFT-DONOTFORWARDMEETING:FALSE
              X-MICROSOFT-DISALLOW-COUNTER:FALSE
              END:VEVENT
              Und da passt dann der Ausdruck nicht wirklich, da keine Rückmeldung mehr kommt --> weiß Seite im Firefox.

              Habs grad nochmal mit dem Google Kalender getestet, hier wird pro gelöschtem Termin ein Eintrag erstellt, und nicht durch Komma getrennt. Toll.

              Code:
              BEGIN:VCALENDAR
              PRODID:-//Google Inc//Google Calendar 70.9054//EN
              VERSION:2.0
              CALSCALE:GREGORIAN
              METHOD:PUBLISH
              X-WR-CALNAME:Kalender
              X-WR-TIMEZONE:Europe/Berlin
              BEGIN:VTIMEZONE
              TZID:Europe/Berlin
              X-LIC-LOCATION:Europe/Berlin
              BEGIN:DAYLIGHT
              TZOFFSETFROM:+0100
              TZOFFSETTO:+0200
              TZNAME:CEST
              DTSTART:19700329T020000
              RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
              END:DAYLIGHT
              BEGIN:STANDARD
              TZOFFSETFROM:+0200
              TZOFFSETTO:+0100
              TZNAME:CET
              DTSTART:19701025T030000
              RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
              END:STANDARD
              END:VTIMEZONE
              BEGIN:VEVENT
              DTSTART;TZID=Europe/Berlin:20190429T050000
              DTEND;TZID=Europe/Berlin:20190429T133000
              RRULE:FREQ=WEEKLY;WKST=MO;INTERVAL=2;BYDAY=MO,TU,WE,TH,FR
              EXDATE;TZID=Europe/Berlin:20190823T050000
              EXDATE;TZID=Europe/Berlin:20190821T050000
              EXDATE;TZID=Europe/Berlin:20190709T050000
              EXDATE;TZID=Europe/Berlin:20190710T050000
              EXDATE;TZID=Europe/Berlin:20190711T050000
              EXDATE;TZID=Europe/Berlin:20190726T050000
              EXDATE;TZID=Europe/Berlin:20190722T050000
              DTSTAMP:20190531T182835Z
              UID:6csvsib3v7lenc2p2df6i4os12@google.com
              CREATED:20190531T182716Z
              DESCRIPTION:
              LAST-MODIFIED:20190531T182716Z
              LOCATION:
              SEQUENCE:0
              STATUS:CONFIRMED
              SUMMARY:Frühschicht
              TRANSP:OPAQUE
              END:VEVENT
              END:VCALENDAR
              Kann man den Ausdruck da anpassen bzw. den Code anpassen?
              Zuletzt geändert von blacksun; 31.05.2019, 20:34.

              Kommentar

              • svethi
                Lebende Foren Legende
                • 25.08.2015
                • 6289

                Weißt Du, so langsam reicht es mir. Ich werde nicht das ganze Plugin für Deinen blöden Exchangeserver umbauen.
                Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                Kommentar

                • blacksun
                  MS Profi
                  • 20.01.2016
                  • 559

                  Ja mir auch. Lassen wir’s einfach. Ich hab nicht gesagt, das du das machen sollst.

                  Kommentar

                  • blacksun
                    MS Profi
                    • 20.01.2016
                    • 559

                    Ich habe mich jetzt mit meinem "blöden" Exchange Kalender noch beschäftigt. Mit diesem Code funktionierts nun. Nicht perfekt, daber dieser Code geht für beide Kalender, google und outlook.com.

                    Code:
                    /* Überprüfe, welcher Kalender abgefragt wird    */
                        preg_match_all("/(BEGIN:VCALENDAR.*BEGIN:STANDARD)/isU",$Datei,$gvtimezones, PREG_PATTERN_ORDER);
                        foreach ($gvtimezones[1] as $e => $vtimezone) {
                            if (preg_match("/PRODID:(.*(Microsoft Exchange Server)[^\r\n]*)/",$vtimezone,$ematch)) {
                                // echo "Exchange Kalender";
                                $caltype="Exchange";
                                } elseif (preg_match("/PRODID:(.*(Google)[^\r\n]*)/",$vtimezone,$ematch)) {
                                // echo "Google Kalender";
                                $caltype="Google";
                            } else {
                                echo "Pech gehabt, noch so ein blöder Kalender";
                            }
                        }
                    
                    if ($caltype=="Exchange") {
                                        /* Anpassung für Outlook.com bzw. Microsoft Exchange */
                                        preg_match("/EXDATE;[^:]+:([\S\s]+?)UID:/", $event, $resExDates);
                                        /* Zeilenumbrüche und Leerzeichen entfernen */
                                        $resExDates[1] = preg_replace('/\s| /','',$resExDates[1]);
                                        /* String enthält alle Exdates getrennt durch ',' */
                                        $resExDates[1] = explode(',', $resExDates[1]);    
                                    } else {
                                        /* originaler Code für Googlekalender */
                                        preg_match_all("/EXDATE.*:(.*)\s/iU",$event,$resExDates, PREG_PATTERN_ORDER);
                                    }
                    Obs jetzt mit Rdate auch noch ein Problem gibt, kann ich nicht sagen, da ich nicht weiss, welche Termine ich machen muss, damit rdate Einträge vorhanden sind in der ics.

                    Code:
                    if (preg_match("/RDATE.*:(.*)\s/",$event,$resRDates)) {
                                        $RDates = explode(",",$resRDates[1]);
                                    }
                    Gruß
                    Michael

                    Kommentar

                    • svethi
                      Lebende Foren Legende
                      • 25.08.2015
                      • 6289

                      Ich habe mir das noch nicht gelöste Problem mit den verschobenen Terminen aus einer Serie über recurrence-id mal angesehen und werde diesbezüglich auch auf eine andere Lib ausweichen. Bei der Gelegenheit wird dann auch das Microsoft Problem beseitigt
                      Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                      Kommentar

                      • blacksun
                        MS Profi
                        • 20.01.2016
                        • 559

                        Servus svethi ,

                        ich schon wieder :-) Habe einen Termin Schulferien (Pfingsferien) vom 11.6-21.6 ganztägig erstellt. Wenn ich jetzt mittels fwdays=0 abfrage erhalte ich
                        { "Schulferien": { "Start": 329443200, "End": 330393600, "Summary": "Schulferien", "Description": "Pfingstferien", "fwDay": -2, "wkDay": 2 }, "now": 329659831 }

                        Warum wird hier dann fwdays -2 ausgegeben? Jetzt erkennt Loxone nur die Schulferien am 1. Tag. Ich frage im Miniserver auf fwdays=0 und Schulferien ab. fwdays=-2 vermutlich, weil die Ferien am Dienstag angefangen haben. Wie könnte ich das am Besten abfragen?

                        Kommentar

                        Lädt...