Bladeren bron

added fix for emptying trash where you don't actually delete the Trash folder,
but rather mark messages as deleted and expunge. do delete the subfolders though.

nehresma 25 jaren geleden
bovenliggende
commit
0cdac7bd16
2 gewijzigde bestanden met toevoegingen van 33 en 3 verwijderingen
  1. 32 0
      functions/tree.php
  2. 1 3
      src/empty_trash.php

+ 32 - 0
functions/tree.php

@@ -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) {
@@ -45,6 +47,36 @@
       }
    }
 
+   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++) {

+ 1 - 3
src/empty_trash.php

@@ -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";