** Checks whether or not the specified mailbox exists
******************************************************************************/
function sqimap_mailbox_exists ($imap_stream, $mailbox) {
+ if (! isset($mailbox))
+ return false;
fputs ($imap_stream, "a001 LIST \"\" \"$mailbox\"\r\n");
$mbx = sqimap_read_data($imap_stream, "a001", true, $response, $message);
- if ($mailbox) {
- return !!(ereg ("$mailbox", $mbx[0])); // To force into true/false
- }
+ return isset($mbx[0]);
}
/******************************************************************************
** formatted - nicely formatted folder name
** unformatted - unformatted, but with delimiter at end removed
** unformatted-dm - folder name as it appears in raw response
- ** unformatted-disp - unformatted without $folder_prefix
+ ** unformatted-disp - unformatted without $folder_prefix
**
******************************************************************************/
function sqimap_mailbox_parse ($line, $line_lsub, $dm) {
for ($g=0; $g < count($line); $g++) {
// Store the raw IMAP reply
- $boxes[$g]["raw"] = $line[$g];
+ if (isset($line[$g]))
+ $boxes[$g]["raw"] = $line[$g];
+ else
+ $boxes[$g]["raw"] = "";
+
// Count number of delimiters ($dm) in folder name
$mailbox = trim($line_lsub[$g]);
// a parent.
$boxesbyname[$mailbox] = $g;
$parentfolder = readMailboxParent($mailbox, $dm);
- if((eregi("^inbox".quotemeta($dm), $mailbox)) ||
- (ereg("^".$folder_prefix, $mailbox)) ||
- ( isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) {
+ if((strtolower(substr($mailbox, 0, 5)) == "inbox") ||
+ (substr($mailbox, 0, strlen($folder_prefix)) == $folder_prefix) ||
+ (isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) {
$indent = $dm_count - (countCharInString($folder_prefix, $dm));
- if ($indent)
+ if ($indent > 0)
$boxes[$g]["formatted"] = str_repeat(" ", $indent);
else
$boxes[$g]["formatted"] = '';
$boxes[$g]["formatted"] = $mailbox;
}
- $boxes[$g]["unformatted-dm"] = $mailbox;
+ $boxes[$g]['unformatted-dm'] = $mailbox;
if (substr($mailbox, -1) == $dm)
$mailbox = substr($mailbox, 0, strlen($mailbox) - 1);
- $boxes[$g]["unformatted"] = $mailbox;
- $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox);
- $boxes[$g]["id"] = $g;
+ $boxes[$g]['unformatted'] = $mailbox;
+ //$boxes[$g]['unformatted-disp'] = ereg_replace('^' . $folder_prefix, '', $mailbox);
+ if (substr($mailbox,0,strlen($folder_prefix))==$folder_prefix) {
+ $boxes[$g]['unformatted-disp'] = substr($mailbox, strlen($folder_prefix));
+ }
+ $boxes[$g]['id'] = $g;
- ereg("\(([^)]*)\)",$line[$g],$regs);
- $flags = trim(strtolower(str_replace("\\", "",$regs[1])));
+ if (isset($line[$g]))
+ ereg("\(([^)]*)\)",$line[$g],$regs);
+ $flags = trim(strtolower(str_replace('\\', '',$regs[1])));
if ($flags) {
- $boxes[$g]["flags"] = explode(" ", $flags);
+ $boxes[$g]['flags'] = explode(' ', $flags);
}
+ else
+ $boxes[$g]['flags'] = array();
}
return $boxes;
}
-
- /* patch from dave_michmerhuizen@yahoo.com
- * allows case insensativity when sorting folders
+
+ /* Apparently you must call a user function with usort instead
+ * of calling a built-in directly. Stupid.
+ * Patch from dave_michmerhuizen@yahoo.com
+ * Allows case insensitivity when sorting folders
*/
- function _icmp ($a, $b) {
- return strcasecmp($a, $b);
+ function user_strcasecmp($a, $b)
+ {
+ return strcasecmp($a, $b);
}
-
+
+
/******************************************************************************
** Returns sorted mailbox lists in several different ways.
** See comment on sqimap_mailbox_parse() for info about the returned array.
fputs ($imap_stream, "a001 LSUB \"\" \"*\"\r\n");
$lsub_ary = sqimap_read_data ($imap_stream, "a001", true, $response, $message);
- /** OS: we don't want to parse last element of array, 'cause it is OK command, so we unset it **/
- unset($lsub_ary[count($lsub_ary)-1]);
+ /** OS: we don't want to parse last element of array, 'cause it is OK command, so we unset it **/
+ /** LUKE: This introduced errors.. do a check first **/
+ if (substr($lsub_ary[count($lsub_ary)-1], 0, 4) == "* OK") {
+ unset($lsub_ary[count($lsub_ary)-1]);
+ }
for ($i=0;$i < count($lsub_ary); $i++) {
$sorted_lsub_ary[$i] = find_mailbox_name($lsub_ary[$i]);
}
$sorted_lsub_ary = $new_ary;
if (isset($sorted_lsub_ary)) {
- usort($sorted_lsub_ary, "_icmp");
+ usort($sorted_lsub_ary, "user_strcasecmp");
//sort($sorted_lsub_ary);
}
fputs ($imap_stream, "a001 LIST \"\" \"$mbx\"\r\n");
$read = sqimap_read_data ($imap_stream, "a001", true, $response, $message);
+ if (isset($sorted_list_ary[$i]))
+ $sorted_list_ary[$i] = "";
+ if (isset($read[0]))
$sorted_list_ary[$i] = $read[0];
- if (find_mailbox_name($sorted_list_ary[$i]) == "INBOX")
+ else
+ $sorted_list_ary[$i] = "";
+ if (isset($sorted_list_ary[$i]) && find_mailbox_name($sorted_list_ary[$i]) == "INBOX")
$inbox_in_list = true;
}
for ($i = 0; $i < count($boxes); $i++) {
if (strtolower($boxes[$i]["unformatted"]) == "inbox") {
$boxesnew[] = $boxes[$i];
- $boxes[$i]["used"] = true;
+ $used[$i] = true;
$i = count($boxes);
}
}
// Then list special folders and their subfolders
for ($i = 0 ; $i < count($boxes) ; $i++) {
if ($move_to_trash &&
- eregi("^" . quotemeta($trash_folder) . "(" .
- quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) {
+ eregi('^' . quotemeta($trash_folder) . '(' .
+ quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
$boxesnew[] = $boxes[$i];
- $boxes[$i]["used"] = true;
+ $used[$i] = true;
}
elseif ($move_to_sent &&
- eregi("^" . quotemeta($sent_folder) . "(" .
- quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) {
+ eregi('^' . quotemeta($sent_folder) . '(' .
+ quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) {
$boxesnew[] = $boxes[$i];
- $boxes[$i]["used"] = true;
+ $used[$i] = true;
}
}
// Put INBOX.* folders ahead of the rest
for ($i = 0; $i < count($boxes); $i++) {
- if (eregi("^inbox\.", $boxes[$i]["unformatted"]) &&
- (!isset($boxes[$i]["used"]) || $boxes[$i]["used"] == false)) {
+ if (eregi('^inbox\\.', $boxes[$i]["unformatted"]) &&
+ (!isset($used[$i]) || $used[$i] == false)) {
$boxesnew[] = $boxes[$i];
- $boxes[$i]["used"] = true;
+ $used[$i] = true;
}
}
// Rest of the folders
for ($i = 0; $i < count($boxes); $i++) {
if ((strtolower($boxes[$i]["unformatted"]) != "inbox") &&
- ($boxes[$i]["used"] == false)) {
+ (!isset($used[$i]) || $used[$i] == false)) {
$boxesnew[] = $boxes[$i];
- $boxes[$i]["used"] = true;
+ $used[$i] = true;
}
}
// a parent.
$boxesbyname[$mailbox] = $g;
$parentfolder = readMailboxParent($mailbox, $dm);
- if((eregi("^inbox".quotemeta($dm), $mailbox)) ||
- (ereg("^".$folder_prefix, $mailbox)) ||
+ if((eregi('^inbox'.quotemeta($dm), $mailbox)) ||
+ (ereg('^'.$folder_prefix, $mailbox)) ||
( isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) {
if ($dm_count)
$boxes[$g]["formatted"] = str_repeat(" ", $dm_count);
if (substr($mailbox, -1) == $dm)
$mailbox = substr($mailbox, 0, strlen($mailbox) - 1);
$boxes[$g]["unformatted"] = $mailbox;
- $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox);
+ $boxes[$g]["unformatted-disp"] = ereg_replace('^' . $folder_prefix, '', $mailbox);
$boxes[$g]["id"] = $g;
/** Now lets get the flags for this mailbox **/
$flags = substr($read_mlbx[0], strpos($read_mlbx[0], "(")+1);
$flags = substr($flags, 0, strpos($flags, ")"));
- $flags = str_replace("\\", "", $flags);
+ $flags = str_replace('\\', '', $flags);
$flags = trim(strtolower($flags));
if ($flags) {
- $boxes[$g]["flags"] = explode(" ", $flags);
+ $boxes[$g]['flags'] = explode(" ", $flags);
}
+ else
+ {
+ $boxes[$g]['flags'] = array();
+ }
}
$g++;
}