Lots of changes for variable initialization - clean up, really,
[squirrelmail.git] / src / folders_rename_do.php
index 92ced667d7baa7cef6c2190da0b710158be7d72f..5c0c3937d6b0519297a4af7bd356f200858bc330 100644 (file)
@@ -1,49 +1,80 @@
-<?
-   include("../config/config.php");
-   include("../functions/strings.php");
-   include("../functions/page_header.php");
-   include("../functions/imap.php");
-   include("../functions/mailbox.php");
-
-   $imapConnection = loginToImapServer($username, $key, $imapServerAddress);
-   selectMailbox($imapConnection, $orig, $numMessages);
-   getFolderList($imapConnection, $boxesFormatted, $boxesUnformatted);
-
-   $mailbox = "$subfolder.$new_name";
-   $old_name = substr($orig, strrpos($orig, ".")+1, strlen($orig));
-   $old_parent = substr($orig, 0, strrpos($orig, "."));
-
-   for ($i = 0; $i < count($boxesUnformatted); $i++) {
-      if (substr($boxesUnformatted[$i], 0, strlen($orig)) == $orig) {
-         $after = substr($boxesUnformatted[$i], strlen($orig)+1, strlen($boxesUnformatted[$i]));
-         selectMailbox($imapConnection, $boxesUnformatted[$i], $numMessages);
-         if (strlen($after) > 0) {
-            createFolder($imapConnection, "$mailbox.$after");
-            if ($numMessages > 0)
-               $success = copyMessages($imapConnection, 1, $numMessages, "$mailbox.$after");
-            else
-               $success = true;
-
-            if ($success == true)
-               removeFolder($imapConnection, "$boxesUnformatted[$i]");
-         }
-         else {
-            createFolder($imapConnection, "$mailbox");
-            if ($numMessages > 0)
-               $success = copyMessages($imapConnection, 1, $numMessages, "$mailbox");
-            else
-               $success = true;
-
-            if ($success == true)
-               removeFolder($imapConnection, "$boxesUnformatted[$i]");
-         }
-      }
-   }
-
-   /** Log out this session **/
-   fputs($imapConnection, "1 logout");
-
-   echo "<BR><BR><A HREF=\"webmail.php?right_frame=folders.php\" TARGET=_top>Return</A>";
-?>
+<?php
+
+/**
+ * folders_rename_do.php
+ *
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
+ * Licensed under the GNU GPL. For full terms see the file COPYING.
+ *
+ * Does the actual renaming of files on the IMAP server.
+ * Called from the folders.php
+ *
+ * $Id$
+ */
+
+/* Path for SquirrelMail required files. */
+define('SM_PATH','../');
+
+/* SquirrelMail required files. */
+require_once(SM_PATH . 'include/validate.php');
+require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/display_messages.php');
+
+/* globals */
+sqgetGlobalVar('key',       $key,           SQ_COOKIE);
+sqgetGlobalVar('username',  $username,      SQ_SESSION);
+sqgetGlobalVar('delimiter', $delimiter,     SQ_SESSION);
+sqgetGlobalVar('onetimepad',$onetimepad,    SQ_SESSION);
+sqgetGlobalVar('orig',      $orig,          SQ_POST);
+sqgetGlobalVar('old_name',  $old_name,      SQ_POST);
+sqgetGlobalVar('new_name',  $new_name,      SQ_POST);
+/* end globals */
+
+$new_name = trim($new_name);
+
+if (substr_count($new_name, '"') || substr_count($new_name, "\\") ||
+    substr_count($new_name, $delimiter) || ($new_name == '')) {
+    displayPageHeader($color, 'None');
+
+    plain_error_message(_("Illegal folder name.  Please select a different name.").
+        '<BR><A HREF="../src/folders.php">'._("Click here to go back").'</A>.', $color);
+
+    exit;
+}
 
+$orig = imap_utf7_encode_local($orig);
+$old_name = imap_utf7_encode_local($old_name);
+$new_name = imap_utf7_encode_local($new_name);
 
+if ($old_name <> $new_name) {
+
+    $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
+
+    if (strpos($orig, $delimiter)) {
+        $old_dir = substr($orig, 0, strrpos($orig, $delimiter));
+    } else {
+        $old_dir = '';
+    }
+
+    if ($old_dir != '') {
+        $newone = $old_dir . $delimiter . $new_name;
+    } else {
+        $newone = $new_name;
+    }
+
+    // Renaming a folder doesn't rename the folder but leaves you unsubscribed
+    //    at least on Cyrus IMAP servers.
+    if (isset($isfolder)) {
+        $newone = $newone.$delimiter;
+        $orig = $orig.$delimiter;
+    }
+    sqimap_mailbox_rename( $imapConnection, $orig, $newone );
+
+    // Log out this session 
+    sqimap_logout($imapConnection);
+
+}
+
+header ('Location: ' . get_location() . '/folders.php?success=rename');
+
+?>