Adding Basque translators' info.
[squirrelmail.git] / src / move_messages.php
index 9ee018bfcde85dc41f292d75d4c0a600939d0b8c..4de2c2322ff6aba729af812d1468ddfb46c99476 100644 (file)
@@ -8,11 +8,14 @@
  *
  * Enables message moving between folders on the IMAP server.
  *
- * $Id$
+ * @version $Id$
  * @package squirrelmail
  */
 
-/** Path for SquirrelMail required files. */
+/**
+ * Path for SquirrelMail required files.
+ * @ignore
+ */
 define('SM_PATH','../');
 
 /* SquirrelMail required files. */
@@ -30,7 +33,7 @@ if ( !sqgetGlobalVar('composesession', $composesession, SQ_SESSION) ) {
 
 function attachSelectedMessages($msg, $imapConnection) {
     global $username, $attachment_dir, $startMessage,
-           $data_dir, $composesession, $uid_support,
+           $data_dir, $composesession,
            $msgs, $show_num, $compose_messages;
 
     if (!isset($compose_messages)) {
@@ -54,10 +57,9 @@ function attachSelectedMessages($msg, $imapConnection) {
     $composeMessage->reply_rfc822_header = '';
 
     foreach($msg as $id) {
-        $body_a = sqimap_run_command($imapConnection, "FETCH $id RFC822", true, $response, $readmessage, $uid_support);
+        $body_a = sqimap_run_command($imapConnection, "FETCH $id RFC822", true, $response, $readmessage, TRUE);
 
         if ($response == 'OK') {
-
             // fetch the subject for the message with $id from msgs.
             // is there a more efficient way to do this?
             foreach($msgs as $k => $vals) {
@@ -89,8 +91,6 @@ function attachSelectedMessages($msg, $imapConnection) {
     return $composesession;
 }
 
-
-
 /* get globals */
 sqgetGlobalVar('key',       $key,           SQ_COOKIE);
 sqgetGlobalVar('username',  $username,      SQ_SESSION);
@@ -113,9 +113,12 @@ sqgetGlobalVar('expungeButton',   $expungeButton,   SQ_POST);
 sqgetGlobalVar('undeleteButton',  $undeleteButton,  SQ_POST);
 sqgetGlobalVar('markRead',        $markRead,        SQ_POST);
 sqgetGlobalVar('markUnread',      $markUnread,      SQ_POST);
+sqgetGlobalVar('markFlagged',     $markFlagged,     SQ_POST);
+sqgetGlobalVar('markUnflagged',   $markUnflagged,   SQ_POST);
 sqgetGlobalVar('attache',         $attache,         SQ_POST);
 sqgetGlobalVar('location',        $location,        SQ_POST);
 sqgetGlobalVar('bypass_trash',    $bypass_trash,    SQ_POST);
+sqgetGlobalVar('dmn',             $is_dmn,          SQ_POST);
 
 /* end of get globals */
 
@@ -135,10 +138,10 @@ if ($targetMailbox != $lastTargetMailbox) {
     sqsession_register($lastTargetMailbox, 'lastTargetMailbox');
 }
 $exception = false;
+$change    = false;
 
 do_hook('move_before_move');
 
-
 /*
     Move msg list sorting up here, as it is used several times,
     makes it more efficient to do it in one place for the code
@@ -150,44 +153,41 @@ if (isset($msg) && is_array($msg)) {
         $id[] = $uid;
     }
 }
+$num_ids = count($id);
 
 // expunge-on-demand if user isn't using move_to_trash or auto_expunge
 if(isset($expungeButton)) {
-    $cnt = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
-    if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
-        if ($startMessage > $show_num) {
-            $location = set_url_var($location,'startMessage',$startMessage-$show_num,false);
-        } else {
-            $location = set_url_var($location,'startMessage',1,false);
-        }
-    }
+    $num_ids = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
+    $change = true;
 } elseif(isset($undeleteButton)) {
     // undelete messages if user isn't using move_to_trash or auto_expunge
     // Removes \Deleted flag from selected messages
-    if (count($id)) {
+    if ($num_ids) {
         sqimap_toggle_flag($imapConnection, $id, '\\Deleted',false,true);
     } else {
         $exception = true;
     }
 } elseif (!isset($moveButton)) {
-    if (count($id)) {
-        $cnt = count($id);
+    if ($num_ids) {
         if (!isset($attache)) {
-            $button_action = concat_hook_function('move_messages_button_action');
             if (isset($markRead)) {
                 sqimap_toggle_flag($imapConnection, $id, '\\Seen',true,true);
             } else if (isset($markUnread)) {
                 sqimap_toggle_flag($imapConnection, $id, '\\Seen',false,true);
-            } else  {
-                if (!$button_action) {
+            } else if (isset($markFlagged)) {
+                sqimap_toggle_flag($imapConnection, $id, '\\Flagged', true, true);
+            } else if (isset($markUnflagged)) {
+                sqimap_toggle_flag($imapConnection, $id, '\\Flagged', false, true);
+            } else  { // Delete messages
+                if (!boolean_hook_function('move_messages_button_action', NULL, 1)) {
                     sqimap_msgs_list_delete($imapConnection, $mailbox, $id,$bypass_trash);
                     if ($auto_expunge) {
-                        $cnt = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
+                        $num_ids = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
                     }
+                    $change = true;
                 }
             }
-        }
-        if (isset($attache)) {
+        } else {
             $composesession = attachSelectedMessages($id, $imapConnection);
             $location = set_url_var($location, 'session', $composesession, false);
             if ($compose_new_win) {
@@ -196,39 +196,35 @@ if(isset($expungeButton)) {
                 $location = str_replace('search.php','compose.php',$location);
                 $location = str_replace('right_main.php','compose.php',$location);
             }
-        } else {
-            if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
-                if ($startMessage > $show_num) {
-                    $location = set_url_var($location,'startMessage',$startMessage-$show_num, false);
-                } else {
-                    $location = set_url_var($location,'startMessage',1, false);
-                }
-            }
         }
     } else {
         $exception = true;
     }
 } else {    // Move messages
-
-    if (count($id)) {
-        sqimap_msgs_list_move($imapConnection,$id,$targetMailbox);
-        if ($auto_expunge) {
-            $cnt = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
+    if ( $num_ids > 0 ) {
+        if ( $is_dmn && $num_ids == 1 ) {
+            sqimap_msgs_list_move($imapConnection,$id[0],$targetMailbox);
+            $num_ids = sqimap_mailbox_expunge_dmn($id[0]);
         } else {
-            $cnt = 0;
-        }
-
-        if (($startMessage+$cnt-1) >= $mbx_response['EXISTS']) {
-            if ($startMessage > $show_num) {
-                $location = set_url_var($location,'startMessage',$startMessage-$show_num, false);
-            } else {
-                $location = set_url_var($location,'startMessage',1, false);
+            sqimap_msgs_list_move($imapConnection,$id,$targetMailbox);
+            if ($auto_expunge) {
+                $num_ids = sqimap_mailbox_expunge($imapConnection, $mailbox, true);
             }
         }
+        $change = true;
     } else {
         $exception = true;
     }
 }
+if($change) { // Change the startMessage number if the mailbox was changed
+    if (($startMessage+$num_ids-1) >= $mbx_response['EXISTS']) {
+        if ($startMessage > $show_num) {
+            $location = set_url_var($location,'startMessage',$startMessage-$show_num,false);
+        } else {
+            $location = set_url_var($location,'startMessage',1,false);
+        }
+    }
+}
 // Log out this session
 sqimap_logout($imapConnection);
 if ($exception) {