diff --git a/inc/auth-functions.php b/inc/auth-functions.php
index 6d539688..2b9b1a55 100644
--- a/inc/auth-functions.php
+++ b/inc/auth-functions.php
@@ -139,74 +139,76 @@ function CreateHomeCollections( $username, $default_timezone = null ) {
$c->messages[] = i18n('Home ') . $v['type'] . i18n(' already exists');
continue;
}
- $params[':user_no'] = $principal->user_no();
- $params[':parent_container'] = $principal->dav_name();
- $params[':dav_etag'] = '-1';
- $params[':collection_path'] = $principal->dav_name().$v['name'].'/';
- if ( isset($v['displayname']) && ! empty($v['displayname']) ) {
- $params[':displayname'] = str_replace(array('%fn', '%rfn'), array($user_fullname, $user_rfullname), $v['displayname']);
- } elseif ( isset($v['displayname_suffix']) && ! empty($v['displayname_suffix']) ) {
- $params[':displayname'] = $user_fullname . $v['displayname_suffix'];
- } else {
- $typeLabels = [
- 'calendar' => ' calendar',
- 'addressbook' => ' addressbook',
- 'schedule-outbox' => ' Outbox', // capitalized for consistency with CalDAVRequest (line 396)
- 'schedule-inbox' => ' Inbox'
- ];
- $suffix = isset($typeLabels[$v['type']]) ? $typeLabels[$v['type']] : '';
- $params[':displayname'] = $user_fullname . $suffix;
- }
- $params[':resourcetypes'] = "";
- $params[':is_calendar'] = ( $v['type'] === 'calendar' );
- $params[':is_addressbook'] = ( $v['type'] === 'addressbook' );
- $params[':privileges'] = ( !isset($v['privileges']) || $v['privileges']===null ? null : privilege_to_bits($v['privileges']) );
-
- $qry = new AwlQuery( $sql, $params );
- if ( $qry->Exec() ) {
- $c->messages[] = i18n('Home ') . $v['type'] . i18n(' added. ') . $v['name'];
- dbg_error_log("User", ":Write: Created user's home '%s' at '%s'", $v['type'], $params[':collection_path']);
-
- // create value for urn:ietf:params:xml:ns:caldav:supported-calendar-component-set property
- if($v['type'] == 'calendar' && isset($v['calendar_components']) && $v['calendar_components'] != null && is_array($v['calendar_components']) && count($v['calendar_components'])) {
- // convert the array to uppercase and allow only real calendar components
- $components_clean=array_intersect(array_map("strtoupper", $v['calendar_components']), array('VEVENT', 'VTODO', 'VJOURNAL', 'VTIMEZONE', 'VFREEBUSY', 'VPOLL', 'VAVAILABILITY'));
-
- // convert the $components_clean array to XML string
- $result_xml='';
- foreach($components_clean as $curr)
- $result_xml.=sprintf('', $curr);
-
- // handle the components XML string as user defined property (see below)
- if($result_xml!='')
- $v['default_properties']['urn:ietf:params:xml:ns:caldav:supported-calendar-component-set']=$result_xml;
+ else {
+ $params[':user_no'] = $principal->user_no();
+ $params[':parent_container'] = $principal->dav_name();
+ $params[':dav_etag'] = '-1';
+ $params[':collection_path'] = $principal->dav_name().$v['name'].'/';
+ if ( isset($v['displayname']) && ! empty($v['displayname']) ) {
+ $params[':displayname'] = str_replace(array('%fn', '%rfn'), array($user_fullname, $user_rfullname), $v['displayname']);
+ } elseif ( isset($v['displayname_suffix']) && ! empty($v['displayname_suffix']) ) {
+ $params[':displayname'] = $user_fullname . $v['displayname_suffix'];
+ } else {
+ $typeLabels = [
+ 'calendar' => ' calendar',
+ 'addressbook' => ' addressbook',
+ 'schedule-outbox' => ' Outbox', // capitalized for consistency with CalDAVRequest (line 396)
+ 'schedule-inbox' => ' Inbox'
+ ];
+ $suffix = isset($typeLabels[$v['type']]) ? $typeLabels[$v['type']] : '';
+ $params[':displayname'] = $user_fullname . $suffix;
}
+ $params[':resourcetypes'] = "";
+ $params[':is_calendar'] = ( $v['type'] === 'calendar' );
+ $params[':is_addressbook'] = ( $v['type'] === 'addressbook' );
+ $params[':privileges'] = ( !isset($v['privileges']) || $v['privileges']===null ? null : privilege_to_bits($v['privileges']) );
- // store all user defined properties (note: it also handles 'calendar_components' - see above)
- if(isset($v['default_properties']) && $v['default_properties'] != null && is_array($v['default_properties']) && count($v['default_properties'])) {
- $sql2='INSERT INTO property (dav_name, property_name, property_value, changed_on, changed_by) ';
- $sql2.='VALUES (:collection_path, :property_name, :property_value, current_timestamp, :user_no);';
- $params2[':user_no'] = $principal->user_no();
- $params2[':collection_path'] = $principal->dav_name().$v['name'].'/';
+ $qry = new AwlQuery( $sql, $params );
+ if ( $qry->Exec() ) {
+ $c->messages[] = i18n('Home ') . $v['type'] . i18n(' added. ') . $v['name'];
+ dbg_error_log("User", ":Write: Created user's home '%s' at '%s'", $v['type'], $params[':collection_path']);
- foreach( $v['default_properties'] AS $key => $val ) {
- $params2[':property_name'] = $key;
- $params2[':property_value'] = $val;
+ // create value for urn:ietf:params:xml:ns:caldav:supported-calendar-component-set property
+ if($v['type'] == 'calendar' && isset($v['calendar_components']) && $v['calendar_components'] != null && is_array($v['calendar_components']) && count($v['calendar_components'])) {
+ // convert the array to uppercase and allow only real calendar components
+ $components_clean=array_intersect(array_map("strtoupper", $v['calendar_components']), array('VEVENT', 'VTODO', 'VJOURNAL', 'VTIMEZONE', 'VFREEBUSY', 'VPOLL', 'VAVAILABILITY'));
- $qry2 = new AwlQuery( $sql2, $params2 );
- if ( $qry2->Exec() ) {
- dbg_error_log("User", ":Write: Created property '%s' for '%s' at '%s'", $params2[':property_name'], $v['type'], $params2[':collection_path']);
- }
- else {
- $c->messages[] = i18n("There was an error writing to the database.");
- return false;
+ // convert the $components_clean array to XML string
+ $result_xml='';
+ foreach($components_clean as $curr)
+ $result_xml.=sprintf('', $curr);
+
+ // handle the components XML string as user defined property (see below)
+ if($result_xml!='')
+ $v['default_properties']['urn:ietf:params:xml:ns:caldav:supported-calendar-component-set']=$result_xml;
+ }
+
+ // store all user defined properties (note: it also handles 'calendar_components' - see above)
+ if(isset($v['default_properties']) && $v['default_properties'] != null && is_array($v['default_properties']) && count($v['default_properties'])) {
+ $sql2='INSERT INTO property (dav_name, property_name, property_value, changed_on, changed_by) ';
+ $sql2.='VALUES (:collection_path, :property_name, :property_value, current_timestamp, :user_no);';
+ $params2[':user_no'] = $principal->user_no();
+ $params2[':collection_path'] = $principal->dav_name().$v['name'].'/';
+
+ foreach( $v['default_properties'] AS $key => $val ) {
+ $params2[':property_name'] = $key;
+ $params2[':property_value'] = $val;
+
+ $qry2 = new AwlQuery( $sql2, $params2 );
+ if ( $qry2->Exec() ) {
+ dbg_error_log("User", ":Write: Created property '%s' for '%s' at '%s'", $params2[':property_name'], $v['type'], $params2[':collection_path']);
+ }
+ else {
+ $c->messages[] = i18n("There was an error writing to the database.");
+ return false;
+ }
}
}
}
- }
- else {
- $c->messages[] = i18n("There was an error writing to the database.");
- return false;
+ else {
+ $c->messages[] = i18n("There was an error writing to the database.");
+ return false;
+ }
}
}
}