diff --git a/inc/Principal.php b/inc/Principal.php index 65834f4d..3f7593e3 100644 --- a/inc/Principal.php +++ b/inc/Principal.php @@ -97,7 +97,10 @@ class Principal { */ private $cacheNs; private $cacheKey; - + + protected $collections; + protected $dead_properties; + protected $default_calendar; function __construct( $type, $value, $use_cache=true ) { global $c, $session; @@ -364,6 +367,77 @@ class Principal { } + /** + * Ensure the principal's dead properties are loaded + */ + protected function FetchDeadProperties() { + if ( isset($this->dead_properties) ) return; + + $this->dead_properties = array(); + $qry = new AwlQuery('SELECT property_name, property_value FROM property WHERE dav_name= :dav_name', array(':dav_name' => $this->dav_name()) ); + if ( $qry->Exec('Principal') ) { + while ( $property = $qry->Fetch() ) { + $this->dead_properties[$property->property_name] = $property->property_value; + } + } + } + + + /** + * Fetch the list of collections for this principal + * @return string The internal dav_name for the home_calendar, or null if there is none + */ + protected function FetchCollections() { + if ( isset($this->collections) ) return; + + $this->collections = array(); + $qry = new AwlQuery('SELECT * FROM collection WHERE user_no= :user_no', array(':user_no' => $this->user_no()) ); + if ( $qry->Exec('Principal') ) { + while ( $collection = $qry->Fetch() ) { + $this->collections[$collection->dav_name] = $collection; + } + } + } + + + /** + * Return the default calendar for this principal + * @return string The internal dav_name for the home_calendar, or false if there is none + */ + function default_calendar() { + global $c; + + if ( !isset($this->default_calendar) ) { + $this->default_calendar = false; + if ( !isset($this->dead_properties) ) $this->FetchDeadProperties(); + if ( isset($this->dead_properties['urn:ietf:params:xml:ns:caldav:schedule-default-calendar-URL']) ) { + $this->default_calendar = $this->dead_properties['urn:ietf:params:xml:ns:caldav:schedule-default-calendar-URL']; + } + else { + if ( !isset($this->collections) ) $this->FetchCollections(); + $dav_name = $this->dav_name().$c->home_calendar_name.'/'; + if ( isset($this->collections[$dav_name]) && ($this->collections[$dav_name]->is_calendar == 't') ) { + $this->default_calendar = $dav_name; + } + else { + $dav_name = $this->dav_name().'home/'; + if ( isset($this->collections[$dav_name]) && ($this->collections[$dav_name]->is_calendar == 't') ) { + $this->default_calendar = $dav_name; + } + else { + foreach( $this->collections AS $dav_name => $collection ) { + if ( $collection->is_calendar == 't' ) { + $this->default_calendar = $dav_name; + } + } + } + } + } + } + return $this->default_calendar; + } + + /** * Return the URL for this principal * @param string $type The type of URL we want (the principal, by default) @@ -384,7 +458,7 @@ class Principal { switch( $type ) { case 'principal': break; - case 'schedule-default-calendar': $result .= $c->home_calendar_name; break; + case 'schedule-default-calendar': $result = $this->default_calendar(); break; case 'schedule-inbox': $result .= '.in/'; break; case 'schedule-outbox': $result .= '.out/'; break; case 'dropbox': $result .= '.drop/'; break; diff --git a/testing/tests/regression-suite/0532-iCal4-PROPFIND.result b/testing/tests/regression-suite/0532-iCal4-PROPFIND.result index 7766b1b3..a49014fe 100644 --- a/testing/tests/regression-suite/0532-iCal4-PROPFIND.result +++ b/testing/tests/regression-suite/0532-iCal4-PROPFIND.result @@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "b0a852bb7a7c95269f916f12bbcbdb10" -Content-Length: 15088 +ETag: "e7cd1ee6cd4eb1e0e2aaa1d2b5a0bfb1" +Content-Length: 15648 Content-Type: text/xml; charset="utf-8" @@ -23,6 +23,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -70,7 +73,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -100,6 +102,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -149,7 +154,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -179,6 +183,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -228,7 +235,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -256,6 +262,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -314,7 +323,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -342,6 +350,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -400,7 +411,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -431,6 +441,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -479,7 +492,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -502,6 +514,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -552,7 +567,6 @@ Content-Type: text/xml; charset="utf-8" - @@ -575,6 +589,9 @@ Content-Type: text/xml; charset="utf-8" /caldav.php/user1/created/ /caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/ + + /user1/home/ + @@ -625,7 +642,6 @@ Content-Type: text/xml; charset="utf-8" - diff --git a/testing/tests/regression-suite/0541-iCal4-PROPFIND.result b/testing/tests/regression-suite/0541-iCal4-PROPFIND.result index e1bf0d45..5850e03c 100644 --- a/testing/tests/regression-suite/0541-iCal4-PROPFIND.result +++ b/testing/tests/regression-suite/0541-iCal4-PROPFIND.result @@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule -ETag: "19e51f9bc18826db107f6b07900cea8a" -Content-Length: 1388 +ETag: "f979bd69bf442e8e93634acdea5bb42b" +Content-Length: 1457 Content-Type: text/xml; charset="utf-8" @@ -22,6 +22,9 @@ Content-Type: text/xml; charset="utf-8" + + /user1/home/ + BEGIN:VCALENDAR PRODID:-//davical.org//NONSGML AWL Calendar//EN VERSION:2.0 @@ -52,7 +55,6 @@ END:VCALENDAR - HTTP/1.1 404 Not Found diff --git a/testing/tests/scheduling/3010-PUT-with-attendees.result b/testing/tests/scheduling/3010-PUT-with-attendees.result index 47889a22..b09f132a 100644 --- a/testing/tests/scheduling/3010-PUT-with-attendees.result +++ b/testing/tests/scheduling/3010-PUT-with-attendees.result @@ -5,67 +5,526 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule ETag: "e69b6d5b70189b96126c8993bcf1648a" -Content-Length: 0 +Content-Length: 112 Content-Type: text/plain; charset="utf-8" +Notice: Undefined variable: log_action in /home/karora/projects/davical/inc/WritableCollection.php on line 259 + + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< caldav_type: >VEVENT< - dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< - dtend: >2010-11-23 16:00:00< - dtstamp: >2010-11-24 22:19:00< - dtstart: >2010-11-23 11:00:00< - due: >NULL< - location: >NULL< + dav_name: >/user1/home/PUT-attendees.ics< logged_user: >10< summary: >Multiple Beard Meeting< - uid: >PUT-attendees< user_no: >10< + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +METHOD:REQUEST +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< caldav_type: >VEVENT< - dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< - dtend: >2010-11-23 16:00:00< - dtstamp: >2010-11-24 22:19:00< - dtstart: >2010-11-23 11:00:00< - due: >NULL< - location: >NULL< + dav_name: >/user1/.in/PUT-attendees.ics< + logged_user: >10< + summary: >Multiple Beard Meeting< + user_no: >10< + + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< + caldav_type: >VEVENT< + dav_name: >/user2/home/PUT-attendees.ics< logged_user: >10< summary: >Multiple Beard Meeting< - uid: >PUT-attendees< user_no: >11< + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +METHOD:REQUEST +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< caldav_type: >VEVENT< - dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< - dtend: >2010-11-23 16:00:00< - dtstamp: >2010-11-24 22:19:00< - dtstart: >2010-11-23 11:00:00< - due: >NULL< - location: >NULL< + dav_name: >/user2/.in/PUT-attendees.ics< + logged_user: >10< + summary: >Multiple Beard Meeting< + user_no: >11< + + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< + caldav_type: >VEVENT< + dav_name: >/user3/home/PUT-attendees.ics< logged_user: >10< summary: >Multiple Beard Meeting< - uid: >PUT-attendees< user_no: >12< + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +METHOD:REQUEST +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< caldav_type: >VEVENT< - dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< - dtend: >2010-11-23 16:00:00< - dtstamp: >2010-11-24 22:19:00< - dtstart: >2010-11-23 11:00:00< - due: >NULL< - location: >NULL< + dav_name: >/user3/.in/PUT-attendees.ics< + logged_user: >10< + summary: >Multiple Beard Meeting< + user_no: >12< + + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< + caldav_type: >VEVENT< + dav_name: >/user4/home/PUT-attendees.ics< logged_user: >10< summary: >Multiple Beard Meeting< - uid: >PUT-attendees< user_no: >13< + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +METHOD:REQUEST +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RS + VP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< caldav_type: >VEVENT< - dav_etag: >e69b6d5b70189b96126c8993bcf1648a< - dtend: >2010-11-23 16:00:00< - dtstamp: >2010-11-24 22:19:00< - dtstart: >2010-11-23 11:00:00< - due: >NULL< - location: >NULL< + dav_name: >/user4/.in/PUT-attendees.ics< + logged_user: >10< + summary: >Multiple Beard Meeting< + user_no: >13< + + caldav_data: >BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Apple Inc.//iCal 3.0//EN +CALSCALE:GREGORIAN +BEGIN:VTIMEZONE +TZID:Pacific/Auckland +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:19900318T030000 +RRULE:FREQ=YEARLY;UNTIL=20070317T140000Z;BYMONTH=3;BYDAY=3SU +TZNAME:NZST +END:STANDARD +BEGIN:DAYLIGHT +TZOFFSETFROM:+1200 +TZOFFSETTO:+1300 +DTSTART:20070930T020000 +RRULE:FREQ=YEARLY;BYMONTH=9;BYDAY=-1SU +TZNAME:NZDT +END:DAYLIGHT +BEGIN:STANDARD +TZOFFSETFROM:+1300 +TZOFFSETTO:+1200 +DTSTART:20080406T030000 +RRULE:FREQ=YEARLY;BYMONTH=4;BYDAY=1SU +TZNAME:NZST +END:STANDARD +END:VTIMEZONE +BEGIN:VEVENT +SEQUENCE:7 +DESCRIPTION:Masses of Lunch will be needed +UID:PUT-attendees +TRANSP:OPAQUE +DTSTART;TZID=Pacific/Auckland:20101123T110000 +DTEND;TZID=Pacific/Auckland:20101123T160000 +DTSTAMP:20101124T221900Z +SUMMARY:Multiple Beard Meeting +CREATED:20071124T221521Z +RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TU +ORGANIZER;CN=User 1:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 1;LANGUAGE=en:MAILTO:user1@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 2;LANGUAGE=en:MAILTO:user2@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 3;LANGUAGE=en:MAILTO:user3@example.net +ATTENDEE;CUTYPE=INDIVIDUAL;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION; + RSVP=TRUE;CN=User 4;LANGUAGE=en:MAILTO:user4@example.net +END:VEVENT +END:VCALENDAR +< + caldav_type: >VEVENT< + dav_name: >/resource2/home/PUT-attendees.ics< logged_user: >10< summary: >Multiple Beard Meeting< - uid: >PUT-attendees< user_no: >101< diff --git a/testing/tests/scheduling/3010-PUT-with-attendees.test b/testing/tests/scheduling/3010-PUT-with-attendees.test index 8ebab2b0..740db4e8 100644 --- a/testing/tests/scheduling/3010-PUT-with-attendees.test +++ b/testing/tests/scheduling/3010-PUT-with-attendees.test @@ -63,11 +63,9 @@ ENDDATA QUERY -SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, - uid, dtstamp, - dtstart at time zone tz_locn as dtstart, - dtend at time zone tz_locn as dtend, - due, summary, location +SELECT caldav_data.user_no, caldav_data.dav_name, + caldav_type, logged_user, caldav_data.caldav_data, + summary FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN time_zone USING (tz_id) WHERE calendar_item.uid = 'PUT-attendees'; ENDQUERY