summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/include/rcube_imap.php56
-rw-r--r--program/steps/settings/func.inc45
2 files changed, 57 insertions, 44 deletions
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 31f196d4a..e1da538da 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -3489,6 +3489,62 @@ class rcube_imap
/**
+ * Returns extended information about the folder
+ *
+ * @param string $mailbox Folder name
+ *
+ * @return array Data
+ */
+ function mailbox_info($mailbox)
+ {
+ $acl = $this->get_capability('ACL');
+ $namespace = $this->get_namespace();
+ $options = array();
+
+ // check if the folder is a namespace prefix
+ if (!empty($namespace)) {
+ $mbox = $mailbox . $this->delimiter;
+ foreach ($namespace as $ns) {
+ foreach ($ns as $item) {
+ if ($item[0] === $mbox) {
+ $options['is_root'] = true;
+ break;
+ }
+ }
+ }
+ }
+
+ $options['name'] = $mailbox;
+ $options['options'] = $this->mailbox_options($mailbox, true);
+ $options['namespace'] = $this->mailbox_namespace($mailbox);
+ $options['rights'] = $acl && !$options['is_root'] ? (array)$this->my_rights($mailbox) : array();
+ $options['special'] = in_array($mailbox, $this->default_folders);
+
+ if (is_array($options['options'])) {
+ foreach ($options['options'] as $opt) {
+ $opt = strtolower($opt);
+ if ($opt == '\noselect' || $opt == '\nonexistent') {
+ $options['noselect'] = true;
+ }
+ }
+ }
+ else {
+ $options['noselect'] = true;
+ }
+
+ if (!empty($options['rights'])) {
+ $options['norename'] = !in_array('x', $options['rights']) &&
+ (!in_array('c', $options['rights']) || !in_array('d', $options['rights']));
+ if (!$options['noselect']) {
+ $options['noselect'] = !in_array('r', $options['rights']);
+ }
+ }
+
+ return $options;
+ }
+
+
+ /**
* Get message header names for rcube_imap_generic::fetchHeader(s)
*
* @return string Space-separated list of header names
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 72e278364..54f955282 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -788,52 +788,9 @@ function rcmail_folder_options($mailbox)
{
global $RCMAIL;
- $acl = $RCMAIL->imap->get_capability('ACL');
- $default_folders = (array) $RCMAIL->config->get('default_imap_folders');
- $delimiter = $RCMAIL->imap->get_hierarchy_delimiter();
- $namespace = $RCMAIL->imap->get_namespace();
- $options = array();
-
- // check if the folder is a namespace prefix
- if (!empty($namespace)) {
- $mbox = $mailbox . $delimiter;
- foreach ($namespace as $ns) {
- foreach ($ns as $item) {
- if ($item[0] === $mbox) {
- $options['is_root'] = true;
- break;
- }
- }
- }
- }
-
- $options['name'] = $mailbox;
- $options['options'] = $RCMAIL->imap->mailbox_options($mailbox, true);
- $options['namespace'] = $RCMAIL->imap->mailbox_namespace($mailbox);
- $options['rights'] = $acl && !$options['is_root'] ? (array)$RCMAIL->imap->my_rights($mailbox) : array();
- $options['special'] = in_array($mailbox, $default_folders);
+ $options = $RCMAIL->imap->mailbox_info($mailbox);
$options['protected'] = $options['is_root'] || ($options['special'] && $RCMAIL->config->get('protect_default_folders'));
- if (is_array($options['options'])) {
- foreach ($options['options'] as $opt) {
- $opt = strtolower($opt);
- if ($opt == '\noselect' || $opt == '\nonexistent') {
- $options['noselect'] = true;
- }
- }
- }
- else {
- $options['noselect'] = true;
- }
-
- if (!empty($options['rights'])) {
- $options['norename'] = !in_array('x', $options['rights']) &&
- (!in_array('c', $options['rights']) || !in_array('d', $options['rights']));
- if (!$options['noselect']) {
- $options['noselect'] = !in_array('r', $options['rights']);
- }
- }
-
return $options;
}