示例#1
0
 public static function getCalendarDetails($className, $classID, $T = null)
 {
     $K = new Kalender();
     if ($T == null) {
         $T = new FAdresseGUI($classID);
     }
     $name = $T->A("vorname") . " " . $T->A("nachname") . " <span style=\"color:grey;\">" . (date("Y") - date("Y", $T->A("geb"))) . "</span>";
     $day = mktime(8, 0, 0, date("m", $T->A("geb")), date("d", $T->A("geb")), date("Y"));
     $KE = new KalenderEvent($className, $classID, $K->formatDay($day), "0900", $name);
     #$KE->repeat(true, "yearly");
     $KE->icon("./fheME/FAdressen/birthday.png");
     $KE->summary("Geburtstag");
     return $KE;
 }
示例#2
0
 function when($startDay, $endDay)
 {
     $when = array();
     $start = Kalender::parseDay($this->firstDay);
     $end = Kalender::parseDay($this->lastDay);
     $D = new Datum($start);
     if ($this->callbackOnShow !== null) {
         $ex = explode("::", $this->callbackOnShow);
     }
     while ($D->time() <= $end) {
         $W = new stdClass();
         $W->day = Kalender::formatDay($D->time());
         $W->time = "0800";
         $cb = true;
         if ($this->callbackOnShow !== null) {
             $cb = Util::invokeStaticMethod($ex[0], $ex[1], array($this, $D, $W));
         }
         if ($cb) {
             $when[] = $W;
         }
         $D->addDay();
     }
     return $when;
 }
