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; }
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; }
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()." < ".$startDay." OR ".$D->time()." > ".$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())." < ".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; }
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; } }
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; }
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; }
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; }