From 210438a6be905b25991a88c28fcbfbfa09ad0034 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Tue, 26 Jul 2011 09:22:11 -0400
Subject: [PATCH] - Unsubscribe from non-existing folders automaticly on folders listing

---
 program/steps/settings/folders.inc |   11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 982b21a..6a773df 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -267,7 +267,8 @@
     // create list of available folders
     foreach ($list_folders as $i => $folder) {
         $idx        = $i + 1;
-        $subscribed = in_array($folder['id'], $a_subscribed);
+        $sub_key    = array_search($folder['id'], $a_subscribed);
+        $subscribed = $sub_key !== false;
         $protected  = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders']));
         $noselect   = false;
         $classes    = array($i%2 ? 'even' : 'odd');
@@ -276,6 +277,9 @@
         $folder_utf8    = rcube_charset_convert($folder['id'], 'UTF7-IMAP');
         $display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level'])
             . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);
+
+        if ($sub_key !== false)
+            unset($a_subscribed[$sub_key]);
 
         if ($folder['virtual']) {
             $classes[] = 'virtual';
@@ -325,6 +329,11 @@
             Q($display_folder), $protected || $folder['virtual']);
     }
 
+    // Unsubscribe from non-existing folders
+    foreach ($a_subscribed as $folder) {
+        $IMAP->unsubscribe($folder);
+    }
+
     $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table));
 
     $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']);

--
Gitblit v1.9.1