From c8ad37c8c9aff7bba782fc13173164e0cca3ed14 Mon Sep 17 00:00:00 2001 From: "Aleksander Machniak (Kolab Systems)" Date: Sun, 10 Jul 2011 20:21:53 +0200 Subject: [PATCH] Clear Horde's folders cache on actions in Roundcube folder manager --- plugins/kolab_folders/kolab_folders.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/plugins/kolab_folders/kolab_folders.php b/plugins/kolab_folders/kolab_folders.php index 1490a0b4..d3609708 100644 --- a/plugins/kolab_folders/kolab_folders.php +++ b/plugins/kolab_folders/kolab_folders.php @@ -48,6 +48,8 @@ class kolab_folders extends rcube_plugin $this->add_hook('folder_form', array($this, 'folder_form')); $this->add_hook('folder_update', array($this, 'folder_save')); $this->add_hook('folder_create', array($this, 'folder_save')); + $this->add_hook('folder_delete', array($this, 'folder_save')); + $this->add_hook('folder_rename', array($this, 'folder_save')); $this->add_hook('folders_list', array($this, 'folders_list')); } @@ -238,6 +240,14 @@ class kolab_folders extends rcube_plugin */ function folder_save($args) { + // Folder actions from folders list + if (empty($args['record'])) { + // Just clear Horde folders cache and return + $this->clear_folders_cache(); + return $args; + } + + // Folder create/update with form $ctype = trim(get_input_value('_ctype', RCUBE_INPUT_POST)); $subtype = trim(get_input_value('_subtype', RCUBE_INPUT_POST)); $mbox = $args['record']['name']; @@ -304,6 +314,11 @@ class kolab_folders extends rcube_plugin } } + // Clear Horde folders cache + if ($result) { + $this->clear_folders_cache(); + } + $args['record']['class'] = self::folder_class_name($ctype); $args['record']['subscribe'] = $subscribe; $args['result'] = $result; @@ -490,4 +505,12 @@ class kolab_folders extends rcube_plugin return implode(' ', $class); } + + /** + * Clear Horde's folder cache. See Kolab_List::singleton(). + */ + private function clear_folders_cache() + { + unset($_SESSION['horde_session_objects']['kolab_folderlist']); + } }