diff -urN functions.orig/tree.php functions/tree.php --- functions.orig/tree.php Mon Dec 27 17:03:46 2004 +++ functions/tree.php Sun Nov 6 20:49:14 2005 @@ -121,7 +121,12 @@ function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) { if ($tree[$index]['doIHaveChildren']) { for ($j = 0; $j < count($tree[$index]['subNodes']); $j++) { + if (($index != 0) or ($tree[$index]['value'] != $tree[$tree[$index]['subNodes'][$j]]['value'])) { walkTreeInPreOrderDeleteFolders($tree[$index]['subNodes'][$j], $imap_stream, $tree); + } else { + $new_index = $tree[$index]['subNodes'][$j]; + walkTreeInPreOrderDeleteFolders($tree[$new_index]['subNodes'][$j], $imap_stream, $tree); + } } sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); } else { @@ -151,7 +156,12 @@ // after copy close the mailbox to get in unselected state sqimap_run_command($imap_stream,'CLOSE',false,$response,$message); for ($j = 0;$j < count($tree[$index]['subNodes']); $j++) + if (($index != 0) or ($tree[$index]['value'] != $tree[$tree[$index]['subNodes'][$j]]['value'])) { walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]['subNodes'][$j], $imap_stream, $tree, $topFolderName); + } else { + $new_index = $tree[$index]['subNodes'][$j]; + walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$new_index]['subNodes'][$j], $imap_stream, $tree, $topFolderName); + } } else { sqimap_mailbox_create($imap_stream, $trash_folder . $delimiter . $subFolderName, ''); $mbx_response = sqimap_mailbox_select($imap_stream, $tree[$index]['value']);