diff --git a/dba/davical.sql b/dba/davical.sql index 56045d67..69709d8e 100644 --- a/dba/davical.sql +++ b/dba/davical.sql @@ -305,11 +305,10 @@ CREATE INDEX sync_processing_index ON sync_changes( collection_id, dav_id, sync_ CREATE TABLE access_ticket ( ticket_id TEXT PRIMARY KEY, is_collection BOOLEAN, - is_public BOOLEAN, privileges BIT(24), target_id INT8, displayname TEXT, - expires TIMESTAMP, + expires TIMESTAMP ); SELECT new_db_revision(1,2,8, 'Août' ); diff --git a/dba/patches/1.2.8.sql b/dba/patches/1.2.8.sql index 3aae7f76..e19187f6 100644 --- a/dba/patches/1.2.8.sql +++ b/dba/patches/1.2.8.sql @@ -13,7 +13,7 @@ CREATE TABLE access_ticket ( privileges BIT(24), target_id INT8, displayname TEXT, - expires TIMESTAMP, + expires TIMESTAMP ); SELECT new_db_revision(1,2,8, 'Août' ); diff --git a/inc/caldav-PROPFIND.php b/inc/caldav-PROPFIND.php index bcd39f37..c7d2af73 100644 --- a/inc/caldav-PROPFIND.php +++ b/inc/caldav-PROPFIND.php @@ -29,10 +29,22 @@ $xmltree = BuildXMLTree( $request->xml_tags, $position); if ( !is_object($xmltree) ) { $request->DoResponse( 403, translate("REPORT body is not valid XML data!") ); } -$properties = $xmltree->GetPath('/DAV::propfind/DAV::prop/*'); +$allprop = $xmltree->GetPath('/DAV::propfind/*'); $property_list = array(); -foreach( $properties AS $k => $v ) { - $property_list[] = $v->GetTag(); +foreach( $allprop AS $k1 => $propwrap ) { + switch ( $propwrap->GetTag() ) { + case 'DAV::allprop': + $property_list[] = 'DAV::allprop'; + break; + case 'DAV::propname': + $property_list[] = 'DAV::propname'; + break; + default: // prop, include + $subprop = $propwrap->GetElements(); + foreach( $subprop AS $k => $v ) { + $property_list[] = $v->GetTag(); + } + } } diff --git a/testing/tests/regression-suite/828-Spec-PROPFIND-5.result b/testing/tests/regression-suite/828-Spec-PROPFIND-5.result new file mode 100644 index 00000000..aec0fae7 --- /dev/null +++ b/testing/tests/regression-suite/828-Spec-PROPFIND-5.result @@ -0,0 +1,36 @@ + + + + /caldav.php/user1/home/ + + + httpd/unix-directory + + + + + user1 home + Dow, 01 Jan 2000 00:00:00 GMT + YYYY-MM-DDThh:mm:ss+ZZ:ZZ + + + + + + + + + + + + + /caldav.php/user1/ + + + /caldav.php/user1/ + + + HTTP/1.1 200 OK + + + diff --git a/testing/tests/regression-suite/828-Spec-PROPFIND-5.test b/testing/tests/regression-suite/828-Spec-PROPFIND-5.test new file mode 100644 index 00000000..6d6d2c70 --- /dev/null +++ b/testing/tests/regression-suite/828-Spec-PROPFIND-5.test @@ -0,0 +1,19 @@ +# +# Testing for Spec compliance. PROPFIND on a calendar collection. +# +TYPE=PROPFIND +URL=http://mycaldav/caldav.php/user1/home/ +HEADER=User-Agent: RFC2518 Spec Tests +HEADER=Depth: 0 +HEADER=Content-Type: application/xml + +REPLACE=#2\d{3}-\d\d-\d\dT\d\d:\d\d:\d\d[+-]\d\d:\d\d#YYYY-MM-DDThh:mm:ss+ZZ:ZZ# + +BEGINDATA + + + + +ENDDATA + +# REPLACE=/"[0-9a-f]{32}"<.get.tag>/"deadbeefcafef00ddeadbeefcafefeed"<.get?tag>/