don't issue imap commands when target mailbox is same as source mailbox.
authortokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 22 Jan 2006 12:08:33 +0000 (12:08 +0000)
committertokul <tokul@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Sun, 22 Jan 2006 12:08:33 +0000 (12:08 +0000)
reduces number of imap calls and fixes mailbox caching issues (message is
not visible on message list until cache is updated).
might fix imap server locking on MacOS cyrus (#1409453).

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

functions/imap_messages.php
functions/mailbox_display.php

index b4c62084f841376c4528462398419c5cd9f601f5..6aab5cf74af21e538a22cd3705340ce23ace5869 100755 (executable)
@@ -39,9 +39,14 @@ function sqimap_msgs_list_copy($imap_stream, $id, $mailbox, $handle_errors = tru
  * @param string $id The list of messages to move
  * @param string $mailbox The destination to move to
  * @param bool $handle_errors Show error messages in case of a NO, BAD or BYE response
+ * @param string $source_mailbox (since 1.5.1) name of source mailbox. It is used to 
+ *  validate that target mailbox != source mailbox.
  * @return bool If the move completed without errors
  */
-function sqimap_msgs_list_move($imap_stream, $id, $mailbox, $handle_errors = true) {
+function sqimap_msgs_list_move($imap_stream, $id, $mailbox, $handle_errors = true, $source_mailbox = false) {
+    if ($source_mailbox!==false && $source_mailbox==$mailbox) {
+        return false;
+    }
     $msgs_id = sqimap_message_list_squisher($id);
     if (sqimap_msgs_list_copy ($imap_stream, $id, $mailbox, $handle_errors)) {
         return sqimap_toggle_flag($imap_stream, $id, '\\Deleted', true, true);
index f2474c73f2e164e329bf815163af89ef9093f3ba..ea999a9638c8edb4553b72a9ae9d5978a4232c3c 100644 (file)
@@ -1270,7 +1270,7 @@ function handleMessageListForm($imapConnection,&$aMailbox,$sButton='',$aUid = ar
             $aUpdatedMsgs = sqimap_toggle_flag($imapConnection, $aUid, $sFlag, $bSet, true);
             break;
           case 'move':
-            $aUpdatedMsgs = sqimap_msgs_list_move($imapConnection,$aUid,$targetMailbox);
+            $aUpdatedMsgs = sqimap_msgs_list_move($imapConnection,$aUid,$targetMailbox,true,$mailbox);
             sqsession_register($targetMailbox,'lastTargetMailbox');
             $bExpunge = true;
             break;