Fixing up various minor regressions after restructuring PROPFIND.

This commit is contained in:
Andrew McMillan 2010-03-14 01:48:55 +13:00
parent ed055722e9
commit f78655e952
12 changed files with 797 additions and 133 deletions

View File

@ -403,6 +403,7 @@ class CalDAVPrincipal
* Return the privileges bits for the current session user to this resource
*/
function Privileges() {
if ( !isset($this->privileges) )
if ( is_string($this->privileges) ) $this->privileges = bindec( $this->privileges );
return $this->privileges;
}

View File

@ -310,20 +310,23 @@ class CalDAVRequest
}
$this->collection->type = $this->collection_type;
}
else if ( preg_match( '#^((/[^/]+/)\.(in|out)/)[^/]*$#', $this->path, $matches ) ) {
else if ( preg_match( '{^( ( / ([^/]+) / ) \.(in|out)/ ) [^/]*$}x', $this->path, $matches ) ) {
// The request is for a scheduling inbox or outbox (or something inside one) and we should auto-create it
$displayname = $session->fullname . ($matches[3] == 'in' ? ' Inbox' : ' Outbox');
$this->collection_type = 'schedule-'. $matches[3]. 'box';
$resourcetypes = sprintf('<DAV::collection/><urn:ietf:params:xml:ns:caldav:%s/>', $this->collection_type );
$params = array( ':username' => $matches[3], ':parent_container' => $matches[2], ':dav_name' => $matches[1] );
$params[':boxname'] = ($matches[4] == 'in' ? ' Inbox' : ' Outbox');
$this->collection_type = 'schedule-'. $matches[4]. 'box';
$params[':resourcetypes'] = sprintf('<DAV::collection/><urn:ietf:params:xml:ns:caldav:%s/>', $this->collection_type );
$sql = <<<EOSQL
INSERT INTO collection ( user_no, parent_container, dav_name, dav_displayname, is_calendar, created, modified, dav_etag, resourcetypes )
VALUES( :user_no, :parent_path, :dav_name, :displayname, FALSE, current_timestamp, current_timestamp, '1', :resourcetypes )
VALUES( (SELECT user_no FROM usr WHERE username = :username),
:parent_container, :dav_name,
(SELECT fullname FROM usr WHERE username = :username) || :boxname,
FALSE, current_timestamp, current_timestamp, '1', :resourcetypes )
EOSQL;
$params = array( ':user_no' => $session->user_no, ':parent_path' => $matches[2], ':dav_name' => $matches[1],
':displayname' => $displayname, ':resourcetypes' => $resourcetypes );
$qry = new AwlQuery( $sql, $params );
$qry->Exec('caldav',__LINE__,__FILE__);
dbg_error_log( "caldav", "Created new collection as '$displayname'." );
dbg_error_log( 'caldav', 'Created new collection as "%s".', trim($params[':boxname']) );
$qry = new AwlQuery( "SELECT * FROM collection WHERE dav_name = :dav_name", array( ':dav_name' => $matches[1] ) );
if ( $qry->Exec('caldav',__LINE__,__FILE__) && $qry->rows() == 1 && ($row = $qry->Fetch()) ) {

View File

@ -324,19 +324,22 @@ class DAVResource
else
$this->collection->type = 'collection';
}
else if ( preg_match( '#^((/[^/]+/)\.(in|out)/)[^/]*$#', $this->dav_name, $matches ) ) {
else if ( preg_match( '{^( ( / ([^/]+) / ) \.(in|out)/ ) [^/]*$}x', $this->dav_name, $matches ) ) {
// The request is for a scheduling inbox or outbox (or something inside one) and we should auto-create it
$params = array( ':user_no' => $session->user_no, ':parent_container' => $matches[2], ':dav_name' => $matches[1] );
$params[':displayname'] = $session->fullname . ($matches[3] == 'in' ? ' Inbox' : ' Outbox');
$this->collection_type = 'schedule-'. $matches[3]. 'box';
$params = array( ':username' => $matches[3], ':parent_container' => $matches[2], ':dav_name' => $matches[1] );
$params[':boxname'] = ($matches[4] == 'in' ? ' Inbox' : ' Outbox');
$this->collection_type = 'schedule-'. $matches[4]. 'box';
$params[':resourcetypes'] = sprintf('<DAV::collection/><urn:ietf:params:xml:ns:caldav:%s/>', $this->collection_type );
$sql = <<<EOSQL
INSERT INTO collection ( user_no, parent_container, dav_name, dav_displayname, is_calendar, created, modified, dav_etag, resourcetypes )
VALUES( :user_no, :parent_container, :dav_name, :displayname, FALSE, current_timestamp, current_timestamp, '1', :resourcetypes )
VALUES( (SELECT user_no FROM usr WHERE username = :username),
:parent_container, :dav_name,
(SELECT fullname FROM usr WHERE username = :username) || :boxname,
FALSE, current_timestamp, current_timestamp, '1', :resourcetypes )
EOSQL;
$qry = new AwlQuery( $sql, $params );
$qry->Exec('DAVResource');
dbg_error_log( 'DAVResource', 'Created new collection as "$displayname".' );
dbg_error_log( 'DAVResource', 'Created new collection as "%s".', trim($params[':boxname']) );
$params = array( ':raw_path' => $this->dav_name, ':session_principal' => $session->principal_id, ':scan_depth' => $c->permission_scan_depth );
$qry = new AwlQuery( $base_sql . ' dav_name = :raw_path', $params );
@ -449,7 +452,7 @@ EOSQL;
*/
function FetchPrincipal() {
global $c, $session;
$this->principal = new CalDAVPrincipal( array( "path" => $this->dav_name ) );
$this->principal = new CalDAVPrincipal( array( "path" => $this->bound_from() ) );
if ( $this->_is_principal && $this->principal->Exists() ) {
// $this->contenttype = 'httpd/unix-directory';
$this->exists = true;
@ -540,6 +543,9 @@ EOQRY;
if ( ! isset($this->collection) ) $this->FetchCollection();
$this->privileges = 0;
if ( !isset($this->collection->path_privs) ) {
if ( !isset($this->collection->parent_container) ) {
$this->collection->parent_container = preg_replace('{/[^/]+/$}', '', $this->collection->dav_name);
}
dbg_error_log( 'DAVResource', 'Checking privileges of "%s" - parent of "%s" (dav_name: %s)', $this->collection->parent_container, $this->collection->dav_name, $this->dav_name() );
$parent = new DAVResource( $this->collection->parent_container );

View File

@ -12,7 +12,7 @@ $c->dbg = array();
require_once("RRule-v2.php");
require_once('AwlQuery.php');
header("Content-type: text/plain");
@header("Content-type: text/plain");
echo <<<EOTXT
Testing the RRule v2 Library

View File

@ -1,8 +1,8 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "e00f3aa720ae2b6a80bdb7d95e5430e4"
Content-Length: 813
ETag: "c50498a15bb7fd50041aa0de8279f721"
Content-Length: 1354
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
@ -12,7 +12,7 @@ Content-Type: text/xml; charset="utf-8"
<propstat>
<prop>
<C:getctag>"29a4f57ff8c8564c364d37fac0e18e34"</C:getctag>
<displayname>User 1 Inbox</displayname>
<displayname>User 2 Inbox</displayname>
<resourcetype>
<collection/>
<C1:schedule-inbox/>
@ -32,4 +32,26 @@ Content-Type: text/xml; charset="utf-8"
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user2/.in/15f40cce00b378332164188cf779f0d6.ics</href>
<propstat>
<prop>
<displayname>test meeting</displayname>
<resourcetype/>
<C1:calendar-free-busy-set>
<href>/caldav.php/user2/home/</href>
</C1:calendar-free-busy-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<C:getctag/>
<C1:calendar-description/>
<A:calendar-color/>
<A:calendar-order/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
</multistatus>

View File

@ -1,8 +1,8 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "c4f5aca6816fa9251ab0c662adadf0c9"
Content-Length: 3316
ETag: "15c404c52f510728b184026a924e53e7"
Content-Length: 3930
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
@ -57,6 +57,31 @@ Content-Type: text/xml; charset="utf-8"
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user2/.in/</href>
<propstat>
<prop>
<C:getctag>"29a4f57ff8c8564c364d37fac0e18e34"</C:getctag>
<displayname>User 2 Inbox</displayname>
<resourcetype>
<collection/>
<C1:schedule-inbox/>
</resourcetype>
<C1:calendar-free-busy-set>
<href>/caldav.php/user2/home/</href>
</C1:calendar-free-busy-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<C1:calendar-description/>
<A:calendar-color/>
<A:calendar-order/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user2/.out/</href>
<propstat>

View File

@ -1,46 +1,17 @@
HTTP/1.1 207 Multi-Status
HTTP/1.1 403 Forbidden
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "1f0e016ecbd8566bc60b88a167178059"
Content-Length: 1071
Content-Length: 216
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>/caldav.php/resmgr1/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/resmgr1/calendar-proxy-read/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/resmgr1/calendar-proxy-write/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
<error xmlns="DAV:">
<need-privileges>
<resource>
<href>/caldav.php/resmgr1/</href>
<privilege>
<read/>
</privilege>
</resource>
</need-privileges>
</error>

View File

@ -1,46 +1,17 @@
HTTP/1.1 207 Multi-Status
HTTP/1.1 403 Forbidden
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "1f0e016ecbd8566bc60b88a167178059"
Content-Length: 1071
Content-Length: 216
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
<multistatus xmlns="DAV:">
<response>
<href>/caldav.php/resmgr1/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/resmgr1/calendar-proxy-read/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
<response>
<href>/caldav.php/resmgr1/calendar-proxy-write/</href>
<propstat>
<prop>
<group-membership>
<href>/caldav.php/resource1/calendar-proxy-write/</href>
<href>/caldav.php/resource2/calendar-proxy-write/</href>
</group-membership>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
</response>
</multistatus>
<error xmlns="DAV:">
<need-privileges>
<resource>
<href>/caldav.php/resmgr1/</href>
<privilege>
<read/>
</privilege>
</resource>
</need-privileges>
</error>

View File

@ -1,8 +1,8 @@
HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "ea92b512c27205b703cb6f52043bb6d3"
Content-Length: 4476
ETag: "c54c9883b5a5959588d208034cd782e1"
Content-Length: 14796
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
@ -51,6 +51,358 @@ Content-Type: text/xml; charset="utf-8"
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/3F4CF6227300FD062D9EF3CDFB30D32D-0.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/20061101T073004Z.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/4aaf8f37-f232-4c8e-a72e-e171d4c4fe54.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/9d050be7-8a02-4355-8ed3-02a9fc5f473f.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/1906b3ca-4890-468a-9b58-1de74bf2c716.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/fbd57454-d966-4a14-8341-abe1edb1ae66.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/2178279a-aec2-471f-832d-1f6df6203f2f.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/917b9e47-b748-4550-a566-657fbe672447.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/0575d895-a006-4ed8-9be6-0d1b6b6b1f96.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/b1679f77-673d-4f46-b3eb-2420e1bba301.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/e70576e9-c1e0-431e-a507-0386fd82f223.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/e6eb5bc9-f7f9-4a0a-94e8-8e90eefc7d08.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/71e2ae82-7870-11db-c6d6-f6927c144649.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/da81c0ee-7871-11db-c6d6-f6927c144649.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/AAA9318E-37D9-4319-8626-95ECD3D3B243.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/home/70D23799-4A68-4905-AB9F-4D47BA693CFD.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/created/</href>
<propstat>
@ -139,6 +491,50 @@ Content-Type: text/xml; charset="utf-8"
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/6C8A0D88-E1F9-4FC1-9EDD-DA258ABF2CFA.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/6E20BB7C-EFD9-4F0F-9BDC-5335E04D47E0/E6BC62F3-77C6-4FB7-BDD3-6882E2F1BE74.ics</href>
<propstat>
<prop>
<C:calendar-home-set>
<href>/caldav.php/user1/</href>
</C:calendar-home-set>
<C:calendar-user-address-set>
<href>mailto:user1@example.net</href>
<href>/caldav.php/user1/</href>
</C:calendar-user-address-set>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<A:dropbox-home-URL/>
<A:notifications-URL/>
</prop>
<status>HTTP/1.1 404 Not Found</status>
</propstat>
</response>
<response>
<href>/caldav.php/user1/calendar-proxy-read/</href>
<propstat>

View File

@ -365,6 +365,158 @@
<href>/manager1/</href>
<propstat>
<prop>
<acl>
<ace>
<principal>
<property>
<owner/>
</property>
</principal>
<grant>
<privilege>
<all/>
</privilege>
<privilege>
<read/>
</privilege>
<privilege>
<unlock/>
</privilege>
<privilege>
<read-acl/>
</privilege>
<privilege>
<read-current-user-privilege-set/>
</privilege>
<privilege>
<write-acl/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<write/>
</privilege>
<privilege>
<write-properties/>
</privilege>
<privilege>
<write-content/>
</privilege>
<privilege>
<bind/>
</privilege>
<privilege>
<unbind/>
</privilege>
<privilege>
<C:schedule-deliver/>
</privilege>
<privilege>
<C:schedule-deliver-invite/>
</privilege>
<privilege>
<C:schedule-deliver-reply/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
<privilege>
<C:schedule-send/>
</privilege>
<privilege>
<C:schedule-send-invite/>
</privilege>
<privilege>
<C:schedule-send-reply/>
</privilege>
<privilege>
<C:schedule-send-freebusy/>
</privilege>
</grant>
</ace>
<ace>
<principal>
<href>/assistant1/</href>
</principal>
<grant>
<privilege>
<read/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<write/>
</privilege>
<privilege>
<write-properties/>
</privilege>
<privilege>
<write-content/>
</privilege>
<privilege>
<bind/>
</privilege>
<privilege>
<unbind/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
</grant>
</ace>
<ace>
<principal>
<href>/teamclient1/</href>
</principal>
<grant>
<privilege>
<read/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
</grant>
</ace>
<ace>
<principal>
<authenticated/>
</principal>
<grant>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-deliver/>
</privilege>
<privilege>
<C:schedule-deliver-invite/>
</privilege>
<privilege>
<C:schedule-deliver-reply/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
<privilege>
<C:schedule-send/>
</privilege>
<privilege>
<C:schedule-send-invite/>
</privilege>
<privilege>
<C:schedule-send-reply/>
</privilege>
<privilege>
<C:schedule-send-freebusy/>
</privilege>
</grant>
</ace>
</acl>
<creationdate>YYYY-MM-DDThh:mm:ss+ZZ:ZZ</creationdate>
<displayname>Manager 1</displayname>
<getcontentlanguage/>
@ -387,12 +539,6 @@
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<acl/>
</prop>
<status>HTTP/1.1 403 Forbidden</status>
</propstat>
<propstat>
<prop>
<getcontentlength/>
@ -409,6 +555,127 @@
<href>/assistant1/</href>
<propstat>
<prop>
<acl>
<ace>
<principal>
<property>
<owner/>
</property>
</principal>
<grant>
<privilege>
<all/>
</privilege>
<privilege>
<read/>
</privilege>
<privilege>
<unlock/>
</privilege>
<privilege>
<read-acl/>
</privilege>
<privilege>
<read-current-user-privilege-set/>
</privilege>
<privilege>
<write-acl/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<write/>
</privilege>
<privilege>
<write-properties/>
</privilege>
<privilege>
<write-content/>
</privilege>
<privilege>
<bind/>
</privilege>
<privilege>
<unbind/>
</privilege>
<privilege>
<C:schedule-deliver/>
</privilege>
<privilege>
<C:schedule-deliver-invite/>
</privilege>
<privilege>
<C:schedule-deliver-reply/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
<privilege>
<C:schedule-send/>
</privilege>
<privilege>
<C:schedule-send-invite/>
</privilege>
<privilege>
<C:schedule-send-reply/>
</privilege>
<privilege>
<C:schedule-send-freebusy/>
</privilege>
</grant>
</ace>
<ace>
<principal>
<href>/teamclient1/</href>
</principal>
<grant>
<privilege>
<read/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
</grant>
</ace>
<ace>
<principal>
<authenticated/>
</principal>
<grant>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-deliver/>
</privilege>
<privilege>
<C:schedule-deliver-invite/>
</privilege>
<privilege>
<C:schedule-deliver-reply/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
<privilege>
<C:schedule-send/>
</privilege>
<privilege>
<C:schedule-send-invite/>
</privilege>
<privilege>
<C:schedule-send-reply/>
</privilege>
<privilege>
<C:schedule-send-freebusy/>
</privilege>
</grant>
</ace>
</acl>
<creationdate>YYYY-MM-DDThh:mm:ss+ZZ:ZZ</creationdate>
<displayname>Assistant 1</displayname>
<getcontentlanguage/>
@ -431,12 +698,6 @@
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<acl/>
</prop>
<status>HTTP/1.1 403 Forbidden</status>
</propstat>
<propstat>
<prop>
<getcontentlength/>

View File

@ -1,12 +1,10 @@
HTTP/1.1 200 OK
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
Content-Length: 5540
Content-Length: 5323
Content-Type: text/html
#!/usr/bin/php
Warning: Cannot modify header information - headers already sent by (output started at /home/andrew/projects/davical/testing/test-RRULE-v2.php:2) in /home/andrew/projects/davical/testing/test-RRULE-v2.php on line 15
Testing the RRule v2 Library
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=
20061103T073000 - RRULE:FREQ=DAILY;COUNT=7

View File

@ -2,7 +2,7 @@ HTTP/1.1 207 Multi-Status
Date: Dow, 01 Jan 2000 00:00:00 GMT
DAV: 1, 2, access-control, calendar-access, calendar-schedule, extended-mkcol, calendar-proxy
ETag: "some valid etag"
Content-Length: 8564
Content-Length: 8808
Content-Type: text/xml; charset="utf-8"
<?xml version="1.0" encoding="utf-8" ?>
@ -143,16 +143,21 @@ Content-Type: text/xml; charset="utf-8"
<principal/>
</resourcetype>
<getcontenttype>httpd/unix-directory</getcontenttype>
<current-user-privilege-set>
<privilege>
<read/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
</current-user-privilege-set>
<C2:getctag>some valid etag</C2:getctag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<current-user-privilege-set/>
</prop>
<status>HTTP/1.1 403 Forbidden</status>
</propstat>
<propstat>
<prop>
<getetag/>
@ -176,16 +181,21 @@ Content-Type: text/xml; charset="utf-8"
<principal/>
</resourcetype>
<getcontenttype>httpd/unix-directory</getcontenttype>
<current-user-privilege-set>
<privilege>
<read/>
</privilege>
<privilege>
<C:read-free-busy/>
</privilege>
<privilege>
<C:schedule-query-freebusy/>
</privilege>
</current-user-privilege-set>
<C2:getctag>some valid etag</C2:getctag>
</prop>
<status>HTTP/1.1 200 OK</status>
</propstat>
<propstat>
<prop>
<current-user-privilege-set/>
</prop>
<status>HTTP/1.1 403 Forbidden</status>
</propstat>
<propstat>
<prop>
<getetag/>