Add support for the schedule-default-calendar-URL property.

This commit is contained in:
Andrew McMillan 2011-09-09 22:54:38 +12:00
parent 8b77885cac
commit bdb360f082
5 changed files with 605 additions and 56 deletions

View File

@ -98,6 +98,9 @@ class Principal {
private $cacheNs; private $cacheNs;
private $cacheKey; private $cacheKey;
protected $collections;
protected $dead_properties;
protected $default_calendar;
function __construct( $type, $value, $use_cache=true ) { function __construct( $type, $value, $use_cache=true ) {
global $c, $session; 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 * Return the URL for this principal
* @param string $type The type of URL we want (the principal, by default) * @param string $type The type of URL we want (the principal, by default)
@ -384,7 +458,7 @@ class Principal {
switch( $type ) { switch( $type ) {
case 'principal': break; 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-inbox': $result .= '.in/'; break;
case 'schedule-outbox': $result .= '.out/'; break; case 'schedule-outbox': $result .= '.out/'; break;
case 'dropbox': $result .= '.drop/'; break; case 'dropbox': $result .= '.drop/'; break;

View File

@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
ETag: "b0a852bb7a7c95269f916f12bbcbdb10" ETag: "e7cd1ee6cd4eb1e0e2aaa1d2b5a0bfb1"
Content-Length: 15088 Content-Length: 15648
Content-Type: text/xml; charset="utf-8" Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
@ -23,6 +23,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -70,7 +73,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-order/> <A:calendar-order/>
<C1:supported-calendar-component-set/> <C1:supported-calendar-component-set/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -100,6 +102,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -149,7 +154,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-color/> <A:calendar-color/>
<A:calendar-order/> <A:calendar-order/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -179,6 +183,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -228,7 +235,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-color/> <A:calendar-color/>
<A:calendar-order/> <A:calendar-order/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -256,6 +262,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -314,7 +323,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-color/> <A:calendar-color/>
<A:calendar-order/> <A:calendar-order/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -342,6 +350,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -400,7 +411,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-color/> <A:calendar-color/>
<A:calendar-order/> <A:calendar-order/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -431,6 +441,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -479,7 +492,6 @@ Content-Type: text/xml; charset="utf-8"
<C1:calendar-description/> <C1:calendar-description/>
<A:calendar-order/> <A:calendar-order/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -502,6 +514,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -552,7 +567,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-order/> <A:calendar-order/>
<C1:supported-calendar-component-set/> <C1:supported-calendar-component-set/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>
@ -575,6 +589,9 @@ Content-Type: text/xml; charset="utf-8"
<href>/caldav.php/user1/created/</href> <href>/caldav.php/user1/created/</href>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href> <href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/</href>
</C1:calendar-free-busy-set> </C1:calendar-free-busy-set>
<C1:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C1:schedule-default-calendar-URL>
<current-user-privilege-set> <current-user-privilege-set>
<privilege> <privilege>
<all/> <all/>
@ -625,7 +642,6 @@ Content-Type: text/xml; charset="utf-8"
<A:calendar-order/> <A:calendar-order/>
<C1:supported-calendar-component-set/> <C1:supported-calendar-component-set/>
<C1:schedule-calendar-transp/> <C1:schedule-calendar-transp/>
<C1:schedule-default-calendar-URL/>
<quota-available-bytes/> <quota-available-bytes/>
<quota-used-bytes/> <quota-used-bytes/>
<C1:calendar-timezone/> <C1:calendar-timezone/>

View File

@ -2,8 +2,8 @@ HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
ETag: "19e51f9bc18826db107f6b07900cea8a" ETag: "f979bd69bf442e8e93634acdea5bb42b"
Content-Length: 1388 Content-Length: 1457
Content-Type: text/xml; charset="utf-8" Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?> <?xml version="1.0" encoding="utf-8" ?>
@ -22,6 +22,9 @@ Content-Type: text/xml; charset="utf-8"
<C:comp name="VTIMEZONE"/> <C:comp name="VTIMEZONE"/>
<C:comp name="VFREEBUSY"/> <C:comp name="VFREEBUSY"/>
</C:supported-calendar-component-set> </C:supported-calendar-component-set>
<C:schedule-default-calendar-URL>
<href>/user1/home/</href>
</C:schedule-default-calendar-URL>
<C:calendar-timezone>BEGIN:VCALENDAR <C:calendar-timezone>BEGIN:VCALENDAR
PRODID:-//davical.org//NONSGML AWL Calendar//EN PRODID:-//davical.org//NONSGML AWL Calendar//EN
VERSION:2.0 VERSION:2.0
@ -52,7 +55,6 @@ END:VCALENDAR
<prop> <prop>
<C:calendar-description/> <C:calendar-description/>
<C:schedule-calendar-transp/> <C:schedule-calendar-transp/>
<C:schedule-default-calendar-URL/>
</prop> </prop>
<status>HTTP/1.1 404 Not Found</status> <status>HTTP/1.1 404 Not Found</status>
</propstat> </propstat>

View File

@ -5,67 +5,526 @@ Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule DAV: 1, 2, 3, access-control, calendar-access, calendar-schedule
DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule DAV: extended-mkcol, calendar-proxy, bind, addressbook, calendar-auto-schedule
ETag: "e69b6d5b70189b96126c8993bcf1648a" ETag: "e69b6d5b70189b96126c8993bcf1648a"
Content-Length: 0 Content-Length: 112
Content-Type: text/plain; charset="utf-8" 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< caldav_type: >VEVENT<
dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< dav_name: >/user1/home/PUT-attendees.ics<
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<
logged_user: >10< logged_user: >10<
summary: >Multiple Beard Meeting< summary: >Multiple Beard Meeting<
uid: >PUT-attendees<
user_no: >10< 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< caldav_type: >VEVENT<
dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< dav_name: >/user1/.in/PUT-attendees.ics<
dtend: >2010-11-23 16:00:00< logged_user: >10<
dtstamp: >2010-11-24 22:19:00< summary: >Multiple Beard Meeting<
dtstart: >2010-11-23 11:00:00< user_no: >10<
due: >NULL<
location: >NULL< 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< logged_user: >10<
summary: >Multiple Beard Meeting< summary: >Multiple Beard Meeting<
uid: >PUT-attendees<
user_no: >11< 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< caldav_type: >VEVENT<
dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< dav_name: >/user2/.in/PUT-attendees.ics<
dtend: >2010-11-23 16:00:00< logged_user: >10<
dtstamp: >2010-11-24 22:19:00< summary: >Multiple Beard Meeting<
dtstart: >2010-11-23 11:00:00< user_no: >11<
due: >NULL<
location: >NULL< 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< logged_user: >10<
summary: >Multiple Beard Meeting< summary: >Multiple Beard Meeting<
uid: >PUT-attendees<
user_no: >12< 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< caldav_type: >VEVENT<
dav_etag: >29961c088fb4666d00f6894e5dd3cfe8< dav_name: >/user3/.in/PUT-attendees.ics<
dtend: >2010-11-23 16:00:00< logged_user: >10<
dtstamp: >2010-11-24 22:19:00< summary: >Multiple Beard Meeting<
dtstart: >2010-11-23 11:00:00< user_no: >12<
due: >NULL<
location: >NULL< 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< logged_user: >10<
summary: >Multiple Beard Meeting< summary: >Multiple Beard Meeting<
uid: >PUT-attendees<
user_no: >13< 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< caldav_type: >VEVENT<
dav_etag: >e69b6d5b70189b96126c8993bcf1648a< dav_name: >/user4/.in/PUT-attendees.ics<
dtend: >2010-11-23 16:00:00< logged_user: >10<
dtstamp: >2010-11-24 22:19:00< summary: >Multiple Beard Meeting<
dtstart: >2010-11-23 11:00:00< user_no: >13<
due: >NULL<
location: >NULL< 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< logged_user: >10<
summary: >Multiple Beard Meeting< summary: >Multiple Beard Meeting<
uid: >PUT-attendees<
user_no: >101< user_no: >101<

View File

@ -63,11 +63,9 @@ ENDDATA
QUERY QUERY
SELECT caldav_data.user_no, caldav_data.dav_etag, caldav_type, logged_user, SELECT caldav_data.user_no, caldav_data.dav_name,
uid, dtstamp, caldav_type, logged_user, caldav_data.caldav_data,
dtstart at time zone tz_locn as dtstart, summary
dtend at time zone tz_locn as dtend,
due, summary, location
FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN time_zone USING (tz_id) FROM caldav_data JOIN calendar_item USING(dav_name) LEFT JOIN time_zone USING (tz_id)
WHERE calendar_item.uid = 'PUT-attendees'; WHERE calendar_item.uid = 'PUT-attendees';
ENDQUERY ENDQUERY