diff options
Diffstat (limited to 'program/steps')
-rw-r--r-- | 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 eea58062b..1d5df46e9 100644 --- a/program/steps/settings/folders.inc +++ b/program/steps/settings/folders.inc @@ -278,9 +278,6 @@ function rcube_subscription_form($attrib) $display_folder = str_repeat(' ', $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 @@ function rcube_subscription_form($attrib) } } } + // 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'])); @@ -329,11 +336,6 @@ function rcube_subscription_form($attrib) 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']); |