public static function getCalendarData($firstDay, $lastDay) { $K = new Kalender(); $AC = new anyC(); $AC->setCollectionOf("Adresse"); $AC->addAssocV3("type", "=", "default"); $AC->addAssocV3("AuftragID", "=", "-1"); $AC->addAssocV3("geb", "!=", "0"); while ($t = $AC->getNextEntry()) { $K->addEvent(self::getCalendarDetails("mFAdresseGUI", $t->getID(), $t)); } return $K; }
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; }
/** * Gibt die xCal-Repräsentation dieses Objektes zurück. * @return DOMElement */ public function toXCal() { $xCalData = new xCalDataEvent(); #$dateTime = new DateTime(); $xCalData->setUid($this->UID); $xCalData->setSummary($this->title); // TODO: Wiederholende Termine über when holen --> Wiederholungen über xCal angeben // Parameter vermutlich Timestamp /*if (is_null($this->time)) { $dtStart = $this->day; // TODO: Testen ob Timestamp oder nicht $xCalData->setDtStartValue(xCalDataEvent::DTVALUE_DATE); $xCalData->setDtStart(gmdate("Ymd", $dtStart)); } else {*/ $dtStart = Kalender::parseDay($this->day) + Kalender::parseTime($this->time) - 60; #echo date("dmY His", $dtStart).": ".$this->title."<br />"; // TODO: Test des Formats // parseTime parseDay Kalender-Klasse $xCalData->setDtStartValue(xCalDataEvent::DTVALUE_DATETIME); $xCalData->setDtStart(gmdate("Ymd", $dtStart) . "T" . gmdate("His", $dtStart) . "Z"); #} /*if (is_null($this->endTime)) { $dtEnd = $this->endDay; $xCalData->setDtEnd(gmdate("Ymd", $dtEnd)); $xCalData->setDtEndValue(xCalDataEvent::DTVALUE_DATE);*/ #} else { $dtEnd = Kalender::parseDay($this->endDay) + Kalender::parseTime($this->endTime) - 60; $xCalData->setDtEnd(gmdate("Ymd", $dtEnd) . "T" . gmdate("His", $dtEnd) . "Z"); $xCalData->setDtEndValue(xCalDataEvent::DTVALUE_DATETIME); #} #$dateTime->setTimestamp($dtStart); return xCalUtil::getXCalEventByXCalDataEvent($xCalData); }
public function getData($firstDay, $lastDay, $UserID = null, $skip = array()) { if ($UserID === null) { $UserID = Session::currentUser()->getID(); } Registry::reset("Kalender"); $K = new Kalender(); $K->timeRange($firstDay, $lastDay); while ($return = Registry::callNext("Kalender", "events", array($firstDay, $lastDay, $UserID), $skip)) { $K->merge($return); } Registry::reset("Kalender"); while ($return = Registry::callNext("Kalender", "holidays", array($firstDay, $lastDay, $UserID), $skip)) { $K->merge($return); } $K->exceptions(); return $K; }
public function merge(Kalender $K) { $this->eventsList = array_merge($this->eventsList, $K->getEventsList()); $this->holidaysList = array_merge($this->holidaysList, $K->getHolidaysList()); }
function edit() { $GLOBALS['scripts'] .= Html::script('', array('src' => '/' . INSTALL_PATH . '/Libraries/ContextMenu/ContextMenu.js')); $GLOBALS['scripts'] .= Html::script(' var head = document.getElementsByTagName("head")[0]; var style = document.createElement("link"); style.rel = "stylesheet"; style.type="text/css"; style.href = "/' . INSTALL_PATH . '/Libraries/ContextMenu/ContextMenu.css"; head.appendChild(style); function ctx_new_entry (date) { window.location.href="' . SELF . '?new="+date; } function ctx_edit(id) { window.location.href="' . SELF . '?edit="+id; } '); //$GLOBALS['other_css'] .= Html::stylesheet('/'.INSTALL_PATH.'/Libraries/ContextMenu/ContextMenu.css'); $this->scaff->edit_enabled = true; $this->scaff->order_dir = 'DESC'; if ($_POST['edit_id']) { $this->scaff->db_insert(); } if ($_GET['edit']) { $this->return .= Html::div($this->scaff->make_form($_GET['edit']), array('style' => 'margin-top:10px')); } else { /* $this->scaff->results_per_page = 30; $results_table = $this->scaff->make_table('',INSTALL_PATH.'/Classes/Admin/Templates/TermineListe.template.html'); $nav = $this->scaff->list_navigation(); $this->return .= Html::div( $results_table.$nav,array('style'=>'margin-top:10px'));*/ if (!class_exists('Kalender')) { include_once 'Kalender.php'; } $kalender = new Kalender(); $kalender->class_init($this->system); $kalender->scaff->edit_enabled = true; $kalender->template = INSTALL_PATH . '/Module/Kalender/Templates/KalenderAdminListe.template.html'; $this->return .= $kalender->show(); $context_menu = "var ctx_menu = {}\n"; foreach ($kalender->cal->cal_ids as $cal_id) { $new_entry_ctx = '["Neuer Eintrag",function () {ctx_new_entry("' . $cal_id . '")},null,"' . '/' . INSTALL_PATH . '/Libraries/Icons/16x16/appointment.png' . '"]'; $context_menu .= "ctx_menu['{$cal_id}'] = [{$new_entry_ctx}];\n"; } foreach ($kalender->cal->cal_links as $key => $link) { $context_menu .= "ctx_menu['{$key}'] = [['Neuer Eintrag',function () {ctx_new_entry(\"" . $link[0][2] . "\")},null,'" . '/' . INSTALL_PATH . '/Libraries/Icons/16x16/appointment.png' . "']];\n"; foreach ($link as $entry) { $context_menu .= 'ctx_menu["' . $key . '"].push(["Bearbeiten ' . $entry[1] . '",function(){ctx_edit(' . $entry[0] . ')},null,"' . '/' . INSTALL_PATH . '/Libraries/Icons/16x16/today.png' . '"]);' . "\n"; } } $this->return .= Html::script($context_menu); } }
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 getCalendarData($firstDay, $lastDay) { $K = new Kalender(); $AC = anyC::get("Folge"); $AC->addAssocV3("UNIX_TIMESTAMP(STR_TO_DATE(airDate, '%Y-%m-%d')) + 120", ">=", $firstDay); $AC->addAssocV3("UNIX_TIMESTAMP(STR_TO_DATE(airDate, '%Y-%m-%d'))", "<=", $lastDay); $AC->addJoinV3("Serie", "SerieID", "=", "SerieID"); #$AC->addAssocV3("type", "=", "default"); #$AC->addAssocV3("AuftragID", "=", "-1"); #$AC->addAssocV3("geb", "!=", "0"); while ($t = $AC->getNextEntry()) { $K->addEvent(self::getCalendarDetails("mSerieGUI", $t->getID(), $t)); } return $K; }
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 function reminderList() { #$T = new HTMLTable(2); #$T->setTableStyle("width:100%;"); #$T->setColWidth(1, "30%"); $B = $this->reminderCheck(); $R = array(); $Kal = new Kalender(); foreach ($B as $E) { switch (get_class($E)) { case "KalenderEvent": $id = str_replace("@", "", $E->UID()); $BD = new Button("Erledigt", "check", "iconic"); $BD->style("color:#333;"); $BD->doBefore("event.stopPropagation(); %AFTER"); $BD->rmePCR("Util", "-1", "reminderDone", array("'KalenderEvent'", "'" . $E->UID() . "'"), "function(){ \$j('#bottom').html(''); \$j('#{$id}').hide(); if(!\$j('.event:visible').length) window.close(); }"); $R[] = array($id, "<div class=\"event\" id=\"{$id}\" style=\"padding:5px;cursor:pointer;\" onclick=\"\$j('.confirm').removeClass('confirm'); \$j(this).addClass('confirm');\$j('#bottom').html('" . str_replace("\n", "", $E->summary() != "" ? addslashes($E->summary()) : "Keine Beschreibung") . "');\" onmouseover=\"\$j(this).addClass('highlight');\" onmouseout=\"\$j(this).removeClass('highlight');\">\n\t\t\t\t\t\t\t<div style=\"width:15%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\tKalender\n\t\t\t\t\t\t\t</div><div style=\"width:45%;display:inline-block;overflow:hidden;vertical-align:top;\">\n\t\t\t\t\t\t\t\t" . $E->title() . "\n\t\t\t\t\t\t\t</div><div style=\"width:33%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\t" . Util::CLTimeParser($Kal->parseTime($E->getTime())) . " - " . Util::CLTimeParser($Kal->parseTime($E->getEndTime())) . " Uhr" . "\n\t\t\t\t\t\t\t</div><div style=\"width:7%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\t{$BD}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>"); break; case "Aufgabe": $id = "Aufgabe_" . $E->getID(); $BD = new Button("Erledigt", "check", "iconic"); $BD->style("color:#333;"); $BD->doBefore("event.stopPropagation(); %AFTER"); $BD->rmePCR("Util", "-1", "reminderDone", array("'Aufgabe'", "'" . $E->getID() . "'"), "function(){ \$j('#bottom').html(''); \$j('#{$id}').hide(); if(!\$j('.event:visible').length) window.close(); }"); $R[] = array($id, "<div class=\"event\" id=\"{$id}\" style=\"padding:5px;cursor:pointer;\" onclick=\"\$j('.confirm').removeClass('confirm'); \$j(this).addClass('confirm');\$j('#bottom').html('" . str_replace("\n", "", addslashes(nl2br($E->A("AufgabeText")))) . "');\" onmouseover=\"\$j(this).addClass('highlight');\" onmouseout=\"\$j(this).removeClass('highlight');\">\n\t\t\t\t\t\t\t<div style=\"width:15%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\tAufgabe\n\t\t\t\t\t\t\t</div><div style=\"width:45%;display:inline-block;overflow:hidden;vertical-align:top;\">\n\t\t\t\t\t\t\t\t" . mb_substr($E->A("AufgabeText"), 0, 30) . "\n\t\t\t\t\t\t\t</div><div style=\"width:33%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\t" . Util::CLTimeParser($E->A("AufgabeUhrzeitVon")) . " Uhr" . "\n\t\t\t\t\t\t\t</div><div style=\"width:7%;display:inline-block;vertical-align:top;\">\n\t\t\t\t\t\t\t\t{$BD}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>"); /*$id = str_replace("@", "", $E->UID()); $BD = new Button("Erledigt", "check", "iconic"); $BD->style("color:#333;"); $BD->doBefore("event.stopPropagation(); %AFTER"); $BD->rmePCR("Util", "-1", "reminderDone", array("'KalenderEvent'", "'".$E->UID()."'"), "function(){ \$j('#bottom').html(''); \$j('#$id').hide(); if(!\$j('.event:visible').length) window.close(); }"); $R[] = array( $id, "<div class=\"event\" id=\"$id\" style=\"padding:5px;cursor:pointer;\" onclick=\"\$j('.confirm').removeClass('confirm'); \$j(this).addClass('confirm');\$j('#bottom').html('".str_replace("\n", "", addslashes($E->summary()))."');\" onmouseover=\"\$j(this).addClass('highlight');\" onmouseout=\"\$j(this).removeClass('highlight');\"> <div style=\"width:15%;display:inline-block;vertical-align:top;\"> Kalender </div><div style=\"width:45%;display:inline-block;overflow:hidden;vertical-align:top;\"> ".$E->title()." </div><div style=\"width:33%;display:inline-block;vertical-align:top;\"> ".Util::CLTimeParser($Kal->parseTime($E->getTime()))." - ".Util::CLTimeParser($Kal->parseTime($E->getEndTime()))." Uhr"." </div><div style=\"width:7%;display:inline-block;vertical-align:top;\"> $BD </div> </div>" );*/ break; } } echo json_encode($R, JSON_UNESCAPED_UNICODE); }
public function getPDFContent($save = false) { if ($this->userdata == null or count($this->userdata) == 0) { die(Util::getBasicHTMLError("Bitte wählen Sie Monat und Jahr aus", "Fehler")); } self::$pdf->SetAutoPageBreak(false); $this->AddPage(); $D = new Datum(mktime(0, 0, 1, $this->userdata["lightCRMKalBerichtMonth"], 1, $this->userdata["lightCRMKalBerichtYear"])); $day = clone $D; $D->setToMonthLast(); $lastDay = $D; $Kalender = new mKalenderGUI(); $K = $Kalender->getData($day->time(), $lastDay->time()); $i = 0; while ($day->time() <= $lastDay->time()) { $events = $K->getEventsOnDay(date("dmY", $day->time())); if (count($events) == 0) { $day->addDay(); continue; } if (self::$pdf->getY() > $this->pageBreakMargin - 15) { $this->AddPage(); $i = 0; } if ($i > 0) { self::$pdf->ln(10); } self::$pdf->SetFont($this->defaultFont, "B", $this->defaultFontSize); self::$pdf->Cell(0, $this->defaultCellHeight, "Termine am " . Util::CLWeekdayName(date("w", $day->time())) . ", " . Util::CLFormatDate($day->time()), 0, 1); self::$pdf->Line(10, self::$pdf->GetY(), 200, self::$pdf->GetY()); self::$pdf->SetFont($this->defaultFont, $this->defaultFontStyle, $this->defaultFontSize); foreach ($events as $time) { foreach ($time as $event) { if (self::$pdf->getY() > $this->pageBreakMargin) { $this->AddPage(); $i = 0; if ($this->between) { self::$pdf->SetFont($this->defaultFont, "B", $this->defaultFontSize); self::$pdf->Cell(0, $this->defaultCellHeight, "Termine am " . Util::CLWeekdayName(date("w", $day->time())) . ", " . Util::CLFormatDate($day->time()), 0, 1); self::$pdf->Line(10, self::$pdf->GetY(), 200, self::$pdf->GetY()); self::$pdf->SetFont($this->defaultFont, $this->defaultFontStyle, $this->defaultFontSize); } } $this->between = true; self::$pdf->Cell8(isset($this->widths["time"]) ? $this->widths["time"] : 20, $this->defaultCellHeight, Util::CLTimeParser(Kalender::parseTime($event->getTime())) . " - " . Util::CLTimeParser(Kalender::parseTime($event->getEndTime())), 0, 0); self::$pdf->Cell8(isset($this->widths["title"]) ? $this->widths["title"] : 20, $this->defaultCellHeight, $event->title(), 0, 0); self::$pdf->Cell8(isset($this->widths["location"]) ? $this->widths["location"] : 20, $this->defaultCellHeight, $event->location(), 0, 1); $summary = $event->summary(); if ($summary != "") { self::$pdf->setTextColor(100, 100, 100); self::$pdf->SetFont($this->defaultFont, $this->defaultFontStyle, $this->defaultFontSize - 1); self::$pdf->MultiCell8(isset($this->widths["summary"]) ? $this->widths["summary"] : 20, $this->defaultCellHeight - 1, trim(str_replace("<br />", "", $summary)), 0, 1); self::$pdf->setTextColor(0, 0, 0); self::$pdf->SetFont($this->defaultFont, $this->defaultFontStyle, $this->defaultFontSize); } self::$pdf->SetDrawColor(150, 150, 150); self::$pdf->Line(10, self::$pdf->GetY(), 200, self::$pdf->GetY()); self::$pdf->SetDrawColor(0, 0, 0); self::$pdf->ln(5); } } $this->between = false; $day->addDay(); $i++; } $tmpfname = Util::getTempFilename("Bericht"); self::$pdf->Output($tmpfname, $save ? "F" : "I"); if ($save) { return $tmpfname; } }
public static function newFromKalenderEvent(KalenderEvent $KE) { $T = new Todo(-1); $T->loadMeOrEmpty(); $T->changeA("TodoFromDay", Kalender::parseDay($KE->getDay())); $T->changeA("TodoFromTime", Kalender::parseTime($KE->getTime())); $T->changeA("TodoTillDay", Kalender::parseDay($KE->getEndDay())); $T->changeA("TodoTillTime", Kalender::parseTime($KE->getEndTime())); $T->changeA("TodoType", "2"); $T->changeA("TodoName", $KE->title()); $T->changeA("TodoClass", $KE->ownerClass()); $T->changeA("TodoClassID", $KE->ownerClassID()); $T->changeA("TodoUserID", Session::currentUser()->getID()); $T->changeA("TodoOrganizer", $KE->organizer()); return $T->newMe(); }
public static function getCalendarData($firstDay, $lastDay, $UserID = null) { if ($UserID === null) { $UserID = Session::currentUser()->getID(); } #echo $UserID; $K = new Kalender(); #$include = array(); //TERMINE IN DIESEM MONAT $AC = new anyC(); $AC->setCollectionOf("Todo"); $AC->addAssocV3("TodoTillDay", ">=", $firstDay, "AND", "1"); $AC->addAssocV3("TodoTillDay", "<=", $lastDay, "AND", "1"); $AC->addAssocV3("TodoRepeat", "=", "", "AND", "1"); if ($UserID != 0) { $AC->addAssocV3("TodoUserID", "=", $UserID, "AND", "2"); } else { $AC->addAssocV3("TodoUserID", ">", "0", "AND", "2"); } $AC->addAssocV3("TodoUserID", "=", "-1", "OR", "2"); /*$ACS = anyC::get("Userdata", "name", "shareCalendarTo".($UserID != 0 ? $UserID : "0")); //disabled for all users at the moment! while($Share = $ACS->getNextEntry()){ $include[$Share->A("UserID")] = mUserdata::getUDValueS("showCalendarOf".$Share->A("UserID"), "1"); if($include[$Share->A("UserID")] == "1") $AC->addAssocV3("TodoUserID", "=", $Share->A("UserID"), "OR", "2"); }*/ $AC->addOrderV3("TodoTillTime"); while ($t = $AC->getNextEntry()) { $K->addEvent(self::getCalendarDetails("mTodoGUI", $t->getID(), $t)); } //TERMINE ÜBER DIESEN MONAT HINAUS $AC = new anyC(); $AC->setCollectionOf("Todo"); $AC->addAssocV3("TodoFromDay", "<=", $lastDay, "AND", "1"); $AC->addAssocV3("TodoTillDay", ">", $lastDay, "AND", "1"); $AC->addAssocV3("TodoRepeat", "=", "", "AND", "1"); if ($UserID != 0) { $AC->addAssocV3("TodoUserID", "=", $UserID, "AND", "2"); } else { $AC->addAssocV3("TodoUserID", ">", "0", "AND", "2"); } $AC->addAssocV3("TodoUserID", "=", "-1", "OR", "2"); #$ACS->resetPointer(); #while($Share = $ACS->getNextEntry()){ # if($include[$Share->A("UserID")] == "1") # $AC->addAssocV3("TodoUserID", "=", $Share->A("UserID"), "OR", "2"); #} $AC->addOrderV3("TodoTillTime"); while ($t = $AC->getNextEntry()) { $K->addEvent(self::getCalendarDetails("mTodoGUI", $t->getID(), $t)); } //WIEDERHOLTE TERMINE $AC = new anyC(); $AC->setCollectionOf("Todo"); $AC->addAssocV3("TodoFromDay", "<=", $lastDay, "AND", "1"); $AC->addAssocV3("TodoRepeat", "!=", "", "AND", "1"); /*$AC->addAssocV3("MONTH(FROM_UNIXTIME(TodoFromDay))","=", date("m", $lastDay), "AND", "1"); if(date("m", $firstDay) != date("m", $lastDay)) $AC->addAssocV3("MONTH(FROM_UNIXTIME(TodoFromDay))","=", date("m", $firstDay), "OR", "1"); $AC->addAssocV3("TodoRepeat", "!=", "", "AND", "3");*/ if ($UserID != 0) { $AC->addAssocV3("TodoUserID", "=", $UserID, "AND", "2"); } else { $AC->addAssocV3("TodoUserID", ">", "0", "AND", "2"); } $AC->addAssocV3("TodoUserID", "=", "-1", "OR", "2"); $AC->addAssocV3("TodoRepeatUntil", "=", "0", "AND", "3"); $AC->addAssocV3("TodoRepeatUntil", ">=", $firstDay, "OR", "3"); #$ACS->resetPointer(); #while($Share = $ACS->getNextEntry()){ # if($include[$Share->A("UserID")] == "1") # $AC->addAssocV3("TodoUserID", "=", $Share->A("UserID"), "OR", "2"); #} $AC->addOrderV3("TodoTillTime"); while ($t = $AC->getNextEntry()) { $K->addEvent(self::getCalendarDetails("mTodoGUI", $t->getID(), $t)); } return $K; }