X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Ftree.php;h=12c46b14be4b631c4ef820e8013253eef6f35770;hb=a3dd7047e2c00552c2b21af2bbbe8f183e0a7781;hp=83e2a933438c0612c92fe10972cef3c8971f0b0d;hpb=3604c641607660243271429041e78d03a9c5d268;p=squirrelmail.git diff --git a/functions/tree.php b/functions/tree.php index 83e2a933..12c46b14 100644 --- a/functions/tree.php +++ b/functions/tree.php @@ -1,127 +1,140 @@ -1) - return $result; + for ($i=0;$i< count($tree[$treeIndexToStart]['subNodes']);$i++) { + $result = findParentForChild($value, $tree[$treeIndexToStart]['subNodes'][$i], $tree); + if ($result > -1) + return $result; } // if we aren't a child of one of the subNodes, must be a child of current node return $treeIndexToStart; - } else + } else return $treeIndexToStart; - } else { - // we aren't a child of this node at all - return -1; - } - } - - function addChildNodeToTree($comparisonValue, $value, &$tree) { - $parentNode = findParentForChild($comparisonValue, 0, $tree); - - // create a new subNode - $newNodeIndex = count($tree); - $tree[$newNodeIndex]["value"] = $value; - $tree[$newNodeIndex]["doIHaveChildren"] = false; - - if ($tree[$parentNode]["doIHaveChildren"] == false) { - // make sure the parent knows it has children - $tree[$parentNode]["subNodes"][0] = $newNodeIndex; - $tree[$parentNode]["doIHaveChildren"] = true; - } else { - $nextSubNode = count($tree[$parentNode]["subNodes"]); - // make sure the parent knows it has children - $tree[$parentNode]["subNodes"][$nextSubNode] = $newNodeIndex; - } - } - - 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 { + } else { + // we aren't a child of this node at all + return -1; + } +} + +function addChildNodeToTree($comparisonValue, $value, &$tree) { + $parentNode = findParentForChild($comparisonValue, 0, $tree); + + // create a new subNode + $newNodeIndex = count($tree); + $tree[$newNodeIndex]['value'] = $value; + $tree[$newNodeIndex]['doIHaveChildren'] = false; + + if ($tree[$parentNode]['doIHaveChildren'] == false) { + // make sure the parent knows it has children + $tree[$parentNode]['subNodes'][0] = $newNodeIndex; + $tree[$parentNode]['doIHaveChildren'] = true; + } else { + $nextSubNode = count($tree[$parentNode]['subNodes']); + // make sure the parent knows it has children + $tree[$parentNode]['subNodes'][$nextSubNode] = $newNodeIndex; + } +} + +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, true); + sqimap_mailbox_select($imap_stream, $trash_folder); + sqimap_messages_flag ($imap_stream, 1, $numMessages, 'Deleted', true); + sqimap_mailbox_expunge($imap_stream, $trash_folder, true); } - } - } else { - if ($tree[$index]["value"] != $trash_folder) { - sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]); - } else { + } + } 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, true); + sqimap_mailbox_select($imap_stream, $trash_folder); + sqimap_messages_flag ($imap_stream, 1, $numMessages, 'Deleted', true); + sqimap_mailbox_expunge($imap_stream, $trash_folder, true); } - } - } - } - - function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) { - if ($tree[$index]["doIHaveChildren"]) { - for ($j = 0; $j < count($tree[$index]["subNodes"]); $j++) { - walkTreeInPreOrderDeleteFolders($tree[$index]["subNodes"][$j], $imap_stream, $tree); - } - sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]); - } else { - sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]); - } - } - - function walkTreeInPostOrderCreatingFoldersUnderTrash($index, $imap_stream, $tree, $dm, $topFolderName) { - global $trash_folder; - - $position = strrpos($topFolderName, $dm) + 1; - $subFolderName = substr($tree[$index]["value"], $position); - - if ($tree[$index]["doIHaveChildren"]) { - sqimap_mailbox_create($imap_stream, $trash_folder . $dm . $subFolderName, ""); - sqimap_mailbox_select($imap_stream, $tree[$index]["value"]); - - $messageCount = sqimap_get_num_messages($imap_stream, $tree[$index]["value"]); - if ($messageCount > 0) - sqimap_messages_copy($imap_stream, 1, $messageCount, $trash_folder . $dm . $subFolderName); - - for ($j = 0;$j < count($tree[$index]["subNodes"]); $j++) - walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]["subNodes"][$j], $imap_stream, $tree, $dm, $topFolderName); - } else { - sqimap_mailbox_create($imap_stream, $trash_folder . $dm . $subFolderName, ""); - sqimap_mailbox_select($imap_stream, $tree[$index]["value"]); - - $messageCount = sqimap_get_num_messages($imap_stream, $tree[$index]["value"]); - if ($messageCount > 0) - sqimap_messages_copy($imap_stream, 1, $messageCount, $trash_folder . $dm . $subFolderName); - } - } - - function simpleWalkTreePre($index, $tree) { - if ($tree[$index]["doIHaveChildren"]) { - for ($j = 0; $j < count($tree[$index]["subNodes"]); $j++) { - simpleWalkTreePre($tree[$index]["subNodes"][$j], $tree); - } - echo $tree[$index]["value"] . "
"; - } else { - echo $tree[$index]["value"] . "
"; - } - } + } + } +} + +function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) { + if ($tree[$index]['doIHaveChildren']) { + for ($j = 0; $j < count($tree[$index]['subNodes']); $j++) { + walkTreeInPreOrderDeleteFolders($tree[$index]['subNodes'][$j], $imap_stream, $tree); + } + sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); + } else { + sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); + } +} + +function walkTreeInPostOrderCreatingFoldersUnderTrash($index, $imap_stream, $tree, $topFolderName) { + global $trash_folder, $delimiter; + + $position = strrpos($topFolderName, $delimiter) + 1; + $subFolderName = substr($tree[$index]['value'], $position); + + if ($tree[$index]['doIHaveChildren']) { + sqimap_mailbox_create($imap_stream, $trash_folder . $delimiter . $subFolderName, ""); + sqimap_mailbox_select($imap_stream, $tree[$index]['value']); + + $messageCount = sqimap_get_num_messages($imap_stream, $tree[$index]['value']); + if ($messageCount > 0) + sqimap_messages_copy($imap_stream, 1, $messageCount, $trash_folder . $delimiter . $subFolderName); + + for ($j = 0;$j < count($tree[$index]['subNodes']); $j++) + walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]['subNodes'][$j], $imap_stream, $tree, $topFolderName); + } else { + sqimap_mailbox_create($imap_stream, $trash_folder . $delimiter . $subFolderName, ''); + sqimap_mailbox_select($imap_stream, $tree[$index]['value']); + + $messageCount = sqimap_get_num_messages($imap_stream, $tree[$index]['value']); + if ($messageCount > 0) + sqimap_messages_copy($imap_stream, 1, $messageCount, $trash_folder . $delimiter . $subFolderName); + } +} + +function simpleWalkTreePre($index, $tree) { + if ($tree[$index]['doIHaveChildren']) { + for ($j = 0; $j < count($tree[$index]['subNodes']); $j++) { + simpleWalkTreePre($tree[$index]['subNodes'][$j], $tree); + } + echo $tree[$index]['value'] . '
'; + } else { + echo $tree[$index]['value'] . '
'; + } +} ?>