示例#3
0
 function when($startDay, $endDay)
 {
     if ($this->exception !== false and $this->exception[1] == "1") {
         return array();
     }
     $when = array();
     $W = new stdClass();
     $W->day = $this->day;
     $W->endDay = $this->endDay;
     $W->time = $this->time;
     $when[] = $W;
     $pDay = Kalender::parseDay($this->day);
     $peDay = Kalender::parseDay($this->endDay);
     if ($peDay > $pDay) {
         $D = new Datum($pDay);
         while ($D->time() <= $peDay) {
             $newStamp = Kalender::formatDay($D->time());
             $D->addDay();
             if ($D->time() < $startDay or $D->time() > $endDay + 3600 * 25) {
                 continue;
             }
             #echo $D->time()." &lt; ".$startDay." OR ".$D->time()." &gt; ".$endDay."<br />";
             if ($newStamp == $this->day) {
                 continue;
             }
             $W = new stdClass();
             $W->day = $newStamp;
             $W->endDay = $this->endDay;
             $W->time = $this->time;
             $when[] = $W;
         }
     }
     $firstDay = Kalender::parseDay($this->day);
     if ($this->repeat) {
         switch ($this->repeatType) {
             case "daily":
                 $days = array();
                 if ($this->repeatDayOfWeek != "") {
                     $days = explode(",", $this->repeatDayOfWeek);
                     $when = array();
                     //always reset first day
                 }
                 $D = new Datum($startDay);
                 while ($D->time() <= $endDay) {
                     $newDay = Kalender::formatDay($D->time());
                     $cTime = $D->time();
                     $D->addDay();
                     #if($newDay == $this->day)
                     #s		continue;
                     if ($D->time() <= $firstDay) {
                         continue;
                     }
                     if (isset($this->exceptions[$newDay . $this->time])) {
                         continue;
                     }
                     if (!in_array(date("w", $cTime), $days)) {
                         continue;
                     }
                     $W = new stdClass();
                     $W->day = $newDay;
                     $W->endDay = $newDay;
                     $W->time = $this->time;
                     $when[] = $W;
                 }
                 break;
             case "weekly":
                 #echo Util::CLDateParser($firstDay)."<br />";
                 #echo $this->repeatInterval;
                 $weekDay = date("w", $pDay);
                 $D = new Datum($firstDay > $startDay ? $firstDay : $startDay);
                 while ($D->time() <= $endDay) {
                     if (date("w", $D->time()) == $weekDay) {
                         break;
                     }
                     $D->addDay();
                 }
                 #$counter = floor(($D->time() - $firstDay) / (3600 * 24 * 7));
                 #echo $counter."<br />";
                 while ($D->time() <= $endDay) {
                     $newDay = Kalender::formatDay($D->time());
                     if ($this->repeatUntil > 0 and $D->time() > $this->repeatUntil) {
                         break;
                     }
                     $D->addWeek(true);
                     if ($newDay == $this->day) {
                         #$counter++;
                         continue;
                     }
                     if ($this->weeks(Kalender::parseDay($this->day), $D->time()) % ($this->repeatInterval + 1) != 0) {
                         #$counter++;
                         continue;
                     }
                     if ($D->time() <= $firstDay) {
                         continue;
                     }
                     if (isset($this->exceptions[$newDay . $this->time])) {
                         continue;
                     }
                     $W = new stdClass();
                     $W->day = $newDay;
                     $W->endDay = $newDay;
                     $W->time = $this->time;
                     $when[] = $W;
                     #$counter++;
                 }
                 break;
             case "monthly":
                 $D = new Datum($startDay);
                 #echo $this->repeatWeekOfMonth;
                 if ($this->repeatWeekOfMonth > 0 and $this->repeatWeekOfMonth != 127) {
                     #$c = -1;
                     $weekDay = date("w", $pDay);
                     #if(date("d", $D->time()) > 1 AND date("d", $D->time()) < 20)
                     #$c = 0;
                     while ($D->time() <= $endDay) {
                         $newStamp = Kalender::formatDay($D->time());
                         $newDay = date("d", $D->time());
                         $newWeekDay = date("w", $D->time());
                         #if(date("d", $D->time()) == 1)
                         #	$c = 0;
                         $ts = $D->time();
                         $D->addDay();
                         #if($c < 0)
                         #	continue;
                         if ($newWeekDay != $weekDay) {
                             continue;
                         }
                         #$c++;
                         if ($newStamp == $this->day) {
                             continue;
                         }
                         #if($c != $this->repeatWeekOfMonth)
                         #	continue;
                         if (isset($this->exceptions[$newDay . $this->time])) {
                             continue;
                         }
                         if (!$this->isNth($this->repeatWeekOfMonth, $ts)) {
                             continue;
                         }
                         $W = new stdClass();
                         $W->day = $newStamp;
                         $W->endDay = $newStamp;
                         $W->time = $this->time;
                         $when[] = $W;
                     }
                 } elseif ($this->repeatWeekOfMonth == 0) {
                     $monthDay = date("d", $pDay);
                     while ($D->time() <= $endDay) {
                         $newStamp = Kalender::formatDay($D->time());
                         $newDay = date("d", $D->time());
                         $D->addDay();
                         if ($newStamp == $this->day) {
                             continue;
                         }
                         if ($newDay != $monthDay) {
                             continue;
                         }
                         if (isset($this->exceptions[$newDay . $this->time])) {
                             continue;
                         }
                         $W = new stdClass();
                         $W->day = $newStamp;
                         $W->endDay = $newStamp;
                         $W->time = $this->time;
                         $when[] = $W;
                     }
                 } elseif ($this->repeatWeekOfMonth == 127) {
                     $when = array();
                     //always reset first day
                     $monthDay = date("d", $pDay);
                     while ($D->time() <= $endDay) {
                         $newStamp = Kalender::formatDay($D->time());
                         $newDay = date("d", $D->time());
                         $maxDays = $D->getMaxDaysOfMonth();
                         $D->addDay();
                         if ($newDay != $maxDays) {
                             continue;
                         }
                         if (isset($this->exceptions[$newDay . $this->time])) {
                             continue;
                         }
                         $W = new stdClass();
                         $W->day = $newStamp;
                         $W->endDay = $newStamp;
                         $W->time = $this->time;
                         $when[] = $W;
                     }
                 }
                 break;
             case "yearly":
                 #$monthDay = date("d", Kalender::parseDay($this->day));
                 $D = new Datum(mktime(0, 1, 0, date("m", $pDay), date("d", $pDay), date("Y")));
                 #$pDay);
                 while ($D->time() <= $endDay) {
                     $newStamp = Kalender::formatDay($D->time());
                     $D->addYear();
                     if ($newStamp == $this->day) {
                         continue;
                     }
                     if (date("Y", $D->time()) <= date("Y", $endDay)) {
                         continue;
                     }
                     #echo date("Y", $D->time())." &lt; ".date("Y", $endDay)."<br />";
                     if (isset($this->exceptions[$newStamp . $this->time])) {
                         continue;
                     }
                     $W = new stdClass();
                     $W->day = $newStamp;
                     $W->endDay = $newStamp;
                     $W->time = $this->time;
                     $when[] = $W;
                 }
                 break;
         }
     }
     #echo "<pre style=\"font-size:10px;\">$this->title";
     #print_r($when);
     #echo "</pre>";
     return $when;
 }
