public function hasMultiDayEvents($firstDay, $lastDay) { #echo date("dmY", $firstDay).";".$lastDay; $return = 0; $counted = array(); $stack = array(); foreach ($this->events as $D) { foreach ($D as $T) { foreach ($T as $E) { if ($E->getDay() != $E->getEndDay() or $E->allDay()) { # AND !isset($counted[$E->ownerClass().$E->ownerClassID()])){ $stackCalcFirst = Kalender::parseDay($E->currentWhen()->day); #$E->getDay() $stackCalcLast = Kalender::parseDay($E->currentWhen()->endDay); if ($stackCalcFirst < $firstDay and $stackCalcLast < $firstDay) { continue; } #echo $E->title()." (".$E->ownerClassID()."): ".$E->getDay()."/".$E->currentWhen()->day."<br />"; #if($stackCalcFirst > $lastDay) # continue; #$return++; #$counted[$E->ownerClass().$E->ownerClassID()] = true; #echo "::".$E->currentWhen()->day."<br />"; if ($stackCalcLast > $lastDay) { $stackCalcLast = $lastDay; } if ($stackCalcFirst < $firstDay) { $stackCalcFirst = $firstDay; } $D = new Datum($stackCalcFirst); while ($D->time() <= $stackCalcLast) { if (!isset($stack[date("Ymd", $D->time())])) { $stack[date("Ymd", $D->time())] = array(); } if (in_array($E->ownerClass() . $E->ownerClassID(), $stack[date("Ymd", $D->time())])) { $D->addDay(); continue; } $stack[date("Ymd", $D->time())][] = $E->ownerClass() . $E->ownerClassID(); $D->addDay(); } } } } } $max = 0; foreach ($stack as $ev) { if (count($ev) > $max) { $max = count($ev); } } #echo "<pre style=\"font-size:10px;\">"; #print_r($stack); #echo "</pre>"; return $max; }
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 sendEmail($subject, $body, $recipientID, $parameters) { $emailData = $this->getEMailData($parameters); $parameters = explode("::", $parameters); $action = $parameters[0]; $className = $parameters[1]; $classID = $parameters[2]; $time = $parameters[3]; $C = new $className($classID); $data = $C->getCalendarDetails($className, $classID); $adresse = $data->getAdresse(); $fromName = Session::currentUser()->A("name"); $from = Session::currentUser()->A("UserEmail"); $mail = new htmlMimeMail5(); $mail->setFrom(utf8_decode($fromName . " <" . $from . ">")); if (!ini_get('safe_mode')) { $mail->setReturnPath($from); } $mail->setSubject(utf8_decode($subject)); /*if($action == "reply"){ $ics = "BEGIN:VCALENDAR PRODID:-//lightCRM Kalender VERSION:2.0 METHOD:REPLY BEGIN:VEVENT CREATED:20121130T004454Z LAST-MODIFIED:20121201T143509Z DTSTAMP:20121201T143509Z UID:7715ie5i20hvm0b71p18vhgj70@google.com SUMMARY:Test STATUS:CONFIRMED ORGANIZER;CN=rainer.furtmeier@googlemail.com:mailto:rainer.furtmeier@googl email.com ATTENDEE;CN=nemi@2sins.de;PARTSTAT=ACCEPTED;CUTYPE=INDIVIDUAL;ROLE=REQ-PAR TICIPANT;X-NUM-GUESTS=0:mailto:nemi@2sins.de DTSTART:20121206T123000Z DTEND:20121206T133000Z DESCRIPTION: SEQUENCE:5 TRANSP:OPAQUE END:VEVENT END:VCALENDAR"; }*/ if ($action == "notification") { $ics = "BEGIN:VCALENDAR\nPRODID:-//lightCRM Kalender\nVERSION:2.0\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:Europe/Berlin\nX-LIC-LOCATION:Europe/Berlin\nBEGIN:DAYLIGHT\nTZOFFSETFROM:+0100\nTZOFFSETTO:+0200\nTZNAME:CEST\nDTSTART:19700329T020000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3\nEND:DAYLIGHT\nBEGIN:STANDARD\nTZOFFSETFROM:+0200\nTZOFFSETTO:+0100\nTZNAME:CET\nDTSTART:19701025T030000\nRRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nLAST-MODIFIED:20120629T094018Z\nDTSTAMP:" . date("Ymd") . "T" . date("His") . "\nUID:" . $data->UID() . "\nSUMMARY:" . $data->summary() . "\nORGANIZER;CN=\"{$fromName}\":MAILTO:{$from}\nDTSTART;TZID=Europe/Berlin:" . date("Ymd", Kalender::parseDay($data->getDay())) . "T" . $data->getTime() . "00\nDTEND;TZID=Europe/Berlin:" . date("Ymd", Kalender::parseDay($data->getEndDay())) . "T" . $data->getEndTime() . "00\nEND:VEVENT\nEND:VCALENDAR"; } $mail->addAttachment(new stringAttachment($ics, "event.ics", 'application/ics')); $adresse->replaceByAnsprechpartner($recipientID); $body = str_replace("{Anrede}", Util::formatAnrede($_SESSION["S"]->getUserLanguage(), $adresse), $body); if ($action == "notification") { $mail->setCalendar($ics, "REQUEST"); } #if($action == "reply") # $mail->setCalendar($ics, "REPLY"); $mail->setTextCharset("UTF-8"); $mail->setCalendarCharset("UTF-8"); $mail->setText($body); #print_r($mail->getRFC822(array("*****@*****.**"))); #die(); $mail->send(array($emailData["recipients"][$recipientID][1])); $C->setNotified($className, $classID); }
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(); }