example1.php
7 years ago
example2.php
7 years ago
example3.php
7 years ago
example4.php
7 years ago
example5.php
7 years ago
example6.php
7 years ago
example7.php
7 years ago
example5.php
67 lines
| 1 | <?php |
| 2 | |
| 3 | /** |
| 4 | * example to show how to create an ICal calendar which |
| 5 | * provides a full timezone definition |
| 6 | */ |
| 7 | |
| 8 | // use composer autoloader |
| 9 | require_once __DIR__ . '/../vendor/autoload.php'; |
| 10 | |
| 11 | // set default timezone (PHP 5.4) |
| 12 | $tz = 'Europe/Berlin'; |
| 13 | $dtz = new \DateTimeZone($tz); |
| 14 | date_default_timezone_set($tz); |
| 15 | |
| 16 | // 1. Create new calendar |
| 17 | $vCalendar = new \Eluceo\iCal\Component\Calendar('www.example.com'); |
| 18 | |
| 19 | // 2. Create timezone rule object for Daylight Saving Time |
| 20 | $vTimezoneRuleDst = new \Eluceo\iCal\Component\TimezoneRule(\Eluceo\iCal\Component\TimezoneRule::TYPE_DAYLIGHT); |
| 21 | $vTimezoneRuleDst->setTzName('CEST'); |
| 22 | $vTimezoneRuleDst->setDtStart(new \DateTime('1981-03-29 02:00:00', $dtz)); |
| 23 | $vTimezoneRuleDst->setTzOffsetFrom('+0100'); |
| 24 | $vTimezoneRuleDst->setTzOffsetTo('+0200'); |
| 25 | $dstRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule(); |
| 26 | $dstRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY); |
| 27 | $dstRecurrenceRule->setByMonth(3); |
| 28 | $dstRecurrenceRule->setByDay('-1SU'); |
| 29 | $vTimezoneRuleDst->setRecurrenceRule($dstRecurrenceRule); |
| 30 | |
| 31 | // 3. Create timezone rule object for Standard Time |
| 32 | $vTimezoneRuleStd = new \Eluceo\iCal\Component\TimezoneRule(\Eluceo\iCal\Component\TimezoneRule::TYPE_STANDARD); |
| 33 | $vTimezoneRuleStd->setTzName('CET'); |
| 34 | $vTimezoneRuleStd->setDtStart(new \DateTime('1996-10-27 03:00:00', $dtz)); |
| 35 | $vTimezoneRuleStd->setTzOffsetFrom('+0200'); |
| 36 | $vTimezoneRuleStd->setTzOffsetTo('+0100'); |
| 37 | $stdRecurrenceRule = new \Eluceo\iCal\Property\Event\RecurrenceRule(); |
| 38 | $stdRecurrenceRule->setFreq(\Eluceo\iCal\Property\Event\RecurrenceRule::FREQ_YEARLY); |
| 39 | $stdRecurrenceRule->setByMonth(10); |
| 40 | $stdRecurrenceRule->setByDay('-1SU'); |
| 41 | $vTimezoneRuleStd->setRecurrenceRule($stdRecurrenceRule); |
| 42 | |
| 43 | // 4. Create timezone definition and add rules |
| 44 | $vTimezone = new \Eluceo\iCal\Component\Timezone($tz); |
| 45 | $vTimezone->addComponent($vTimezoneRuleDst); |
| 46 | $vTimezone->addComponent($vTimezoneRuleStd); |
| 47 | $vCalendar->setTimezone($vTimezone); |
| 48 | |
| 49 | // 5. Create an event |
| 50 | $vEvent = new \Eluceo\iCal\Component\Event(); |
| 51 | $vEvent->setDtStart(new \DateTime('2012-12-24', $dtz)); |
| 52 | $vEvent->setDtEnd(new \DateTime('2012-12-24', $dtz)); |
| 53 | $vEvent->setSummary('Summary with some german "umlauten" and a backslash \\: Kinder mögen Äpfel pflücken.'); |
| 54 | |
| 55 | // 6. Adding Timezone |
| 56 | $vEvent->setUseTimezone(true); |
| 57 | |
| 58 | // 7. Add event to calendar |
| 59 | $vCalendar->addComponent($vEvent); |
| 60 | |
| 61 | // 8. Set headers |
| 62 | header('Content-Type: text/calendar; charset=utf-8'); |
| 63 | header('Content-Disposition: attachment; filename="cal.ics"'); |
| 64 | |
| 65 | // 9. Output |
| 66 | echo $vCalendar->render(); |
| 67 |