From 1519cc5356c599eebc7b54051d65905c5cb3e744 Mon Sep 17 00:00:00 2001 From: kink Date: Thu, 31 Mar 2005 13:10:39 +0000 Subject: [PATCH] - Create a generic function to empty a folder tree, thanks to Randy Smith (#1145578). git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@9171 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- ChangeLog | 2 ++ functions/tree.php | 27 ++++++++++++++++++++------- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index eabfe0ef..9d5ff534 100644 --- a/ChangeLog +++ b/ChangeLog @@ -290,6 +290,8 @@ Version 1.5.1 -- CVS - mbstring internal encoding is switched to ASCII, if mbstring.func_overload is enabled (#929644). - Fixed checking for quota when appending to Sent folder (#1172694). + - Create a generic function to empty a folder tree, thanks to + Randy Smith (#1145578). Version 1.5.0 -------------------- diff --git a/functions/tree.php b/functions/tree.php index 784328a3..f8503b81 100644 --- a/functions/tree.php +++ b/functions/tree.php @@ -6,8 +6,8 @@ * Copyright (c) 1999-2005 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * - * This code provides various string manipulation functions that are - * used by the rest of the SquirrelMail code. + * This file provides functions to walk trees of folders, for + * instance to delete a whole tree. * * @version $Id$ * @package squirrelmail @@ -81,14 +81,27 @@ function addChildNodeToTree($comparisonValue, $value, &$tree) { */ function walkTreeInPreOrderEmptyTrash($index, $imap_stream, $tree) { global $trash_folder; + walkTreeInPreOrderEmptyFolder($index, $imap_stream, $tree, $trash_folder); +} + +/** + * Recursively walk the tree of mailboxes in the given folder and delete all folders and messages + * + * @param int index the place in the tree to start, usually 0 + * @param stream imap_stream the IMAP connection to send commands to + * @param array tree the tree to walk + * @param mailbox the name of the root folder to empty + * @return void + */ +function walkTreeInPreOrderEmptyFolder($index, $imap_stream, $tree, $mailbox) { 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) { + if ($tree[$index]['value'] != $mailbox) { sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); } else { - $mbx_response = sqimap_mailbox_select($imap_stream, $trash_folder); + $mbx_response = sqimap_mailbox_select($imap_stream, $mailbox); if ($mbx_response['EXISTS'] > 0) { sqimap_messages_flag ($imap_stream, 1, '*', 'Deleted', true); // CLOSE === EXPUNGE and UNSELECT @@ -96,10 +109,10 @@ function walkTreeInPreOrderEmptyTrash($index, $imap_stream, $tree) { } } } else { - if ($tree[$index]['value'] != $trash_folder) { + if ($tree[$index]['value'] != $mailbox) { sqimap_mailbox_delete($imap_stream, $tree[$index]['value']); } else { - $mbx_response = sqimap_mailbox_select($imap_stream, $trash_folder); + $mbx_response = sqimap_mailbox_select($imap_stream, $mailbox); if ($mbx_response['EXISTS'] > 0) { sqimap_messages_flag ($imap_stream, 1, '*', 'Deleted', true); // CLOSE === EXPUNGE and UNSELECT @@ -180,4 +193,4 @@ function simpleWalkTreePre($index, $tree) { echo $tree[$index]['value'] . '
'; } } -?> \ No newline at end of file +?> -- 2.25.1