-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; } } 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 { $mbx_response = sqimap_mailbox_select($imap_stream, $trash_folder); if ($mbx_response['EXISTS'] > 0) { sqimap_messages_flag ($imap_stream, 1, '*', '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 { $mbx_response = sqimap_mailbox_select($imap_stream, $trash_folder); if ($mbx_response['EXISTS'] > 0) { sqimap_messages_flag ($imap_stream, 1, '*', 'Deleted', true); sqimap_mailbox_expunge($imap_stream, $trash_folder, true); } } } } //function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) { function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree, $lastIndex = -1) { //echo("execute walkTreeInPreOrderDeleteFolders, lastindex = '$lastIndex'
\n"); if ($tree[$index]['doIHaveChildren']) { for ($j = 0; $j < count($tree[$index]['subNodes']); $j++) { walkTreeInPreOrderDeleteFolders($tree[$index]['subNodes'][$j], $imap_stream, $tree, $index); } if (($lastIndex == -1) or ($tree[$lastIndex]['value'] != $tree[$index]['value'])) sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); } else { if (($lastIndex == -1) or ($tree[$lastIndex]['value'] != $tree[$index]['value'])) sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); } } //function walkTreeInPostOrderCreatingFoldersUnderTrash($index, $imap_stream, $tree, $topFolderName) { function walkTreeInPostOrderCreatingFoldersUnderTrash($index, $imap_stream, $tree, $topFolderName, $lastSubFolderName = '') { global $trash_folder, $delimiter; // $position = strrpos($topFolderName, $delimiter) + 1; $position = strrpos($topFolderName, $delimiter); if ($position == false) { $position = 0; } else { $position += 1; } $subFolderName = substr($tree[$index]['value'], $position); if ($tree[$index]['doIHaveChildren']) { if ($subFolderName != $lastSubFolderName) sqimap_mailbox_create($imap_stream, $trash_folder . $delimiter . $subFolderName, ""); $mbx_response = sqimap_mailbox_select($imap_stream, $tree[$index]['value']); $messageCount = $mbx_response['EXISTS']; if ($messageCount > 0) sqimap_messages_copy($imap_stream, 1, '*', $trash_folder . $delimiter . $subFolderName); for ($j = 0;$j < count($tree[$index]['subNodes']); $j++) // walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]['subNodes'][$j], $imap_stream, $tree, $topFolderName); walkTreeInPostOrderCreatingFoldersUnderTrash($tree[$index]['subNodes'][$j], $imap_stream, $tree, $topFolderName, $subFolderName); } else { if ($subFolderName != $lastSubFolderName) sqimap_mailbox_create($imap_stream, $trash_folder . $delimiter . $subFolderName, ''); $mbx_response = sqimap_mailbox_select($imap_stream, $tree[$index]['value']); $messageCount = $mbx_response['EXISTS']; if ($messageCount > 0) sqimap_messages_copy($imap_stream, 1, '*', $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'] . '
'; } } ?>