Esempio n. 1
0
 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;
 }
Esempio n. 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;
 }
Esempio n. 3
0
 /**
  * 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);
 }
Esempio n. 4
0
 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);
 }
Esempio n. 5
0
 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();
 }