示例#4
0
 public static function getCalendarDetails($className, $classId)
 {
     $calendar = new Kalender();
     $ids = preg_split("/:/", $classId);
     $server = anyC::getFirst("xCal", "xCalID", $ids[0]);
     $xmlBuffer = xCalUtil::getSimpleXmlByXCal($server->A("xCalCache"));
     foreach ($xmlBuffer->vcalendar->vevent as $event) {
         if ((string) $event->uid != $ids[1]) {
             continue;
         }
         // Konvertierung der Zeitstempel
         $match = array();
         preg_match("/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})Z\$/", (string) $event->dtstart, $match);
         $startTimestamp = gmmktime($match[4], $match[5], $match[6], $match[2], $match[3], $match[1]);
         $match = array();
         preg_match("/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2})Z\$/", (string) $event->dtend, $match);
         $endTimestamp = gmmktime($match[4], $match[5], $match[6], $match[2], $match[3], $match[1]);
         $calendarEvent = new KalenderEvent("mxCalGUI", $server->A("xCalID") . ":" . (string) $event->uid, $calendar->formatDay($startTimestamp), $calendar->formatTime($startTimestamp), (string) $event->summary);
         $description = preg_replace("/\n|\r/", "<br>", (string) $event->description);
         $calendarEvent->summary($description);
         return $calendarEvent;
     }
 }
示例#5
0
 public static function getCalendarDetails($className, $classID, $T = null)
 {
     $K = new Kalender();
     if ($T == null) {
         $AC = anyC::get("Folge", "FolgeID", $classID);
         $AC->addJoinV3("Serie", "SerieID", "=", "SerieID");
         $AC->setFieldsV3(array("t1.name", "season", "episode", "t1.description", "airDate"));
         $T = $AC->getNextEntry();
     }
     $ex = explode("-", $T->A("airDate"));
     $day = mktime(8, 0, 0, $ex[1], $ex[2], $ex[0]);
     $KE = new KalenderEvent($className, $classID, $K->formatDay($day), "1800", $T->A("name") . " S" . ($T->A("season") < 10 ? "0" : "") . $T->A("season") . "E" . ($T->A("episode") < 10 ? "0" : "") . $T->A("episode"));
     #$KE->repeat(true, "yearly");
     $KE->endDay($K->formatDay($day));
     $KE->endTime("1845");
     $KE->icon("./fheME/FAdressen/birthday.png");
     $KE->summary($T->A("description"));
     return $KE;
 }
示例#6
0
 public static function toKalenderEvent($iCal, $ownerClass = "iCal", $ownerClassID = "-1")
 {
     $VC = new vcalendar();
     $VC->parse($iCal);
     $event = $VC->getComponent("vevent");
     $dayStart = $event->getProperty("DTSTART");
     $dayEnd = $event->getProperty("DTEND");
     $dayStartTS = strtotime(implode("", $dayStart));
     $dayEndTS = strtotime(implode("", $dayEnd));
     $KE = new KalenderEvent($ownerClass, $ownerClassID, Kalender::formatDay($dayStartTS), Kalender::formatTime($dayStartTS), $event->getProperty("SUMMARY"));
     $KE->UID($event->getProperty("UID"));
     $organizer = $event->getProperty("ORGANIZER", 0, true);
     $organizer["value"] = str_replace("MAILTO:", "", $organizer["value"]);
     $ON = $organizer["value"];
     if (isset($organizer["params"]["CN"])) {
         $ON = $organizer["params"]["CN"];
     }
     $OE = $organizer["value"];
     $KE->organizer($ON, $OE);
     if ($dayStart["hour"] . $dayStart["min"] == "" and $dayEnd["hour"] . $dayEnd["min"] == "") {
         $KE->allDay(true);
     } else {
         $KE->endDay(Kalender::formatDay($dayEndTS));
         $KE->endTime(Kalender::formatTime($dayEndTS));
     }
     return $KE;
 }
