Source for file empty_trash.php

Documentation is available at empty_trash.php

  1. <?php
  2.  
  3. /**
  4.  * empty_trash.php
  5.  *
  6.  * Handles deleting messages from the trash folder without
  7.  * deleting subfolders.
  8.  *
  9.  * @copyright 1999-2020 The SquirrelMail Project Team
  10.  * @license http://opensource.org/licenses/gpl-license.php GNU Public License
  11.  * @version $Id: empty_trash.php 14845 2020-01-07 08:09:34Z pdontthink $
  12.  * @package squirrelmail
  13.  */
  14.  
  15. /** This is the empty_trash page */
  16. define('PAGE_NAME', 'empty_trash');
  17.  
  18. /**
  19.  * Include the SquirrelMail initialization file.
  20.  */
  21. require('../include/init.php');
  22.  
  23. require(SM_PATH . 'functions/imap_general.php');
  24. require(SM_PATH . 'functions/imap_messages.php');
  25. require(SM_PATH . 'functions/tree.php');
  26.  
  27. /* get those globals */
  28.  
  29. sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION);
  30.  
  31. /* finished globals */
  32.  
  33. // first do a security check
  34. sqgetGlobalVar('smtoken', $submitted_token, SQ_GET, '');
  35. sm_validate_security_token($submitted_token, -1, TRUE);
  36.  
  37. global $imap_stream_options; // in case not defined in config
  38. $imap_stream = sqimap_login($username, false, $imapServerAddress, $imapPort, 0, $imap_stream_options);
  39.  
  40. $mailbox = $trash_folder;
  41. $boxes = sqimap_mailbox_list($imap_stream);
  42.  
  43. /*
  44.  * According to RFC2060, a DELETE command should NOT remove inferiors (sub folders)
  45.  *    so lets go through the list of subfolders and remove them before removing the
  46.  *    parent.
  47.  */
  48.  
  49. /** First create the top node in the tree **/
  50. $numboxes = count($boxes);
  51. for ($i = 0; $i < $numboxes; $i++) {
  52.     if (($boxes[$i]['unformatted'] == $mailbox) && (strlen($boxes[$i]['unformatted']) == strlen($mailbox))) {
  53.         $foldersTree[0]['value'] = $mailbox;
  54.         $foldersTree[0]['doIHaveChildren'] = false;
  55.         continue;
  56.     }
  57. }
  58. /*
  59.  * Now create the nodes for subfolders of the parent folder
  60.  * You can tell that it is a subfolder by tacking the mailbox delimiter
  61.  *    on the end of the $mailbox string, and compare to that.
  62.  */
  63. $j = 0;
  64. for ($i = 0; $i < $numboxes; $i++) {
  65.     if (substr($boxes[$i]['unformatted'], 0, strlen($mailbox . $delimiter)) == ($mailbox . $delimiter)) {
  66.         addChildNodeToTree($boxes[$i]['unformatted'], $boxes[$i]['unformatted-dm'], $foldersTree);
  67.     }
  68. }
  69.  
  70. // now lets go through the tree and delete the folders
  71. walkTreeInPreOrderEmptyTrash(0, $imap_stream, $foldersTree);
  72. // update mailbox cache
  73. $mailboxes=sqimap_get_mailboxes($imap_stream,true,$show_only_subscribed_folders);
  74. sqimap_logout($imap_stream);
  75.  
  76. // close session properly before redirecting
  77.  
  78. $location = get_location();
  79. header ("Location: $location/left_main.php");

Documentation generated on Mon, 13 Jan 2020 04:22:25 +0100 by phpDocumentor 1.4.3