added fix for emptying trash where you don't actually delete the Trash folder,
authornehresma <nehresma@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 2 Apr 2000 20:43:42 +0000 (20:43 +0000)
committernehresma <nehresma@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 2 Apr 2000 20:43:42 +0000 (20:43 +0000)
but rather mark messages as deleted and expunge.  do delete the subfolders though.

git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@378 7612ce4b-ef26-0410-bec9-ea0150e637f0

functions/tree.php
src/empty_trash.php

index 25c3ed99f706955ec5d78716ab01bfb2eed395d9..02482b3ca494f011e4af9bbc481f77cd8017edbd 100644 (file)
@@ -3,6 +3,8 @@
 
    if (!isset($imap_php))
       include("../functions/imap.php");
+   if (!isset($config_php))
+      include("../config/config.php");
 
    // Recursive function to find the correct parent for a new node
    function findParentForChild($value, $treeIndexToStart, $tree) {
       }
    }
 
+   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);
+            }
+         }
+      } 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);
+            }
+         }
+      }
+   }
+   
    function walkTreeInPreOrderDeleteFolders($index, $imap_stream, $tree) {
       if ($tree[$index]["doIHaveChildren"]) {
          for ($j = 0; $j < count($tree[$index]["subNodes"]); $j++) {
index 4a4d8d9d16e6e5bed4676f4c9158c1df6d5c1e5f..85450fb21659b460808fd288d774d2fc59c811c1 100644 (file)
@@ -42,9 +42,7 @@
    }
    
    // now lets go through the tree and delete the folders
-   walkTreeInPreOrderDeleteFolders(0, $imap_stream, $foldersTree);
-   // now lets create a new, fresh trash folder
-   sqimap_mailbox_create($imap_stream, "$trash_folder", "");
+   walkTreeInPreOrderEmptyTrash(0, $imap_stream, $foldersTree);
 
    sqimap_mailbox_select($imap_stream, $trash_folder, $numMessages);
    echo "<HTML><BODY TEXT=\"$color[8]\" BGCOLOR=\"$color[4]\" LINK=\"$color[7]\" VLINK=\"$color[7]\" ALINK=\"$color[7]\">\n";