/**
* folder_manip.php
*
- * Copyright (c) 1999-2005 The SquirrelMail Project Team
- * Licensed under the GNU GPL. For full terms see the file COPYING.
- *
* Functions for IMAP folder manipulation:
* (un)subscribe, create, rename, delete.
*
+ * @author Thijs Kinkhorst <kink at squirrelmail.org>
+ * @copyright 1999-2010 The SquirrelMail Project Team
+ * @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
* @see folders.php
- * @author Thijs Kinkhorst - kink@squirrelmail.org
*/
{
if (substr_count($folder_name, '"') || substr_count($folder_name, "\\") ||
substr_count($folder_name, $delimiter) || ($folder_name == '')) {
-
- global $color;
+
+ global $color, $oTemplate;
error_box(_("Illegal folder name.") . "<br />\n" .
- sprintf(_("The name may not contain any of the following: %s"), '<tt>" \\ '.$delimiter.'</tt>')
- . "<br />\n" .
- _("Please select a different name.").
- '<br /><a href="folders.php">'.
- _("Click here to go back") . '</a>.', $color);
+ sprintf(_("The name may not contain any of the following: %s"), '<tt>" \\ '.$delimiter.'</tt>')
+ . "<br />\n" .
+ _("Please select a different name.").
+ '<br /><a href="folders.php">'.
+ _("Click here to go back") . '</a>.');
sqimap_logout($imapConnection);
+ $oTemplate->display('footer.tpl');
exit;
}
}
/**
* Called from folders.php to create a new folder.
+ * @param stream $imapConnection imap connection resource
+ * @param string $delimiter delimiter
+ * @param string $folder_name new folder name
+ * @param string $subfolder folder that stores new folder
+ * @param string $contain_subs if not empty, creates folder that can store subfolders
+ * @since 1.5.1
*/
function folders_create ($imapConnection, $delimiter, $folder_name, $subfolder, $contain_subs)
{
global $folder_prefix;
$folder_name = imap_utf7_encode_local($folder_name);
-
+
if ( ! empty($contain_subs) ) {
- $folder_name = $folder_name . $delimiter;
+ $folder_type = 'noselect';
+ } else {
+ $folder_type = '';
}
if ($folder_prefix && (substr($folder_prefix, -1) != $delimiter)) {
}
if (trim($subfolder_orig) == '') {
- sqimap_mailbox_create ($imapConnection, $folder_prefix.$folder_name, '');
+ sqimap_mailbox_create ($imapConnection, $folder_prefix.$folder_name, $folder_type);
} else {
- sqimap_mailbox_create ($imapConnection, $subfolder.$delimiter.$folder_name, '');
+ sqimap_mailbox_create ($imapConnection, $subfolder.$delimiter.$folder_name, $folder_type);
}
return;
* folder should be renamed to.
*/
function folders_rename_getname ($imapConnection, $delimiter, $old) {
- global $color,$default_folder_prefix;
+ global $color, $default_folder_prefix, $oTemplate;
if ( $old == '' ) {
plain_error_message(_("You have not selected a folder to rename. Please do so.").
'<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
- sqimap_logout($imapConnection);
+ sqimap_logout($imapConnection);
+ $oTemplate->display('footer.tpl');
exit;
}
$old = imap_utf7_decode_local($old);
if (strpos($old, $delimiter)) {
- $old_name = substr($old, strrpos($old, $delimiter)+1, strlen($old));
+ $old_name = substr($old, strrpos($old, $delimiter)+1);
// hide default prefix (INBOX., mail/ or other)
$quoted_prefix=preg_quote($default_folder_prefix,'/');
$prefix_length=(preg_match("/^$quoted_prefix/",$old) ? strlen($default_folder_prefix) : 0);
$old_name = $old;
$old_parent = '';
}
+
+ sqimap_logout($imapConnection);
- echo '<br />' .
- html_tag( 'table', '', 'center', '', 'width="95%" border="0"' ) .
- html_tag( 'tr',
- html_tag( 'td', '<b>' . _("Rename a folder") . '</b>', 'center', $color[0] )
- ) .
- html_tag( 'tr' ) .
- html_tag( 'td', '', 'center', $color[4] ) .
- addForm('folders.php').
- addHidden('smaction', 'rename').
- _("New name:").
- '<br /><b>' . htmlspecialchars($old_parent) . '</b>' .
- addInput('new_name', $old_name, 25) . '<br /><br />' . "\n";
- if ( $isfolder ) {
- echo addHidden('isfolder', 'true');
- }
- echo addHidden('orig', $old).
- addHidden('old_name', $old_name).
- '<input type="submit" value="'._("Rename")."\" />\n".
- '<input type="submit" name="cancelbutton" value="'._("Cancel")."\" />\n".
- '</form><br /></td></tr></table>';
- echo "\n\n</body></html>";
+ $oTemplate->assign('dialog_type', 'rename');
+ $oTemplate->assign('parent_folder', htmlspecialchars($old_parent));
+ $oTemplate->assign('current_full_name', htmlspecialchars($old));
+ $oTemplate->assign('current_folder_name', htmlspecialchars($old_name));
+ $oTemplate->assign('is_folder', $isfolder);
- sqimap_logout($imapConnection);
+ $oTemplate->display('folder_manip_dialog.tpl');
+ $oTemplate->display('footer.tpl');
+
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) {
if (strpos($orig, $delimiter)) {
*/
function folders_delete_ask ($imapConnection, $folder_name)
{
- global $color,$default_folder_prefix;
+ global $color, $default_folder_prefix, $oTemplate;
if ($folder_name == '') {
plain_error_message(_("You have not selected a folder to delete. Please do so.").
'<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
+ sqimap_logout($imapConnection);
+ $oTemplate->display('footer.tpl');
exit;
}
$prefix_length = (preg_match("/^$quoted_prefix/",$visible_folder_name) ? strlen($default_folder_prefix) : 0);
$visible_folder_name = substr($visible_folder_name,$prefix_length);
- echo '<br />' .
- html_tag( 'table', '', 'center', '', 'width="95%" border="0"' ) .
- html_tag( 'tr',
- html_tag( 'td', '<b>' . _("Delete Folder") . '</b>', 'center', $color[0] )
- ) .
- html_tag( 'tr' ) .
- html_tag( 'td', '', 'center', $color[4] ) .
- sprintf(_("Are you sure you want to delete %s?"),
- str_replace(array(' ','<','>'),array(' ','<','>'),$visible_folder_name)).
- addForm('folders.php', 'post')."<p>\n".
- addHidden('smaction', 'delete').
- addHidden('folder_name', $folder_name).
- addSubmit(_("Yes"), 'confirmed').
- addSubmit(_("No"), 'cancelbutton').
- '</p></form><br /></td></tr></table>';
-
- echo "\n\n</body></html>";
-
- sqimap_logout($imapConnection);
+ sqimap_logout($imapConnection);
+
+ $oTemplate->assign('dialog_type', 'delete');
+ $oTemplate->assign('folder_name', htmlspecialchars($folder_name));
+ $oTemplate->assign('visible_folder_name', htmlspecialchars($visible_folder_name));
+
+ $oTemplate->display('folder_manip_dialog.tpl');
+ $oTemplate->display('footer.tpl');
+
exit;
}
*/
function folders_delete_do ($imapConnection, $delimiter, $folder_name)
{
- require_once(SM_PATH . 'functions/tree.php');
-
+ include(SM_PATH . 'functions/tree.php');
+
$boxes = sqimap_mailbox_list ($imapConnection);
global $delete_folder, $imap_server_type, $trash_folder, $move_to_trash;
/** lets see if we CAN move folders to the trash.. otherwise,
** just delete them **/
-
- /* Courier IMAP doesn't like subfolders of Trash
- * If global options say we can't move it into Trash
- * If it's already a subfolder of trash, we'll have to delete it */
- if (strtolower($imap_server_type) == 'courier' ||
- (isset($delete_folder) && $delete_folder) ||
- eregi('^'.$trash_folder.'.+', $folder_name) )
- {
+ if ($delete_folder || preg_match('/^' . preg_quote($trash_folder, '/') . '.+/i', $folder_name) ) {
$can_move_to_trash = FALSE;
- }
+ } else {
/* Otherwise, check if trash folder exits and support sub-folders */
- else {
foreach($boxes as $box) {
if ($box['unformatted'] == $trash_folder) {
$can_move_to_trash = !in_array('noinferiors', $box['flags']);
*/
function folders_subscribe($imapConnection, $folder_names)
{
- global $color;
+ global $color, $oTemplate;
if (count($folder_names) == 0 || $folder_names[0] == '') {
plain_error_message(_("You have not selected a folder to subscribe. Please do so.").
'<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
sqimap_logout($imapConnection);
+ $oTemplate->display('footer.tpl');
exit;
}
'<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
sqimap_logout($imapConnection);
exit;
-
+
}
}
foreach ( $folder_names as $folder_name ) {
*/
function folders_unsubscribe($imapConnection, $folder_names)
{
- global $color;
+ global $color, $oTemplate;
if (count($folder_names) == 0 || $folder_names[0] == '') {
plain_error_message(_("You have not selected a folder to unsubscribe. Please do so.").
'<br /><a href="../src/folders.php">'._("Click here to go back").'</a>.', $color);
sqimap_logout($imapConnection);
+ $oTemplate->display('footer.tpl');
exit;
}
return;
}
-
-
-?>