<?php use Sabre\VObject; class Sabre_CalDAV_Issue172Test extends PHPUnit_Framework_TestCase { // DateTimeZone() native name: America/Los_Angeles (GMT-8 in January) function testBuiltInTimezoneName() { $input = <<<HI BEGIN:VCALENDAR VERSION:2.0 BEGIN:VEVENT DTSTART;TZID=America/Los_Angeles:20120118T204500 DTEND;TZID=America/Los_Angeles:20120118T214500 END:VEVENT END:VCALENDAR HI; $validator = new Sabre_CalDAV_CalendarQueryValidator(); $filters = array( 'name' => 'VCALENDAR', 'comp-filters' => array( array( 'name' => 'VEVENT', 'comp-filters' => array(), 'prop-filters' => array(), 'is-not-defined' => false, 'time-range' => array( 'start' => new DateTime('2012-01-18 21:00:00 GMT-08:00'), 'end' => new DateTime('2012-01-18 21:00:00 GMT-08:00'), ), ), ), 'prop-filters' => array(), ); $input = VObject\Reader::read($input); $this->assertTrue($validator->validate($input,$filters)); } // Pacific Standard Time, translates to America/Los_Angeles (GMT-8 in January) function testOutlookTimezoneName() { $input = <<<HI BEGIN:VCALENDAR VERSION:2.0 BEGIN:VTIMEZONE TZID:Pacific Standard Time BEGIN:STANDARD DTSTART:16010101T030000 TZOFFSETFROM:+0200 TZOFFSETTO:+0100 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 END:STANDARD BEGIN:DAYLIGHT DTSTART:16010101T020000 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT DTSTART;TZID=Pacific Standard Time:20120113T100000 DTEND;TZID=Pacific Standard Time:20120113T110000 END:VEVENT END:VCALENDAR HI; $validator = new Sabre_CalDAV_CalendarQueryValidator(); $filters = array( 'name' => 'VCALENDAR', 'comp-filters' => array( array( 'name' => 'VEVENT', 'comp-filters' => array(), 'prop-filters' => array(), 'is-not-defined' => false, 'time-range' => array( 'start' => new DateTime('2012-01-13 10:30:00 GMT-08:00'), 'end' => new DateTime('2012-01-13 10:30:00 GMT-08:00'), ), ), ), 'prop-filters' => array(), ); $input = VObject\Reader::read($input); $this->assertTrue($validator->validate($input,$filters)); } // X-LIC-LOCATION, translates to America/Los_Angeles (GMT-8 in January) function testLibICalLocationName() { $input = <<<HI BEGIN:VCALENDAR VERSION:2.0 BEGIN:VTIMEZONE TZID:My own timezone name X-LIC-LOCATION:America/Los_Angeles BEGIN:STANDARD DTSTART:16010101T030000 TZOFFSETFROM:+0200 TZOFFSETTO:+0100 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10 END:STANDARD BEGIN:DAYLIGHT DTSTART:16010101T020000 TZOFFSETFROM:+0100 TZOFFSETTO:+0200 RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=3 END:DAYLIGHT END:VTIMEZONE BEGIN:VEVENT DTSTART;TZID=My own timezone name:20120113T100000 DTEND;TZID=My own timezone name:20120113T110000 END:VEVENT END:VCALENDAR HI; $validator = new Sabre_CalDAV_CalendarQueryValidator(); $filters = array( 'name' => 'VCALENDAR', 'comp-filters' => array( array( 'name' => 'VEVENT', 'comp-filters' => array(), 'prop-filters' => array(), 'is-not-defined' => false, 'time-range' => array( 'start' => new DateTime('2012-01-13 10:30:00 GMT-08:00'), 'end' => new DateTime('2012-01-13 10:30:00 GMT-08:00'), ), ), ), 'prop-filters' => array(), ); $input = VObject\Reader::read($input); $this->assertTrue($validator->validate($input,$filters)); } }