From 43996a32975becfdc2fdbd3693727434ee0c25a5 Mon Sep 17 00:00:00 2001 From: Andrew Ruthven Date: Fri, 18 Feb 2022 21:54:35 +1300 Subject: [PATCH] Create .in and .out calendars on principal creation. Closes #227 --- inc/always.php.in | 2 ++ inc/auth-functions.php | 32 ++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/inc/always.php.in b/inc/always.php.in index 9a2e7e9c..c66b2a37 100644 --- a/inc/always.php.in +++ b/inc/always.php.in @@ -127,6 +127,8 @@ $c->allow_get_email_visibility = false; $c->permission_scan_depth = 2; $c->expand_pdo_parameters = true; $c->home_calendar_name = 'calendar'; +$c->home_out_calendar_name = '.out'; +$c->home_in_calendar_name = '.in'; $c->home_addressbook_name = 'addresses'; $c->carddav_max_resource_size = 6550000; $c->enable_row_linking = true; diff --git a/inc/auth-functions.php b/inc/auth-functions.php index 779cfd98..aa5eb832 100644 --- a/inc/auth-functions.php +++ b/inc/auth-functions.php @@ -86,9 +86,27 @@ function CreateHomeCollections( $username, $default_timezone = null ) { $c->default_collections = array(); if( !empty($c->home_calendar_name) ) - $c->default_collections[] = array( 'type' => 'calendar', 'name' => $c->home_calendar_name ); + $c->default_collections[] = array( + 'type' => 'calendar', + 'name' => $c->home_calendar_name + ); + if( !empty($c->home_out_calendar_name) ) + $c->default_collections[] = array( + 'type' => 'calendar', + 'name' => $c->home_out_calendar_name, + 'displayname_suffix' => ' Outbox' + ); + if( !empty($c->home_in_calendar_name) ) + $c->default_collections[] = array( + 'type' => 'calendar', + 'name' => $c->home_in_calendar_name, + 'displayname_suffix' => ' Inbox' + ); if( !empty($c->home_addressbook_name) ) - $c->default_collections[] = array( 'type' => 'addressbook', 'name' => $c->home_addressbook_name ); + $c->default_collections[] = array( + 'type' => 'addressbook', + 'name' => $c->home_addressbook_name + ); } if ( !is_array($c->default_collections) || !count($c->default_collections) ) return true; @@ -118,7 +136,13 @@ function CreateHomeCollections( $username, $default_timezone = null ) { $params[':parent_container'] = $principal->dav_name(); $params[':dav_etag'] = '-1'; $params[':collection_path'] = $principal->dav_name().$v['name'].'/'; - $params[':displayname'] = ( !isset($v['displayname']) || empty($v['displayname']) ? $user_fullname.( $v['type']=='calendar' ? ' calendar' : ' addressbook' ) : str_replace(array('%fn', '%rfn'), array($user_fullname, $user_rfullname), $v['displayname']) ); + 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 { + $params[':displayname'] = $user_fullname . ($v['type']=='calendar' ? ' calendar' : ' addressbook'); + } $params[':resourcetypes'] = ( $v['type']=='calendar' ? '' : '' ); $params[':is_calendar'] = ( $v['type']=='calendar' ? true : false ); $params[':is_addressbook'] = ( $v['type']=='addressbook' ? true : false ); @@ -126,7 +150,7 @@ function CreateHomeCollections( $username, $default_timezone = null ) { $qry = new AwlQuery( $sql, $params ); if ( $qry->Exec() ) { - $c->messages[] = i18n('Home '.( $v['type']=='calendar' ? 'calendar' : 'addressbook' ).' added.'); + $c->messages[] = i18n('Home '.( $v['type']=='calendar' ? 'calendar' : 'addressbook' ).' added.') . " " . $v['name']; dbg_error_log("User",":Write: Created user's home ".( $v['type']=='calendar' ? 'calendar' : 'addressbook' )." at '%s'", $params[':collection_path'] ); // create value for urn:ietf:params:xml:ns:caldav:supported-calendar-component-set property