From 2138b3ed6a620840f774a481c2a1b64125ceb0e7 Mon Sep 17 00:00:00 2001 From: "Aleksander Machniak (Kolab Systems)" Date: Wed, 10 Aug 2011 19:01:09 +0200 Subject: [PATCH 1/2] Fixed editing settings of shared calendar folder (#318) --- .../calendar/drivers/kolab/kolab_driver.php | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/plugins/calendar/drivers/kolab/kolab_driver.php b/plugins/calendar/drivers/kolab/kolab_driver.php index 8ff8c7cd..cfaaf8f4 100644 --- a/plugins/calendar/drivers/kolab/kolab_driver.php +++ b/plugins/calendar/drivers/kolab/kolab_driver.php @@ -235,17 +235,6 @@ class kolab_driver extends calendar_driver } } - // Check access rights to the parent folder - if (strlen($parent)) { - $this->rc->imap_connect(); - $parent_opts = $this->rc->imap->mailbox_info($parent); - if ($parent_opts['namespace'] != 'personal' - && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts))) - ) { - return false; - } - } - if (!empty($options) && ($options['protected'] || $options['norename'])) { $folder = $oldfolder; } @@ -258,6 +247,17 @@ class kolab_driver extends calendar_driver $folder = $this->rc->imap->mod_mailbox($folder, 'in'); } + // Check access rights to the parent folder + if (strlen($parent) && (!strlen($oldfolder) || $oldfolder != $folder)) { + $this->rc->imap_connect(); + $parent_opts = $this->rc->imap->mailbox_info($parent); + if ($parent_opts['namespace'] != 'personal' + && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts))) + ) { + return false; + } + } + // update the folder name if (strlen($oldfolder)) { if ($oldfolder != $folder) From 3b714f34d763b227179e4c6b68973cb6f05de0a3 Mon Sep 17 00:00:00 2001 From: "Aleksander Machniak (Kolab Systems)" Date: Wed, 10 Aug 2011 19:23:00 +0200 Subject: [PATCH 2/2] Fixed parent folder check --- .../kolab_addressbook/kolab_addressbook.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/plugins/kolab_addressbook/kolab_addressbook.php b/plugins/kolab_addressbook/kolab_addressbook.php index 1d88afb4..d0f81555 100644 --- a/plugins/kolab_addressbook/kolab_addressbook.php +++ b/plugins/kolab_addressbook/kolab_addressbook.php @@ -445,17 +445,6 @@ class kolab_addressbook extends rcube_plugin } } - // Check access rights to the parent folder - if (!$error && strlen($path)) { - $this->rc->imap_connect(); - $parent_opts = $this->rc->imap->mailbox_info($path); - if ($parent_opts['namespace'] != 'personal' - && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts))) - ) { - $error = rcube_label('parentnotwritable'); - } - } - if (!$error) { if (!empty($options) && ($options['protected'] || $options['norename'])) { $folder = $oldfolder; @@ -469,6 +458,19 @@ class kolab_addressbook extends rcube_plugin $folder = $this->rc->imap->mod_mailbox($folder, 'in'); } + // Check access rights to the parent folder + if (strlen($path) && (!strlen($oldfolder) || $oldfolder != $folder)) { + $this->rc->imap_connect(); + $parent_opts = $this->rc->imap->mailbox_info($path); + if ($parent_opts['namespace'] != 'personal' + && (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts))) + ) { + $error = rcube_label('parentnotwritable'); + } + } + } + + if (!$error) { // update the folder name if (strlen($oldfolder)) { $type = 'update';