示例#7
0
 public static function getCalendarDetails($className, $classID, $T = null)
 {
     $K = new Kalender();
     if ($T == null) {
         $T = new Todo($classID);
     }
     $name = "";
     if ($T->A("TodoClass") == "Projekt" or $T->A("TodoClass") == "GRLBM") {
         $O = $T->getOwnerObject();
         $name = $O->getCalendarTitle();
     } else {
         $name = $T->A("TodoName");
     }
     $day = $T->A("TodoTillDay");
     if ($T->A("TodoFromDay") != "0") {
         $day = $T->A("TodoFromDay");
     }
     $time = $T->A("TodoTillTime");
     if ($T->A("TodoFromTime") != "0") {
         $time = $T->A("TodoFromTime");
     }
     $KE = new KalenderEvent($className, $classID, $K->formatDay($day), $K->formatTime($time), $name);
     #echo $T->A("TodoOrt");
     if ($T->A("TodoClass") == "WAdresse") {
         $O = $T->getOwnerObject();
         $KE->value("Kunde", $O->getHTMLFormattedAddress());
     }
     $KE->value("Typ", TodoGUI::types($T->A("TodoType")));
     $KE->value("Ort", $T->A("TodoLocation"));
     #$KE->value("Status", TodoGUI::getStatus($T->A("TodoStatus")));
     $KE->owner($T->A("TodoUserID"));
     if ($T->A("TodoClass") == "WAdresse") {
         $KE->value("Telefon", $O->A("tel"));
         $KE->value("Notiz", nl2br($O->A("bemerkung")));
         $KE->canNotify(true, $T->A("TodoNotified") == "1");
         if ($T->A("TodoType") == "1" and Session::isPluginLoaded("mAkquise")) {
             $B = new Button("Akquise", "./lightCRM/Akquise/callTel.png");
             #$B->doBefore(OnEvent::rme($T, "setStatus", array("'2'"), OnEvent::closePopup("mKalender").OnEvent::reload("Screen"))." %AFTER");
             $B->doBefore(OnEvent::closePopup("mKalender") . "contentManager.emptyFrame('contentScreen'); %AFTER");
             $B->loadFrame("contentLeft", "WAdresse", $T->A("TodoClassID"), 0, "mWAdresseGUI;Akquise:1;from:mKalender");
             #$B->popup("", "Akquise", "mAkquise", "-1", "showTelPopup", array($T->A("TodoClassID")), "", "{width: 950, top:20, hPosition:'center'}");
             $KE->addTopButton($B);
         }
     }
     $KE->allDay($T->A("TodoAllDay") == "1");
     if ($T->A("TodoClass") == "Projekt" and $O->A("ProjektKunde") != "0") {
         $Adresse = new Adresse($O->A("ProjektKunde"));
         $KE->value("Telefon", $Adresse->A("tel"));
     }
     if ($T->A("TodoClass") == "GRLBM") {
         $Auftrag = new Auftrag($O->A("AuftragID"));
         $Adresse = new Adresse($Auftrag->A("AdresseID"));
         $KE->value("Telefon", $Adresse->A("tel"));
     }
     $KE->status($T->A("TodoStatus"));
     $KE->endDay($K->formatDay($T->A("TodoTillDay")));
     $KE->endTime($K->formatTime($T->A("TodoTillTime")));
     $KE->icon(TodoGUI::typesImage($T->A("TodoType"), true));
     $KE->summary(nl2br($T->A("TodoDescription")));
     if ($T->A("TodoExceptionForID") != "0") {
         $KE->exception($T->A("TodoExceptionStarttime"), $T->A("TodoIsDeleted") == "1", $T->A("TodoExceptionForID"));
     }
     if ($T->A("TodoRemind") != "-1") {
         $KE->remind($T->A("TodoRemind") / 60, $T->A("TodoReminded"));
     }
     $editMethod = "editInPopup";
     if ($T->A("TodoOrganizer") != "") {
         $editMethod = null;
         $KE->organizer($T->A("TodoOrganizer"));
     }
     if (!$T->A("TodoDoneTime")) {
         $KE->editable($editMethod, "deleteFromCalendar");
     }
     if ($T->A("TodoOrganizer") == "" and !$T->A("TodoDoneTime")) {
         $KE->repeatable("editRepeatable");
     }
     $KE->location($T->A("TodoLocation"));
     $KE->repeat($T->A("TodoRepeat") != "", $T->A("TodoRepeat"), $T->A("TodoRepeatWeekOfMonth") * 1, $T->A("TodoRepeatDayOfWeek"), $T->A("TodoRepeatInterval"), $T->A("TodoRepeatUntil"));
     $KE->UID("TodoID" . $T->getID() . "@" . substr(Util::eK(), 0, 20));
     $KE->closeable($T->A("TodoDoneTime"), $T->A("TodoReport"));
     if (!$T->A("TodoDoneTime")) {
         $KE->canInvite();
     }
     return $KE;
 }