From 8fc2a76cead40fe479e53df28a0191a9af207a90 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Thu, 18 Mar 2010 13:21:19 +1300 Subject: [PATCH] Add support for resource-id and parent-set properties. --- inc/DAVResource.php | 32 +++++++++++- .../regression-suite/964-PROPFIND.result | 50 +++++++++++++++++++ .../tests/regression-suite/964-PROPFIND.test | 2 + 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/inc/DAVResource.php b/inc/DAVResource.php index dafd7f27..16c04be3 100644 --- a/inc/DAVResource.php +++ b/inc/DAVResource.php @@ -1206,8 +1206,36 @@ EOQRY; $prop->NewElement('href', ConstructURL($this->dav_name) ); break; - case 'DAV::resource_id': - $prop->NewElement('href', ConstructURL('.resources/'.$this->resource_id) ); + case 'DAV::resource-id': + if ( $this->resource_id > 0 ) + $reply->DAVElement( $prop, 'resource-id', $reply->href(ConstructURL('/.resources/'.$this->resource_id) ) ); + else + return false; + break; + + case 'DAV::parent-set': + $parent_set = $reply->DAVElement( $prop, 'parent-set' ); + if ( preg_match( '{^(.*)/([^/]+)/?$}', $this->bound_from, $matches ) ) { + $reply->DAVElement($parent_set, 'parent', array( + new XMLElement( 'href', ConstructURL($matches[1])), + new XMLElement( 'segment', $matches[2]) + )); + $sql = << $this->bound_from ) ); + if ( $qry->Exec('DAVResource',__LINE__,__FILE__) && $qry->rows() > 0 ) { + while( $row = $qry->Fetch() ) { + $reply->DAVElement($parent_set, 'parent', array( + new XMLElement( 'href', ConstructURL($row->parent)), + new XMLElement( 'segment', $row->segment) + )); + } + } + } break; case 'DAV::getcontenttype': diff --git a/testing/tests/regression-suite/964-PROPFIND.result b/testing/tests/regression-suite/964-PROPFIND.result index b9d0858c..5fd281ca 100644 --- a/testing/tests/regression-suite/964-PROPFIND.result +++ b/testing/tests/regression-suite/964-PROPFIND.result @@ -5,6 +5,10 @@ User 4 + + /caldav.php/.resources/6 + + HTTP/1.1 200 OK @@ -14,6 +18,19 @@ User 2's Calendar, as uploaded by Admin + + /caldav.php/.resources/11 + + + + /caldav.php/user2 + home + + + /caldav.php/user4 + user2 + + HTTP/1.1 200 OK @@ -23,6 +40,15 @@ mir-test + + /caldav.php/.resources/13 + + + + /caldav.php/user4 + home + + HTTP/1.1 200 OK @@ -32,17 +58,41 @@ /user4/calendar-proxy-read/ + + + /caldav.php/user4 + calendar-proxy-read + + HTTP/1.1 200 OK + + + + + HTTP/1.1 404 Not Found + /caldav.php/user4/calendar-proxy-write/ /user4/calendar-proxy-write/ + + + /caldav.php/user4 + calendar-proxy-write + + HTTP/1.1 200 OK + + + + + HTTP/1.1 404 Not Found + diff --git a/testing/tests/regression-suite/964-PROPFIND.test b/testing/tests/regression-suite/964-PROPFIND.test index d3b9d14c..9e672853 100644 --- a/testing/tests/regression-suite/964-PROPFIND.test +++ b/testing/tests/regression-suite/964-PROPFIND.test @@ -15,6 +15,8 @@ BEGINDATA + + ENDDATA