Allow configuring new calendar path

This commit is contained in:
Mateusz Kijowski 2024-04-08 04:47:16 +02:00
parent 9295620e18
commit aaee300d0d
2 changed files with 16 additions and 2 deletions

View file

@ -157,6 +157,12 @@ $config['kolab_invitation_calendars'] = false;
// )
// );
// Path used to create new calendars in a CalDav source.
// The following replacement variables are supported:
// %u - Source user name
// %i - Newly generated calendar UUID
// $config['calendar_caldav_new_calendar_path'] = '/calendars/%u/%i'
// Driver to provide a resource directory ('ldap' is the only implementation yet).
// Leave empty or commented to disable resources support.
// $config['calendar_resources_driver'] = 'ldap';

View file

@ -273,10 +273,10 @@ class caldav_driver extends calendar_driver
$server_url = self::_encode_url($source['caldav_url']);
$server_path = rtrim(parse_url($server_url, PHP_URL_PATH), '/');
$calId = $this->cal->generate_uid();
$path = "/calendars/$source[caldav_user]/$calId";
$path = $this->_get_new_calendar_path($source);
self::debug_log("Creating new calendar \"$cal[name]\" with path $path at: " . $server_url);
$client = new caldav_client($server_url, $source['caldav_user'], $source['caldav_pass']);
if($client->create_calendar($server_path . $path, $cal['name'], isset($cal['color']) ? $cal['color'] : 'cc0000')) {
@ -2349,4 +2349,12 @@ else {
$p = $e->encrypt($pass);
return base64_encode($p);
}
private function _get_new_calendar_path($source) {
$template = $this->rc->config->get('calendar_caldav_new_calendar_path', '/calendars/%u/%i');
return strtr($template, [
'%u' => $source['caldav_user'],
'%i' => $this->cal->generate_uid(),
]);
}
}