/**
  * @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;
}
Exemple #3
0
<?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;
}
//------------------------------------------------------------