X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=functions%2Ftree.php;h=9871d45a6e30d907446b29eea764a55f88371033;hb=74424a43ea5689ddeec0ab9a3d243125ba4f39e5;hp=7abcc2d0106d09c3bcd10616b743f7b39f3315a3;hpb=8703e42998ef2935a33b78256143c0f62d890b88;p=squirrelmail.git
diff --git a/functions/tree.php b/functions/tree.php
index 7abcc2d0..9871d45a 100644
--- a/functions/tree.php
+++ b/functions/tree.php
@@ -1,21 +1,32 @@
-
+ -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;
}
}
@@ -25,28 +36,58 @@
// create a new subNode
$newNodeIndex = count($tree);
- $tree[$newNodeIndex]["value"] = $value;
- $tree[$newNodeIndex]["doIHaveChildren"] = false;
+ $tree[$newNodeIndex]['value'] = $value;
+ $tree[$newNodeIndex]['doIHaveChildren'] = false;
- if ($tree[$parentNode]["doIHaveChildren"] == false) {
+ if ($tree[$parentNode]['doIHaveChildren'] == false) {
// make sure the parent knows it has children
- $tree[$parentNode]["subNodes"][0] = $newNodeIndex;
- $tree[$parentNode]["doIHaveChildren"] = true;
+ $tree[$parentNode]['subNodes'][0] = $newNodeIndex;
+ $tree[$parentNode]['doIHaveChildren'] = true;
} else {
- $nextSubNode = count($tree[$parentNode]["subNodes"]);
+ $nextSubNode = count($tree[$parentNode]['subNodes']);
// make sure the parent knows it has children
- $tree[$parentNode]["subNodes"][$nextSubNode] = $newNodeIndex;
+ $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);
+ }
+ }
+ } 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);
+ }
+ }
+ }
+ }
+
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);
+ 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"]);
+ sqimap_mailbox_delete($imap_stream, $tree[$index]['value']);
} else {
- sqimap_mailbox_delete($imap_stream, $tree[$index]["value"]);
+ sqimap_mailbox_delete($imap_stream, $tree[$index]['value']);
}
}
@@ -54,36 +95,36 @@
global $trash_folder;
$position = strrpos($topFolderName, $dm) + 1;
- $subFolderName = substr($tree[$index]["value"], $position);
+ $subFolderName = substr($tree[$index]['value'], $position);
- if ($tree[$index]["doIHaveChildren"]) {
+ if ($tree[$index]['doIHaveChildren']) {
sqimap_mailbox_create($imap_stream, $trash_folder . $dm . $subFolderName, "");
- sqimap_mailbox_select($imap_stream, $tree[$index]["value"]);
+ sqimap_mailbox_select($imap_stream, $tree[$index]['value']);
- $messageCount = sqimap_get_num_messages($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);
+ 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"]);
+ 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"]);
+ $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);
+ if ($tree[$index]['doIHaveChildren']) {
+ for ($j = 0; $j < count($tree[$index]['subNodes']); $j++) {
+ simpleWalkTreePre($tree[$index]['subNodes'][$j], $tree);
}
- echo $tree[$index]["value"] . "
";
+ echo $tree[$index]['value'] . '
';
} else {
- echo $tree[$index]["value"] . "
";
+ echo $tree[$index]['value'] . '
';
}
}
-?>
+?>
\ No newline at end of file