X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Ffolders.php;h=cc1fc279b90176b81929929231230dcff095284c;hb=0d8a462c52d74cd93af7376ae5bbc994f4699054;hp=ebbfe5ba7f269ee707b3e6c88e30041aef1ab158;hpb=be2d549570f1501e50b89557351aa3b0372e2e36;p=squirrelmail.git diff --git a/src/folders.php b/src/folders.php index ebbfe5ba..cc1fc279 100644 --- a/src/folders.php +++ b/src/folders.php @@ -3,42 +3,44 @@ /** * folders.php * - * Copyright (c) 1999-2002 The SquirrelMail Project Team + * Copyright (c) 1999-2004 The SquirrelMail Project Team * Licensed under the GNU GPL. For full terms see the file COPYING. * * Handles all interaction between the user and the other folder * scripts which do most of the work. Also handles the Special * Folders. * - * $Id$ + * @version $Id$ + * @package squirrelmail */ -/* Path for SquirrelMail required files. */ +/** + * Path for SquirrelMail required files. + * @ignore + */ define('SM_PATH','../'); /* SquirrelMail required files. */ require_once(SM_PATH . 'include/validate.php'); -require_once(SM_PATH . 'functions/imap_utf7_decode_local.php'); require_once(SM_PATH . 'functions/imap.php'); -require_once(SM_PATH . 'functions/array.php'); require_once(SM_PATH . 'functions/plugin.php'); require_once(SM_PATH . 'functions/html.php'); +require_once(SM_PATH . 'functions/forms.php'); displayPageHeader($color, 'None'); /* get globals we may need */ -$username = $_SESSION['username']; -$key = $_COOKIE['key']; -$delimiter = $_SESSION['delimiter']; -$onetimepad = $_SESSION['onetimepad']; -if (isset($_GET['success'])) { - $success = $_GET['success']; -} +sqgetGlobalVar('username', $username, SQ_SESSION); +sqgetGlobalVar('key', $key, SQ_COOKIE); +sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); +sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION); + +sqgetGlobalVar('success', $success, SQ_GET); /* end of get globals */ -echo '
' . +echo '
' . html_tag( 'table', '', 'center', $color[0], 'width="95%" cellpadding="1" cellspacing="0" border="0"' ) . html_tag( 'tr' ) . html_tag( 'td', '', 'center' ) . '' . _("Folders") . '' . @@ -72,23 +74,23 @@ if ( isset($success) && $success ) { break; } - $td_str .= '
'; + $td_str .= '
'; echo html_tag( 'table', html_tag( 'tr', html_tag( 'td', $td_str . - '' . + '' . _("refresh folder list") . '' , 'center' ) ) , 'center', '', 'width="100%" cellpadding="4" cellspacing="0" border="0"' ); } -echo "\n
"; +echo "\n
"; $imapConnection = sqimap_login ($username, $key, $imapServerAddress, $imapPort, 0); -$boxes = sqimap_mailbox_list($imapConnection); +$boxes = sqimap_mailbox_list($imapConnection,true); /** CREATING FOLDERS **/ echo html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="4" cellspacing="0" border="0"' ) . @@ -97,66 +99,91 @@ echo html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="4" cellspaci ) . html_tag( 'tr' ) . html_tag( 'td', '', 'center', $color[0] ) . - - "
\n". - "
\n". - _("as a subfolder of"). - '
'. - "\n"; + +$show_selected = array(); +$skip_folders = array(); +$server_type = strtolower($imap_server_type); +if ( $server_type == 'courier' ) { + array_push($skip_folders, 'inbox.trash'); + if ( $default_folder_prefix == 'INBOX.' ) { + array_push($skip_folders, 'inbox'); + } } -$show_selected = 0; -if ( $default_sub_of_inbox ) { +if ( $default_sub_of_inbox == false ) { + echo '\n"; +} else { + echo '\n"; $show_selected = array('inbox'); } -$skip_folders = 0; -if ( strtolower($imap_server_type) == 'courier' ) { - $skip_folders = array('inbox.trash'); -} -echo sqimap_mailbox_option_list($imapConnection, $show_selected, $skip_folders, $boxes, 'noinferiors'); +// Call sqimap_mailbox_option_list, using existing connection to IMAP server, +// the arrays of folders to include or skip (assembled above), +// use 'noinferiors' as a mailbox filter to leave out folders that can not contain other folders. +// use the long format to show subfolders in an intelligible way if parent is missing (special folder) +echo sqimap_mailbox_option_list($imapConnection, $show_selected, $skip_folders, $boxes, 'noinferiors', true); -echo "\n"; +echo "\n"; if ($show_contain_subfolders_option) { - echo '
 ' + echo '
