- fputs($imapConnection, "1 LIST \"$mailbox\" *\n");
- $data = imapReadData($imapConnection , "1", false, $response, $message);
- while (substr($data[0], strpos($data[0], " ")+1, 4) == "LIST") {
- for ($i = 0; $i < count($boxesUnformatted); $i++) {
- if (($boxesUnformatted[$i] == $mailbox) ||
- (substr($boxesUnformatted[$i], 0, strlen($mailbox . $dm)) == $mailbox . $dm)) {
- removeFolder($imapConnection, "$boxesUnformatted[$i]");
- }
+ $boxes = sqimap_mailbox_list($imap_stream);
+ global $delimiter;
+
+ // According to RFC2060, a DELETE command should NOT remove inferiors (sub folders)
+ // so lets go through the list of subfolders and remove them before removing the
+ // parent.
+
+ /** First create the top node in the tree **/
+ for ($i = 0;$i < count($boxes);$i++) {
+ if (($boxes[$i]["unformatted"] == $mailbox) && (strlen($boxes[$i]["unformatted"]) == strlen($mailbox))) {
+ $foldersTree[0]["value"] = $mailbox;
+ $foldersTree[0]["doIHaveChildren"] = false;
+ continue;
+ }
+ }
+ // Now create the nodes for subfolders of the parent folder
+ // You can tell that it is a subfolder by tacking the mailbox delimiter
+ // on the end of the $mailbox string, and compare to that.
+ $j = 0;
+ for ($i = 0;$i < count($boxes);$i++) {
+ if (substr($boxes[$i]["unformatted"], 0, strlen($mailbox . $delimiter)) == ($mailbox . $delimiter)) {
+ addChildNodeToTree($boxes[$i]["unformatted"], $boxes[$i]["unformatted-dm"], $foldersTree);