From 84c5fbea226ae0a02b3944bf096aca4e7aec4a1e Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 17 Feb 2010 23:54:48 +1300 Subject: [PATCH] PROPPATCH: Setting properties on Principals now working. --- inc/caldav-PROPPATCH.php | 10 +++--- .../844-Spec-PROPPATCH-principal.result | 27 ++++++++++++++ .../844-Spec-PROPPATCH-principal.test | 31 ++++++++++++++++ .../845-Spec-PROPPATCH-principal.result | 17 +++++++++ .../845-Spec-PROPPATCH-principal.test | 35 +++++++++++++++++++ 5 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 testing/tests/regression-suite/844-Spec-PROPPATCH-principal.result create mode 100644 testing/tests/regression-suite/844-Spec-PROPPATCH-principal.test create mode 100644 testing/tests/regression-suite/845-Spec-PROPPATCH-principal.result create mode 100644 testing/tests/regression-suite/845-Spec-PROPPATCH-principal.test diff --git a/inc/caldav-PROPPATCH.php b/inc/caldav-PROPPATCH.php index d8951a32..6de065bb 100644 --- a/inc/caldav-PROPPATCH.php +++ b/inc/caldav-PROPPATCH.php @@ -57,13 +57,13 @@ foreach( $setprops AS $k => $setting ) { * Can't set displayname on resources - only collections or principals */ if ( $request->IsCollection() || $request->IsPrincipal() ) { - if ( $request->IsCollection() ) { - $sql .= sprintf( "UPDATE collection SET dav_displayname = %s, modified = current_timestamp WHERE dav_name = %s;", - qpg($content), qpg($request->path) ); + if ( $request->IsPrincipal() ) { + $sql .= sprintf( "UPDATE dav_principal SET fullname = %s, displayname = %s, modified = current_timestamp WHERE user_no = %s;", + qpg($content), qpg($content), $request->user_no ); } else { - $sql .= sprintf( "UPDATE usr SET fullname = %s, updated = current_timestamp WHERE user_no = %s;", - qpg($content), $request->user_no ); + $sql .= sprintf( "UPDATE collection SET dav_displayname = %s, modified = current_timestamp WHERE dav_name = %s;", + qpg($content), qpg($request->path) ); } $success[$tag] = 1; } diff --git a/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.result b/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.result new file mode 100644 index 00000000..41ebb735 --- /dev/null +++ b/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.result @@ -0,0 +1,27 @@ +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: 219 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/ + All requested changes were made. + + + + displayname: >User Number One PROPPATCH'd in< + fullname: >User Number One PROPPATCH'd in< + + changed_by: >10< + dav_name: >/user1/< + property_name: >http://dotcal.com/principal-properties:country< + property_value: >New Zealand< + + changed_by: >10< + dav_name: >/user1/< + property_name: >http://dotcal.com/principal-properties:countrycode< + property_value: >NZ< + diff --git a/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.test b/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.test new file mode 100644 index 00000000..cd6584cb --- /dev/null +++ b/testing/tests/regression-suite/844-Spec-PROPPATCH-principal.test @@ -0,0 +1,31 @@ +# +# Check for support of PROPPATCH method +# +# An attempt to set an arbitrary property on a principal +# +TYPE=PROPPATCH +URL=http://mycaldav/caldav.php/user1/ +HEADER=User-agent: SpecTest PROPPATCH +HEADER=Content-type: text/xml +HEAD + +BEGINDATA + + + + + New Zealand + NZ + User Number One PROPPATCH'd in + + + +ENDDATA + +QUERY +SELECT fullname, displayname FROM dav_principal WHERE dav_name = '/user1/'; +ENDQUERY + +QUERY +SELECT dav_name, property_name, property_value, changed_by FROM property WHERE dav_name = '/user1/'; +ENDQUERY diff --git a/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.result b/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.result new file mode 100644 index 00000000..2ad29cd9 --- /dev/null +++ b/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.result @@ -0,0 +1,17 @@ +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: 219 +Content-Type: text/xml; charset="utf-8" + + + + + /caldav.php/user1/ + All requested changes were made. + + + + displayname: >User 1< + fullname: >User 1< + diff --git a/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.test b/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.test new file mode 100644 index 00000000..b08d5d01 --- /dev/null +++ b/testing/tests/regression-suite/845-Spec-PROPPATCH-principal.test @@ -0,0 +1,35 @@ +# +# Check for support of PROPPATCH method +# +# An attempt to set an arbitrary property on a principal +# +TYPE=PROPPATCH +URL=http://mycaldav/caldav.php/user1/ +HEADER=User-agent: SpecTest PROPPATCH +HEADER=Content-type: text/xml +HEAD + +BEGINDATA + + + + + User 1 + + + + + + + + + +ENDDATA + +QUERY +SELECT fullname, displayname FROM dav_principal WHERE dav_name = '/user1/'; +ENDQUERY + +QUERY +SELECT * FROM property WHERE dav_name = '/user1/'; +ENDQUERY