コード例 #1
0
ファイル: mFAdresseGUI.class.php プロジェクト: nemiah/fheME
 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;
 }
コード例 #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
ファイル: KalenderEvent.class.php プロジェクト: nemiah/fheME
 /**
  * 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);
 }
コード例 #4
0
ファイル: mKalender.class.php プロジェクト: nemiah/fheME
 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;
 }
コード例 #5
0
ファイル: Kalender.class.php プロジェクト: nemiah/fheME
 public function merge(Kalender $K)
 {
     $this->eventsList = array_merge($this->eventsList, $K->getEventsList());
     $this->holidaysList = array_merge($this->holidaysList, $K->getHolidaysList());
 }
コード例 #6
0
    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);
        }
    }
コード例 #7
0
ファイル: mxCalGUI.class.php プロジェクト: nemiah/fheME
 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;
     }
 }
コード例 #8
0
ファイル: mSerieGUI.class.php プロジェクト: nemiah/trinityDB
 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;
 }
コード例 #9
0
ファイル: iCalUtil.class.php プロジェクト: nemiah/trinityDB
 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;
 }
コード例 #10
0
ファイル: UtilGUI.class.php プロジェクト: nemiah/poolPi
 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);
 }
コード例 #11
0
 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;
     }
 }
コード例 #12
0
ファイル: Todo.class.php プロジェクト: nemiah/fheME
 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();
 }
コード例 #13
0
ファイル: mTodoGUI.class.php プロジェクト: nemiah/fheME
 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;
 }