/** * @coversNothing */ public function testExample3() { $timeZone = new \DateTimeZone('Europe/Berlin'); // 1. Create new calendar $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com'); // 2. Create an event $vEvent = new \Eluceo\iCal\Component\Event('123456'); $vEvent->setDtStart(new \DateTime('2012-12-31', $timeZone)); $vEvent->setDtEnd(new \DateTime('2012-12-31', $timeZone)); $vEvent->setNoTime(true); $vEvent->setIsPrivate(true); $vEvent->setSummary('New Year’s Eve'); // Set recurrence rule $recurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule(); $recurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY); $recurrenceRule->setInterval(1); $vEvent->setRecurrenceRule($recurrenceRule); // Adding Timezone (optional) $vEvent->setUseTimezone(true); // 3. Add event to calendar $vCalendar->addComponent($vEvent); $lines = array('/BEGIN:VCALENDAR/', '/VERSION:2\\.0/', '/PRODID:www\\.example\\.com/', '/X-PUBLISHED-TTL:P1W/', '/BEGIN:VEVENT/', '/UID:123456/', '/DTSTART;TZID=Europe\\/Berlin;VALUE=DATE:20121231/', '/SEQUENCE:0/', '/TRANSP:OPAQUE/', '/DTEND;TZID=Europe\\/Berlin;VALUE=DATE:20121231/', '/SUMMARY:New Year’s Eve/', '/CLASS:PRIVATE/', '/RRULE:FREQ=YEARLY;INTERVAL=1/', '/X-MICROSOFT-CDO-ALLDAYEVENT:TRUE/', '/DTSTAMP:20\\d{6}T\\d{6}Z/', '/END:VEVENT/', '/END:VCALENDAR/'); foreach (explode("\n", $vCalendar->render()) as $key => $line) { $this->assertTrue(isset($lines[$key]), 'Too many lines... ' . $line); $this->assertRegExp($lines[$key], $line); } }
function event_to_ical($event) { $vCalendar = new \Eluceo\iCal\Component\Calendar('Calendar API V1'); $vEvent = new \Eluceo\iCal\Component\Event(); $vEvent->setDtStart($event->start); $vEvent->setDtEnd($event->start); $vEvent->setNoTime(true); $vEvent->setSummary($event->summary); return $vEvent; }
<?php // require files require_once '../src/Eluceo/iCal/Component.php'; require_once '../src/Eluceo/iCal/PropertyBag.php'; require_once '../src/Eluceo/iCal/Property.php'; require_once '../src/Eluceo/iCal/Component/Calendar.php'; require_once '../src/Eluceo/iCal/Component/Event.php'; // set default timezone (PHP 5.4) date_default_timezone_set('Europe/Berlin'); // 1. Create new calendar $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com'); // 2. Create an event $vEvent = new \Eluceo\iCal\Component\Event(); $vEvent->setDtStart(new \DateTime('2012-12-24')); $vEvent->setDtEnd(new \DateTime('2012-12-24')); $vEvent->setNoTime(true); $vEvent->setSummary('Christmas'); // Adding Timezone (optional) $vEvent->setUseTimezone(true); // 3. Add event to calendar $vCalendar->addEvent($vEvent); // 4. Set headers header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="cal.ics"'); // 5. Output echo $vCalendar->render();
function makeICalendar($row) { $vEvent = new \Eluceo\iCal\Component\Event(); $vEvent->setDtStart(new \DateTime($row['startDate'])); $vEvent->setDtEnd(new \DateTime($row['endDate'])); $vEvent->setNoTime(false); $vEvent->setSummary($row['name'] . " 2016 New Years Levee"); $vEvent->setLocation($row['location_name'] . "\n" . $row['location_address'], $row['location_name'], $row['latitude'] . "," . $row['longitude']); $vEvent->setUseTimezone(true); return $vEvent; }
foreach ($modinfo->cms as $mod) { //if completion is not enabled, then skip it if (!$mod->completion || !$mod->completionexpected) { continue; } //if hidden then skip it if (!$mod->visible) { continue; } $dt = new DateTime(); $dt->setTimestamp($mod->completionexpected); //create an event $ievent = new \Eluceo\iCal\Component\Event(); $ievent->setDtStart($dt); $ievent->setDtEnd($dt); $ievent->setNoTime(true); $ievent->setSummary($mod->name); //add Timezone (optional) $ievent->setUseTimezone(true); //add event to calendar $ical->addComponent($ievent); } //set headers $filename = preg_replace('/[^A-Za-z0-9_\\-]/', '_', $course->shortname) . '_Calendar.ics'; header('Content-Type: text/calendar; charset=utf-8'); header('Content-Disposition: attachment; filename="' . $filename . '"'); //output echo $ical->render(); exit; } //------------------------------------------------------------