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