/** * Outputs a complete SquirrelMail page header, starting with <!doctype> and * including the default menu bar. Uses displayHtmlHeader and takes * JavaScript and locale settings into account. * * @param array color the array of theme colors * @param string mailbox the current mailbox name to display * @param string xtra extra html code to add * @param bool session * @return void */ function displayPageHeader($color, $mailbox, $xtra = '', $session = false) { global $hide_sm_attributions, $PHP_SELF, $frame_top, $compose_new_win, $compose_width, $compose_height, $attachemessages, $provider_name, $provider_uri, $javascript_on, $default_use_mdn, $mdn_user_support, $startMessage; sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION); sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); $module = substr($PHP_SELF, (strlen($PHP_SELF) - strlen($base_uri)) * -1); if ($qmark = strpos($module, '?')) { $module = substr($module, 0, $qmark); } if (!isset($frame_top)) { $frame_top = '_top'; } if ($session) { $compose_uri = $base_uri . 'src/compose.php?mailbox=' . urlencode($mailbox) . '&attachedmessages=true&session=' . "{$session}"; } else { $compose_uri = $base_uri . 'src/compose.php?newmessage=1'; $session = 0; } if ($javascript_on) { switch ($module) { case 'src/read_body.php': $js = ''; // compose in new window code if ($compose_new_win == '1') { if (!preg_match("/^[0-9]{3,4}\$/", $compose_width)) { $compose_width = '640'; } if (!preg_match("/^[0-9]{3,4}\$/", $compose_height)) { $compose_height = '550'; } $js .= "function comp_in_new_form(comp_uri, button, myform) {\n" . ' if (!comp_uri) {' . "\n" . ' comp_uri = "' . $compose_uri . "\";\n" . ' }' . "\n" . ' comp_uri += "&" + button.name + "=1";' . "\n" . ' for ( var i=0; i < myform.elements.length; i++ ) {' . "\n" . ' if ( myform.elements[i].type == "checkbox" && myform.elements[i].checked )' . "\n" . ' comp_uri += "&" + myform.elements[i].name + "=1";' . "\n" . ' }' . "\n" . ' var newwin = window.open(comp_uri' . ', "_blank",' . '"width=' . $compose_width . ',height=' . $compose_height . ',scrollbars=yes,resizable=yes,status=yes");' . "\n" . "}\n\n"; $js .= "function comp_in_new(comp_uri) {\n" . " if (!comp_uri) {\n" . ' comp_uri = "' . $compose_uri . "\";\n" . ' }' . "\n" . ' var newwin = window.open(comp_uri' . ', "_blank",' . '"width=' . $compose_width . ',height=' . $compose_height . ',scrollbars=yes,resizable=yes,status=yes");' . "\n" . "}\n\n"; } // javascript for sending read receipts if ($default_use_mdn && $mdn_user_support) { $js .= 'function sendMDN() {' . "\n" . " mdnuri=window.location+'&sendreceipt=1'; " . "var newwin = window.open(mdnuri,'right');" . "\n}\n\n"; } // if any of the above passes, add the JS tags too. if ($js) { $js = "\n" . '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . $js . "// -->\n</script>\n"; } displayHtmlHeader('SquirrelMail', $js); $onload = $xtra; break; case 'src/compose.php': $js = '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . "function checkForm() {\n"; global $action, $reply_focus; if (strpos($action, 'reply') !== FALSE && $reply_focus) { if ($reply_focus == 'select') { $js .= "document.forms['compose'].body.select();}\n"; } else { if ($reply_focus == 'focus') { $js .= "document.forms['compose'].body.focus();}\n"; } else { if ($reply_focus == 'none') { $js .= "}\n"; } } } } else { if ($reply_focus == 'none') { $js .= "}\n"; } else { $js .= "var f = document.forms.length;\n" . "var i = 0;\n" . "var pos = -1;\n" . "while( pos == -1 && i < f ) {\n" . "var e = document.forms[i].elements.length;\n" . "var j = 0;\n" . "while( pos == -1 && j < e ) {\n" . "if ( document.forms[i].elements[j].type == 'text' ) {\n" . "pos = j;\n" . "}\n" . "j++;\n" . "}\n" . "i++;\n" . "}\n" . "if( pos >= 0 ) {\n" . "document.forms[i-1].elements[pos].focus();\n" . "}\n" . "}\n"; } } $js .= "// -->\n" . "</script>\n"; $onload = 'onload="checkForm();"'; displayHtmlHeader('SquirrelMail', $js); break; default: $js = '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . "function checkForm() {\n" . "var f = document.forms.length;\n" . "var i = 0;\n" . "var pos = -1;\n" . "while( pos == -1 && i < f ) {\n" . "var e = document.forms[i].elements.length;\n" . "var j = 0;\n" . "while( pos == -1 && j < e ) {\n" . "if ( document.forms[i].elements[j].type == 'text' " . "|| document.forms[i].elements[j].type == 'password' ) {\n" . "pos = j;\n" . "}\n" . "j++;\n" . "}\n" . "i++;\n" . "}\n" . "if( pos >= 0 ) {\n" . "document.forms[i-1].elements[pos].focus();\n" . "}\n" . "{$xtra}\n" . "}\n"; if ($compose_new_win == '1') { if (!preg_match("/^[0-9]{3,4}\$/", $compose_width)) { $compose_width = '640'; } if (!preg_match("/^[0-9]{3,4}\$/", $compose_height)) { $compose_height = '550'; } $js .= "function comp_in_new(comp_uri) {\n" . " if (!comp_uri) {\n" . ' comp_uri = "' . $compose_uri . "\";\n" . ' }' . "\n" . ' var newwin = window.open(comp_uri' . ', "_blank",' . '"width=' . $compose_width . ',height=' . $compose_height . ',scrollbars=yes,resizable=yes,status=yes");' . "\n" . "}\n\n"; } $js .= "// -->\n" . "</script>\n"; $onload = 'onload="checkForm();"'; displayHtmlHeader('SquirrelMail', $js); break; } } else { /* do not use JavaScript */ displayHtmlHeader('SquirrelMail'); $onload = ''; } echo "<body text=\"{$color['8']}\" bgcolor=\"{$color['4']}\" link=\"{$color['7']}\" vlink=\"{$color['7']}\" alink=\"{$color['7']}\" {$onload}>\n\n"; /** Here is the header and wrapping table **/ $shortBoxName = htmlspecialchars(imap_utf7_decode_local(readShortMailboxName($mailbox, $delimiter))); if ($shortBoxName == 'INBOX') { $shortBoxName = _("INBOX"); } echo "<a name=\"pagetop\"></a>\n" . html_tag('table', '', '', $color[4], 'border="0" width="100%" cellspacing="0" cellpadding="2"') . "\n" . html_tag('tr', '', '', $color[9]) . "\n" . html_tag('td', '', 'left') . "\n"; if ($shortBoxName != '' && strtolower($shortBoxName) != 'none') { echo ' ' . _("Current Folder") . ": <b>{$shortBoxName} </b>\n"; } else { echo ' '; } echo " </td>\n" . html_tag('td', '', 'right') . "<b>\n"; displayInternalLink('src/signout.php', _("Sign Out"), $frame_top); echo "</b></td>\n" . " </tr>\n" . html_tag('tr', '', '', $color[4]) . "\n" . ($hide_sm_attributions ? html_tag('td', '', 'left', '', 'colspan="2"') : html_tag('td', '', 'left')) . "\n"; $urlMailbox = urlencode($mailbox); echo makeComposeLink('src/compose.php?mailbox=' . $urlMailbox . '&startMessage=' . $startMessage); echo " \n"; displayInternalLink('src/addressbook.php', _("Addresses")); echo " \n"; displayInternalLink('src/folders.php', _("Folders")); echo " \n"; displayInternalLink('src/options.php', _("Options")); echo " \n"; displayInternalLink("src/search.php?mailbox={$urlMailbox}", _("Search")); echo " \n"; displayInternalLink('src/help.php', _("Help")); echo " \n"; do_hook('menuline'); echo " </td>\n"; if (!$hide_sm_attributions) { echo html_tag('td', '', 'right') . "\n"; if (!isset($provider_uri)) { $provider_uri = 'http://www.squirrelmail.org/'; } if (!isset($provider_name)) { $provider_name = 'SquirrelMail'; } echo '<a href="' . $provider_uri . '" target="_blank">' . $provider_name . '</a>'; echo "</td>\n"; } echo " </tr>\n" . "</table><br />\n\n"; }
/** * Returns a list of all folders, subscribed or not */ function sqimap_mailbox_list_all($imap_stream) { global $list_special_folders_first, $folder_prefix, $delimiter; $ssid = sqimap_session_id(); $lsid = strlen($ssid); fputs($imap_stream, $ssid . " LIST \"{$folder_prefix}\" *\r\n"); $read_ary = sqimap_read_data($imap_stream, $ssid, true, $response, $message); $g = 0; $phase = 'inbox'; $fld_pre_length = strlen($folder_prefix); for ($i = 0, $cnt = count($read_ary); $i < $cnt; $i++) { /* Another workaround for EIMS */ if (isset($read_ary[$i + 1]) && ereg("^(\\* [A-Z]+.*)\\{[0-9]+\\}([ \n\r\t]*)\$", $read_ary[$i], $regs)) { $i++; $read_ary[$i] = $regs[1] . '"' . addslashes(trim($read_ary[$i])) . '"' . $regs[2]; } if (substr($read_ary[$i], 0, $lsid) != $ssid) { /* Store the raw IMAP reply */ $boxes[$g]['raw'] = $read_ary[$i]; /* Count number of delimiters ($delimiter) in folder name */ $mailbox = find_mailbox_name($read_ary[$i]); $dm_count = substr_count($mailbox, $delimiter); if (substr($mailbox, -1) == $delimiter) { /* If name ends in delimiter - decrement count by one */ $dm_count--; } /* Format folder name, but only if it's a INBOX.* or has a parent. */ $boxesallbyname[$mailbox] = $g; $parentfolder = readMailboxParent($mailbox, $delimiter); if (eregi('^inbox' . quotemeta($delimiter), $mailbox) || ereg('^' . $folder_prefix, $mailbox) || isset($boxesallbyname[$parentfolder]) && strlen($parentfolder) > 0) { if ($dm_count) { $boxes[$g]['formatted'] = str_repeat(' ', $dm_count); } else { $boxes[$g]['formatted'] = ''; } $boxes[$g]['formatted'] .= imap_utf7_decode_local(readShortMailboxName($mailbox, $delimiter)); } else { $boxes[$g]['formatted'] = imap_utf7_decode_local($mailbox); } $boxes[$g]['unformatted-dm'] = $mailbox; if (substr($mailbox, -1) == $delimiter) { $mailbox = substr($mailbox, 0, strlen($mailbox) - 1); } $boxes[$g]['unformatted'] = $mailbox; $boxes[$g]['unformatted-disp'] = substr($mailbox, $fld_pre_length); $boxes[$g]['id'] = $g; /* Now lets get the flags for this mailbox */ $read_mlbx = $read_ary[$i]; // $read_mlbx = sqimap_run_command ($imap_stream, "LIST \"\" \"$mailbox\"", // true, $response, $message); /* Another workaround for EIMS */ // if (isset($read_mlbx[1]) && // ereg("^(\\* [A-Z]+.*)\\{[0-9]+\\}([ \n\r\t]*)$", $read_mlbx[0], $regs)) { // $read_mlbx[0] = $regs[1] . '"' . addslashes(trim($read_mlbx[1])) . '"' . $regs[2]; // } // echo $read_mlbx[0] .' raw 2 <br>'; $flags = substr($read_mlbx, strpos($read_mlbx, '(') + 1); $flags = substr($flags, 0, strpos($flags, ')')); $flags = str_replace('\\', '', $flags); $flags = trim(strtolower($flags)); if ($flags) { $boxes[$g]['flags'] = explode(' ', $flags); } else { $boxes[$g]['flags'] = array(); } } $g++; } if (is_array($boxes)) { sort($boxes); } return $boxes; }
/** * Formats a mailbox into parts for the $boxesall array * * The parts are: * <ul> * <li>raw - Raw LIST/LSUB response from the IMAP server * <li>formatted - nicely formatted folder name * <li>unformatted - unformatted, but with delimiter at end removed * <li>unformatted-dm - folder name as it appears in raw response * <li>unformatted-disp - unformatted without $folder_prefix * <li>id - TODO: document me * <li>flags - TODO: document me * </ul> * Before 1.2.0 used third argument for delimiter. * * Before 1.5.1 used second argument for lsub line. Argument was removed in order to use * find_mailbox_name() on the raw input. Since 1.5.1 includes RFC3501 names in flags * array (for example, "\NoSelect" in addition to "noselect") * @param array $line * @return array * @since 1.0 or older * @todo document id and flags keys in boxes array and function arguments. */ function sqimap_mailbox_parse($line) { global $folder_prefix, $delimiter; /* Process each folder line */ for ($g = 0, $cnt = count($line); $g < $cnt; ++$g) { /* Store the raw IMAP reply */ if (isset($line[$g])) { $boxesall[$g]['raw'] = $line[$g]; } else { $boxesall[$g]['raw'] = ''; } /* Count number of delimiters ($delimiter) in folder name */ $mailbox = find_mailbox_name($line[$g]); $dm_count = substr_count($mailbox, $delimiter); if (substr($mailbox, -1) == $delimiter) { /* If name ends in delimiter, decrement count by one */ $dm_count--; } /* Format folder name, but only if it's a INBOX.* or has a parent. */ $boxesallbyname[$mailbox] = $g; $parentfolder = readMailboxParent($mailbox, $delimiter); if (strtolower(substr($mailbox, 0, 5)) == "inbox" || substr($mailbox, 0, strlen($folder_prefix)) == $folder_prefix || isset($boxesallbyname[$parentfolder]) && strlen($parentfolder) > 0) { $indent = $dm_count - substr_count($folder_prefix, $delimiter); if ($indent > 0) { $boxesall[$g]['formatted'] = str_repeat(' ', $indent); } else { $boxesall[$g]['formatted'] = ''; } $boxesall[$g]['formatted'] .= imap_utf7_decode_local(readShortMailboxName($mailbox, $delimiter)); } else { $boxesall[$g]['formatted'] = imap_utf7_decode_local($mailbox); } $boxesall[$g]['unformatted-dm'] = $mailbox; if (substr($mailbox, -1) == $delimiter) { $mailbox = substr($mailbox, 0, strlen($mailbox) - 1); } $boxesall[$g]['unformatted'] = $mailbox; if (substr($mailbox, 0, strlen($folder_prefix)) == $folder_prefix) { $mailbox = substr($mailbox, strlen($folder_prefix)); } $boxesall[$g]['unformatted-disp'] = $mailbox; $boxesall[$g]['id'] = $g; $boxesall[$g]['flags'] = array(); if (isset($line[$g]) && preg_match('/\\(([^)]*)\\)/', $line[$g], $regs)) { /** * Since 1.5.1 flags are stored with RFC3501 naming * and also the old way for backwards compatibility * so for example "\NoSelect" and "noselect" */ $flags = trim($regs[1]); if ($flags) { $flagsarr = explode(' ', $flags); $flagsarrnew = $flagsarr; // add old type foreach ($flagsarr as $flag) { $flagsarrnew[] = strtolower(str_replace('\\', '', $flag)); } $boxesall[$g]['flags'] = $flagsarrnew; } } } return $boxesall; }
function displayPageHeader($color, $mailbox, $xtra = '', $session = false) { global $hide_sm_attributions, $frame_top, $compose_new_win, $compose_width, $compose_height, $attachemessages, $provider_name, $provider_uri, $javascript_on, $default_use_mdn, $mdn_user_support, $startMessage, $org_title; sqgetGlobalVar('base_uri', $base_uri, SQ_SESSION); sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); if (!isset($frame_top)) { $frame_top = '_top'; } if ($session) { $compose_uri = $base_uri . 'src/compose.php?mailbox=' . urlencode($mailbox) . '&session=' . "{$session}"; } else { $compose_uri = $base_uri . 'src/compose.php?newmessage=1'; $session = 0; } // only output JavaScript if actually turned on if ($javascript_on || strpos($xtra, 'new_js_autodetect_results.value')) { if (!defined('PAGE_NAME')) { define('PAGE_NAME', NULL); } switch (PAGE_NAME) { case 'read_body': $js = ''; // compose in new window code if ($compose_new_win == '1') { if (!preg_match("/^[0-9]{3,4}\$/", $compose_width)) { $compose_width = '640'; } if (!preg_match("/^[0-9]{3,4}\$/", $compose_height)) { $compose_height = '550'; } $js .= "function comp_in_new(comp_uri) {\n" . " if (!comp_uri) {\n" . ' comp_uri = "' . $compose_uri . "\";\n" . ' }' . "\n" . ' var newwin = window.open(comp_uri' . ', "_blank",' . '"width=' . $compose_width . ',height=' . $compose_height . ',scrollbars=yes,resizable=yes,status=yes");' . "\n" . "}\n\n"; } // javascript for sending read receipts if ($default_use_mdn && $mdn_user_support) { $js .= "function sendMDN() {\n" . " mdnuri=window.location+'&sendreceipt=1';\n" . " window.location = mdnuri;\n" . "\n}\n\n"; } // if any of the above passes, add the JS tags too. if ($js) { $js = "\n" . '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . $js . "// -->\n</script>\n"; } displayHtmlHeader($org_title, $js); $onload = $xtra; break; case 'compose': $js = '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . "var alreadyFocused = false;\n" . "function checkForm() {\n" . "\n if (alreadyFocused) return;\n"; global $action, $reply_focus; if (strpos($action, 'reply') !== FALSE && $reply_focus) { if ($reply_focus == 'select') { $js .= "document.forms['compose'].body.select();}\n"; } else { if ($reply_focus == 'focus') { $js .= "document.forms['compose'].body.focus();}\n"; } else { if ($reply_focus == 'none') { $js .= "}\n"; } } } } else { if ($reply_focus == 'none') { $js .= "}\n"; } else { $js .= " var f = document.forms.length;\n" . " var i = 0;\n" . " var pos = -1;\n" . " while( pos == -1 && i < f ) {\n" . " var e = document.forms[i].elements.length;\n" . " var j = 0;\n" . " while( pos == -1 && j < e ) {\n" . " if ( document.forms[i].elements[j].type == 'text' ) {\n" . " pos = j;\n" . " }\n" . " j++;\n" . " }\n" . " i++;\n" . " }\n" . " if( pos >= 0 ) {\n" . " document.forms[i-1].elements[pos].focus();\n" . " }\n" . "}\n"; } } $js .= "// -->\n" . "</script>\n"; $onload = 'onload="checkForm();"'; displayHtmlHeader($org_title, $js); break; default: $js = '<script language="JavaScript" type="text/javascript">' . "\n<!--\n" . "function checkForm() {\n" . " var f = document.forms.length;\n" . " var i = 0;\n" . " var pos = -1;\n" . " while( pos == -1 && i < f ) {\n" . " var e = document.forms[i].elements.length;\n" . " var j = 0;\n" . " while( pos == -1 && j < e ) {\n" . " if ( document.forms[i].elements[j].type == 'text' " . " || document.forms[i].elements[j].type == 'password' ) {\n" . " pos = j;\n" . " }\n" . " j++;\n" . " }\n" . " i++;\n" . " }\n" . " if( pos >= 0 ) {\n" . " document.forms[i-1].elements[pos].focus();\n" . " }\n" . " {$xtra}\n" . "}\n"; if ($compose_new_win == '1') { if (!preg_match("/^[0-9]{3,4}\$/", $compose_width)) { $compose_width = '640'; } if (!preg_match("/^[0-9]{3,4}\$/", $compose_height)) { $compose_height = '550'; } $js .= "function comp_in_new(comp_uri) {\n" . " if (!comp_uri) {\n" . ' comp_uri = "' . $compose_uri . "\";\n" . ' }' . "\n" . ' var newwin = window.open(comp_uri' . ', "_blank",' . '"width=' . $compose_width . ',height=' . $compose_height . ',scrollbars=yes,resizable=yes,status=yes");' . "\n" . "}\n\n"; } $js .= "// -->\n" . "</script>\n"; $onload = 'onload="checkForm();"'; displayHtmlHeader($org_title, $js); } // end switch module } else { // JavaScript off displayHtmlHeader($org_title); $onload = ''; } $google = "\n<script type=\"text/javascript\"><!--\ngoogle_ad_client = \"pub-0768633782379013\";\n//ehcp-webmail-468x60\ngoogle_ad_slot = \"6865422642\";\ngoogle_ad_width = 468;\ngoogle_ad_height = 60;\n//--></script>\n<script type=\"text/javascript\"\nsrc=\"http://pagead2.googlesyndication.com/pagead/show_ads.js\">\n</script>\n"; echo "<body text=\"{$color['8']}\" bgcolor=\"{$color['4']}\" link=\"{$color['7']}\" vlink=\"{$color['7']}\" alink=\"{$color['7']}\" {$onload}>\n\n {$google} "; /** Here is the header and wrapping table **/ $shortBoxName = htmlspecialchars(imap_utf7_decode_local(readShortMailboxName($mailbox, $delimiter))); if ($shortBoxName == 'INBOX') { $shortBoxName = _("INBOX"); } echo "<a name=\"pagetop\"></a>\n" . html_tag('table', '', '', $color[4], 'border="0" width="100%" cellspacing="0" cellpadding="2"') . "\n" . html_tag('tr', '', '', $color[9]) . "\n" . html_tag('td', '', 'left') . "\n"; if ($shortBoxName != '' && strtolower($shortBoxName) != 'none') { echo ' ' . _("Current Folder") . ": <b>{$shortBoxName} </b>\n"; } else { echo ' '; } echo " </td>\n" . html_tag('td', '', 'right') . "<b>\n"; displayInternalLink('src/signout.php', _("Sign Out"), $frame_top); echo "</b></td>\n" . " </tr>\n" . html_tag('tr', '', '', $color[4]) . "\n" . ($hide_sm_attributions ? html_tag('td', '', 'left', '', 'colspan="2"') : html_tag('td', '', 'left')) . "\n"; $urlMailbox = urlencode($mailbox); $startMessage = (int) $startMessage; echo makeComposeLink('src/compose.php?mailbox=' . $urlMailbox . '&startMessage=' . $startMessage); echo " \n"; displayInternalLink('src/addressbook.php', _("Addresses")); echo " \n"; displayInternalLink('src/folders.php', _("Folders")); echo " \n"; displayInternalLink('src/options.php', _("Options")); echo " \n"; displayInternalLink("src/search.php?mailbox={$urlMailbox}", _("Search")); echo " \n"; displayInternalLink('src/help.php', _("Help")); echo " \n"; do_hook('menuline'); echo " </td>\n"; if (!$hide_sm_attributions) { echo html_tag('td', '', 'right') . "\n"; if (!isset($provider_uri)) { $provider_uri = 'http://squirrelmail.org/'; } if (!isset($provider_name)) { $provider_name = 'SquirrelMail'; } echo '<a href="' . $provider_uri . '" target="_blank">' . $provider_name . '</a>'; echo "</td>\n"; } echo " </tr>\n" . "</table><br>\n\n"; }
/** * Returns a list of all folders, subscribed or not */ function sqimap_mailbox_list_all($imap_stream) { global $list_special_folders_first, $folder_prefix, $delimiter; $read_ary = sqimap_run_command($imap_stream, "LIST \"{$folder_prefix}\" *", true, $response, $message, false); $read_ary = compact_mailboxes_response($read_ary); $g = 0; $phase = 'inbox'; $fld_pre_length = strlen($folder_prefix); for ($i = 0, $cnt = count($read_ary); $i < $cnt; $i++) { /* Store the raw IMAP reply */ $boxes[$g]['raw'] = $read_ary[$i]; /* Count number of delimiters ($delimiter) in folder name */ $mailbox = find_mailbox_name($read_ary[$i]); $dm_count = substr_count($mailbox, $delimiter); if (substr($mailbox, -1) == $delimiter) { /* If name ends in delimiter - decrement count by one */ $dm_count--; } /* Format folder name, but only if it's a INBOX.* or has a parent. */ $boxesallbyname[$mailbox] = $g; $parentfolder = readMailboxParent($mailbox, $delimiter); if (eregi('^inbox' . quotemeta($delimiter), $mailbox) || ereg('^' . $folder_prefix, $mailbox) || isset($boxesallbyname[$parentfolder]) && strlen($parentfolder) > 0) { if ($dm_count) { $boxes[$g]['formatted'] = str_repeat(' ', $dm_count); } else { $boxes[$g]['formatted'] = ''; } $boxes[$g]['formatted'] .= imap_utf7_decode_local(readShortMailboxName($mailbox, $delimiter)); } else { $boxes[$g]['formatted'] = imap_utf7_decode_local($mailbox); } $boxes[$g]['unformatted-dm'] = $mailbox; if (substr($mailbox, -1) == $delimiter) { $mailbox = substr($mailbox, 0, strlen($mailbox) - 1); } $boxes[$g]['unformatted'] = $mailbox; $boxes[$g]['unformatted-disp'] = substr($mailbox, $fld_pre_length); $boxes[$g]['id'] = $g; /* Now lets get the flags for this mailbox */ $read_mlbx = $read_ary[$i]; $flags = substr($read_mlbx, strpos($read_mlbx, '(') + 1); $flags = substr($flags, 0, strpos($flags, ')')); $flags = str_replace('\\', '', $flags); $flags = trim(strtolower($flags)); if ($flags) { $boxes[$g]['flags'] = explode(' ', $flags); } else { $boxes[$g]['flags'] = array(); } $g++; } if (is_array($boxes)) { sort($boxes); } return $boxes; }