From b6cd452bd31bfd4b6b94b23fe54b424fdf901e61 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Thu, 18 Aug 2011 14:34:56 -0400
Subject: [PATCH] Backport changes from r5084 to r5090 to release branch

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

diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index eea5806..1d5df46 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -278,9 +278,6 @@
         $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';
         }
@@ -317,6 +314,16 @@
                 }
             }
         }
+        // check if the folder is shared, then disable subscription option on it
+        if (!$disabled && $folder['virtual'] && !empty($namespace)) {
+            $tmp_ns = array_merge((array)$namespace['other'], (array)$namespace['shared']);
+            foreach ($tmp_ns as $item) {
+                if (strpos($folder['id'], $item[0]) === 0) {
+                    $disabled = true;
+                    break;
+                }
+            }
+        }
 
         $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes),
             'foldername' => $folder['id']));
@@ -327,11 +334,6 @@
 
         $a_js_folders['rcmrow'.$idx] = array($folder_utf8,
             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));

--
Gitblit v1.9.1