diff options
author | alecpl <alec@alec.pl> | 2011-02-28 17:59:13 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2011-02-28 17:59:13 +0000 |
commit | bbce3edd61d05e0aa0bade7364315f7840549d9e (patch) | |
tree | 508f91a4f17288b0d71e3b653d13209889205f6e /program/steps/settings/func.inc | |
parent | 29c54229cfbc104930e7743cecc212f53aed8a15 (diff) |
- Add simple ACL rights/namespace handling in folder manager (display folder's namespace, modify edit form fields according to MYRIGHTS)
Diffstat (limited to 'program/steps/settings/func.inc')
-rw-r--r-- | program/steps/settings/func.inc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index 271ee408a..6d3919faa 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -756,6 +756,46 @@ function rcmail_get_skins() return $skins; } + +function rcube_folder_options($mailbox) +{ + global $RCMAIL; + + $acl = $RCMAIL->imap->get_capability('ACL'); + $default_folders = (array) $RCMAIL->config->get('default_imap_folders'); + $options = array(); + + $options['name'] = $mailbox; + $options['options'] = $RCMAIL->imap->mailbox_options($mailbox, true); + $options['namespace'] = $RCMAIL->imap->mailbox_namespace($mailbox); + $options['rights'] = $acl ? (array)$RCMAIL->imap->my_rights($mailbox) : array(); + $options['special'] = in_array($mailbox, $default_folders); + $options['protected'] = $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; +} + + // register UI objects $OUTPUT->add_handlers(array( 'prefsframe' => 'rcmail_preferences_frame', |