'. + addCheckBox('contain_subs', FALSE, '1') .'  ' . _("Let this folder contain subfolders") - . '
'; + . '
'; } -echo "\n"; -echo "
\n"; +echo "\n"; +echo "\n"; echo html_tag( 'tr', html_tag( 'td', ' ', 'left', $color[4] ) ) ."\n"; /** count special folders **/ + +// FIX ME, why not check if the folders are defined IMHO move_to_sent, move_to_trash has nothing todo with it $count_special_folders = 0; $num_max = 1; if (strtolower($imap_server_type) == "courier" || $move_to_trash) { - $num_max++; + $num_max++; } if ($move_to_sent) { - $num_max++; + $num_max++; } if ($save_as_draft) { - $num_max++; + $num_max++; } + +// What if move_to_sent = false and $sent_folder is set? Should it still be skipped? + for ($p = 0, $cnt = count($boxes); $p < $cnt && $count_special_folders < $num_max; $p++) { - if (strtolower($boxes[$p]['unformatted']) == 'inbox') - $count_special_folders++; - else if (strtolower($imap_server_type) == 'courier' && - strtolower($boxes[$p]['unformatted']) == 'inbox.trash') - $count_special_folders++; - else if ($boxes[$p]['unformatted'] == $trash_folder && $trash_folder) - $count_special_folders++; - else if ($boxes[$p]['unformatted'] == $sent_folder && $sent_folder) - $count_special_folders++; - else if ($boxes[$p]['unformatted'] == $draft_folder && $draft_folder) - $count_special_folders++; + switch ($boxes[$p]['unformatted']) { + case (strtoupper($boxes[$p]['unformatted']) == 'INBOX'): + ++$count_special_folders; + $skip_folders[] = $boxes[$p]['unformatted']; + break; + // FIX ME inbox.trash should be set in conf.pl + case 'inbox.trash': + if (strtolower($imap_server_type) == 'courier') { + ++$count_special_folders; + } + break; + case $trash_folder: + ++$count_special_folders; + $skip_folders[] = $trash_folder; + break; + case $sent_folder: + ++$count_special_folders; + $skip_folders[] = $sent_folder; + break; + case $draft_folder: + ++$count_special_folders; + $skip_folders[] = $draft_folder; + break; + default: break; + } } @@ -168,19 +195,23 @@ echo html_tag( 'tr', html_tag( 'td', '', 'center', $color[0] ); if ($count_special_folders < count($boxes)) { - echo "
\n" - . "\n". - "\n". + '\n". - "
\n"; + "\" />\n". + "\n"; } else { - echo _("No folders found") . '

'; + echo _("No folders found") . '

'; } $boxes_sub = $boxes; @@ -196,19 +227,21 @@ echo html_tag( 'tr', html_tag( 'td', '', 'center', $color[0] ); if ($count_special_folders < count($boxes)) { - echo "
\n" - . "\n" + . ' \n"; - echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes); + // send NULL for the flag - ALL folders are eligible for delete (except what we've got in skiplist) + // use long format to make sure folder names make sense when parents may be missing. + echo sqimap_mailbox_option_list($imapConnection, 0, $skip_folders, $boxes, NULL, true); - echo "\n" - . '\n" + . '\n" + . "\" />\n" . "
\n"; } else { - echo _("No folders found") . "

"; + echo _("No folders found") . "

"; } echo html_tag( 'tr', @@ -225,25 +258,25 @@ echo html_tag( 'table', '', 'center', '', 'width="70%" cellpadding="4" cellspaci html_tag( 'td', '', 'center', $color[0], 'width="50%"' ); if ($count_special_folders < count($boxes)) { - echo "
\n" - . "\n"; for ($i = 0; $i < count($boxes); $i++) { $use_folder = true; if ((strtolower($boxes[$i]["unformatted"]) != "inbox") && ($boxes[$i]["unformatted"] != $trash_folder) && ($boxes[$i]["unformatted"] != $sent_folder) && ($boxes[$i]["unformatted"] != $draft_folder)) { - $box = $boxes[$i]["unformatted-dm"]; + $box = htmlspecialchars($boxes[$i]["unformatted-dm"]); $box2 = str_replace(' ', ' ', - imap_utf7_decode_local($boxes[$i]["unformatted-disp"])); - echo " \n"; } } - echo "

\n" - . '

\n" + . '\n" - . "
\n"; + . "\" />\n" + . "\n"; } else { echo _("No folders were found to unsubscribe from!") . ''; } @@ -267,44 +300,40 @@ if(!$no_list_for_subscribe) { } } if ($use_folder == true) { - $box[$q] = $boxes_all[$i]['unformatted-dm']; - $box2[$q] = imap_utf7_decode_local($boxes_all[$i]['unformatted-disp']); + $box[$q] = htmlspecialchars($boxes_all[$i]['unformatted-dm']); + $box2[$q] = htmlspecialchars(imap_utf7_decode_local($boxes_all[$i]['unformatted-disp'])); $q++; } } if ($box && $box2) { - echo "
\n" - . ''; for ($q = 0; $q < count($box); $q++) { - echo " \n"; } - echo '

' - . '\n" - . "

\n"; + echo '

' + . '\n" + . "
\n"; } else { echo _("No folders were found to subscribe to!") . ''; } } else { /* don't perform the list action -- this is much faster */ - echo "
\n" - . _("Subscribe to:") . '
' - . '' - . '\n" - . "
\n"; + echo addForm('folders_subscribe.php?method=sub') + . _("Subscribe to:") . '
' + . '' + . '\n" + . "
\n"; } do_hook('folders_bottom'); ?> - - - -