X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Ffolders_rename_do.php;h=d86ba9d488881472a502f80f01902e7ff62b7595;hb=e38807da7cc331846514027ebc62b9c0456b1ada;hp=5c7e9ababc0bf454ba08ebc7a41f4a06b339b67e;hpb=f8f9bed9bb69ef0432fbc67741f82071b6582b4d;p=squirrelmail.git diff --git a/src/folders_rename_do.php b/src/folders_rename_do.php index 5c7e9aba..d86ba9d4 100644 --- a/src/folders_rename_do.php +++ b/src/folders_rename_do.php @@ -1,51 +1,87 @@ - 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]"); - } - } +\n"; - echo "

Return"; - echo ""; -?> + 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"; + $cmd = sqimap_session_id() . " RENAME \"" . quoteIMAP($orig) . "\" \"" . + quoteIMAP($newone) . "\"\r\n"; + fputs ($imapConnection, $cmd); + $data = sqimap_read_data($imapConnection, sqimap_session_id(), true, $a, $b); + // Renaming a folder doesn't renames the folder but leaves you unsubscribed + // at least on Cyrus IMAP servers. + if (isset($isfolder)) { + $newone = $newone.$delimiter; + $orig = $orig.$delimiter; + } + sqimap_unsubscribe($imapConnection, $orig); + sqimap_subscribe($imapConnection, $newone); + + fputs ($imapConnection, sqimap_session_id() . " LIST \"\" \"" . quoteIMAP($newone) . + "*\"\r\n"); + $data = sqimap_read_data($imapConnection, sqimap_session_id(), true, $a, $b); + for ($i=0; $i < count($data); $i++) + { + $name = find_mailbox_name($data[$i]); + + if ($name != $newone) // don't try to resubscribe when renaming ab to abc + { + sqimap_unsubscribe($imapConnection, $name); + $name = substr($name, strlen($orig)); + $name = $newone . $name; + sqimap_subscribe($imapConnection, $name); + } + } + + /** Log out this session **/ + sqimap_logout($imapConnection); + $location = get_location(); + header ("Location: $location/folders.php?success=rename"); +?>