X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Ftree.php;h=99a7198b041d19eb73eca94cf591006d39f7027b;hb=76e6ff644da9490671c2142a042165730ea6c0ea;hp=7abcc2d0106d09c3bcd10616b743f7b39f3315a3;hpb=8703e42998ef2935a33b78256143c0f62d890b88;p=squirrelmail.git diff --git a/functions/tree.php b/functions/tree.php index 7abcc2d0..99a7198b 100644 --- a/functions/tree.php +++ b/functions/tree.php @@ -1,21 +1,29 @@ - -1) return $result; } + // if we aren't a child of one of the subNodes, must be a child of current node return $treeIndexToStart; } else return $treeIndexToStart; } else { + // we aren't a child of this node at all return -1; } } @@ -39,6 +47,38 @@ } } + function walkTreeInPreOrderEmptyTrash($index, $imap_stream, $tree) { + global $trash_folder; + if ($tree[$index]["doIHaveChildren"]) { + for ($j = 0; $j < count($tree[$index]["subNodes"]); $j++) { + walkTreeInPreOrderEmptyTrash($tree[$index]["subNodes"][$j], $imap_stream, $tree); + } + if ($tree[$index]["value"] != $trash_folder) { + sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]); + } else { + $numMessages = sqimap_get_num_messages($imap_stream, $trash_folder); + if ($numMessages > 0) { + sqimap_mailbox_select($imap_stream, $trash_folder); + sqimap_messages_flag ($imap_stream, 1, $numMessages, "Deleted"); + sqimap_mailbox_expunge($imap_stream, $trash_folder); + sqimap_mailbox_close($imap_stream); + } + } + } else { + if ($tree[$index]["value"] != $trash_folder) { + sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]); + } else { + $numMessages = sqimap_get_num_messages($imap_stream, $trash_folder); + if ($numMessages > 0) { + sqimap_mailbox_select($imap_stream, $trash_folder); + sqimap_messages_flag ($imap_stream, 1, $numMessages, "Deleted"); + sqimap_mailbox_expunge($imap_stream, $trash_folder); + sqimap_mailbox_close($imap_stream); + } + } + } + } + function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) { if ($tree[$index]["doIHaveChildren"]) { for ($j = 0; $j < count($tree[$index]["subNodes"]); $j++) { @@ -66,6 +106,7 @@ for ($j = 0;$j < count($tree[$index]["subNodes"]); $j++) walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]["subNodes"][$j], $imap_stream, $tree, $dm, $topFolderName); + sqimap_mailbox_close($imap_stream); } else { sqimap_mailbox_create($imap_stream, $trash_folder . $dm . $subFolderName, ""); sqimap_mailbox_select($imap_stream, $tree[$index]["value"]); @@ -73,6 +114,7 @@ $messageCount = sqimap_get_num_messages($imap_stream, $tree[$index]["value"]); if ($messageCount > 0) sqimap_messages_copy($imap_stream, 1, $messageCount, $trash_folder . $dm . $subFolderName); + sqimap_mailbox_close($imap_stream); } }