From: stevetruckstuff Date: Wed, 30 Aug 2006 20:45:56 +0000 (+0000) Subject: Split sqimap_mailbox_option_list() into two functions to facilitate template development. X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=f5b3b0fc5f07d42975b0a9104d4a70cadb254efa Split sqimap_mailbox_option_list() into two functions to facilitate template development. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@11657 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/functions/imap_mailbox.php b/functions/imap_mailbox.php index e9f9d6a4..40ceac2d 100755 --- a/functions/imap_mailbox.php +++ b/functions/imap_mailbox.php @@ -651,26 +651,13 @@ function sqimap_mailbox_parse ($line) { } /** - * Returns list of options (to be echoed into select statement - * based on available mailboxes and separators - * Caller should surround options with and - * any formatting. - * @param stream $imap_stream imap connection resource to query for mailboxes - * @param array $show_selected array containing list of mailboxes to pre-select (0 if none) - * @param array $folder_skip array of folders to keep out of option list (compared in lower) - * @param $boxes list of already fetched boxes (for places like folder panel, where - * you know these options will be shown 3 times in a row.. (most often unset). - * @param string $flag (since 1.4.1) flag to check for in mailbox flags, used to filter out mailboxes. - * 'noselect' by default to remove unselectable mailboxes. - * 'noinferiors' used to filter out folders that can not contain subfolders. - * NULL to avoid flag check entirely. - * NOTE: noselect and noiferiors are used internally. The IMAP representation is - * \NoSelect and \NoInferiors - * @param boolean $use_long_format (since 1.4.1) override folder display preference and always show full folder name. - * @return string html formated mailbox selection options - * @since 1.3.2 + * Returns an array of mailboxes available. Separated from sqimap_mailbox_option_list() + * below for template development. + * + * @author Steve Brown + * @since 1.5.2 */ -function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_skip = 0, $boxes = 0, +function sqimap_mailbox_option_array($imap_stream, $folder_skip = 0, $boxes = 0, $flag = 'noselect', $use_long_format = false ) { global $username, $data_dir, $translate_special_folders, $sent_folder, $trash_folder, $draft_folder; @@ -688,6 +675,7 @@ function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_sk $boxes = sqimap_mailbox_list($imap_stream); } + $a = array(); foreach ($boxes as $boxes_part) { if ($flag == NULL || (is_array($boxes_part['flags']) && !in_array($flag, $boxes_part['flags']))) { @@ -745,14 +733,58 @@ function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_sk break; } } - if ($show_selected != 0 && in_array($lowerbox, $show_selected) ) { - $mbox_options .= '' . "\n"; - } else { - $mbox_options .= '' . "\n"; + + $a[htmlspecialchars($box)] = $box2; + } + } + + return $a; +} + +/** + * Returns list of options (to be echoed into select statement + * based on available mailboxes and separators + * Caller should surround options with and + * any formatting. + * @param stream $imap_stream imap connection resource to query for mailboxes + * @param array $show_selected array containing list of mailboxes to pre-select (0 if none) + * @param array $folder_skip array of folders to keep out of option list (compared in lower) + * @param $boxes list of already fetched boxes (for places like folder panel, where + * you know these options will be shown 3 times in a row.. (most often unset). + * @param string $flag (since 1.4.1) flag to check for in mailbox flags, used to filter out mailboxes. + * 'noselect' by default to remove unselectable mailboxes. + * 'noinferiors' used to filter out folders that can not contain subfolders. + * NULL to avoid flag check entirely. + * NOTE: noselect and noiferiors are used internally. The IMAP representation is + * \NoSelect and \NoInferiors + * @param boolean $use_long_format (since 1.4.1) override folder display preference and always show full folder name. + * @return string html formated mailbox selection options + * @since 1.3.2 + */ +function sqimap_mailbox_option_list($imap_stream, $show_selected = 0, $folder_skip = 0, $boxes = 0, + $flag = 'noselect', $use_long_format = false ) { + global $username, $data_dir, $translate_special_folders, $sent_folder, + $trash_folder, $draft_folder; + + $boxes = sqimap_mailbox_option_array($imap_stream, $folder_skip, $boxes, $flag, $use_long_format); + + $str = ''; + foreach ($boxes as $value=>$option) { + $lowerbox = strtolower(htmlspecialchars($value)); + $sel = false; + if ($show_selected != 0) { + reset($show_selected); + while (!$sel && (list($x, $val) = each($show_selected))) { + if (strtolower($value) == strtolower(htmlspecialchars($val))) { + $sel = true; + } } } + + $str .= '\n"; } - return $mbox_options; + + return $str; } /**