alecpl
2011-07-29 4d784be2b9dbd1b0be8c35f17bae43eeee035062
- Fix 'exceptions' parameter of rcmail_mailbox_select() to handle directories on any level of the structure


1 files modified
13 ■■■■■ changed files
program/include/main.inc 13 ●●●●● patch | view | raw | blame | history
program/include/main.inc
@@ -1229,7 +1229,7 @@
  if ($p['noselection'])
    $select->add($p['noselection'], '');
  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames']);
  rcmail_render_folder_tree_select($a_mailboxes, $mbox, $p['maxlength'], $select, $p['realnames'], 0, $p['exceptions']);
  return $select;
}
@@ -1402,11 +1402,15 @@
 * @access private
 * @return string
 */
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0)
function rcmail_render_folder_tree_select(&$arrFolders, &$mbox_name, $maxlength, &$select, $realnames=false, $nestLevel=0, $exceptions=array())
{
  $out = '';
  foreach ($arrFolders as $key=>$folder) {
  foreach ($arrFolders as $key => $folder) {
    if (!empty($exceptions) && in_array($folder['id'], $exceptions)) {
      continue;
    }
    if (!$realnames && ($folder_class = rcmail_folder_classname($folder['id'])))
      $foldername = rcube_label($folder_class);
    else {
@@ -1420,7 +1424,8 @@
    $select->add(str_repeat(' ', $nestLevel*4) . $foldername, $folder['id']);
    if (!empty($folder['folders']))
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength, $select, $realnames, $nestLevel+1);
      $out .= rcmail_render_folder_tree_select($folder['folders'], $mbox_name, $maxlength,
        $select, $realnames, $nestLevel+1, $exceptions);
  }
  return $out;