/* SquirrelMail required files. */
require_once(SM_PATH . 'include/validate.php');
-require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/strings.php');
require_once(SM_PATH . 'functions/imap_asearch.php');
require_once(SM_PATH . 'functions/imap_mailbox.php');
-require_once(SM_PATH . 'functions/strings.php');
+require_once(SM_PATH . 'functions/imap_messages.php');
+require_once(SM_PATH . 'functions/mime.php');
+require_once(SM_PATH . 'functions/mailbox_display.php'); //getButton()...
function asearch_unhtml_strcoll($a, $b)
{
function imap_get_mailbox_display($mailbox)
{
- if ($mailbox == 'INBOX')
+ if (strtoupper($mailbox) == 'INBOX')
return _("INBOX");
return imap_utf7_decode_local($mailbox);
}
$what_parts = sqimap_asearch_parse_date($what);
if (count($what_parts) == 4) {
if (checkdate($what_parts[2], $what_parts[1], $what_parts[3])) {
- $what_display = date_intl(_("M j, Y"),mktime(0,0,0,$what_parts[2],$what_parts[1],$what_parts[3]));
+ $what_display = date_intl(_("M j, Y"), mktime(0,0,0,$what_parts[2],$what_parts[1],$what_parts[3]));
/*$what_display = $what_parts[1] . ' ' . getMonthName($what_parts[2]) . ' ' . $what_parts[3];*/
}
else
global $color;
echo "<br>\n";
- echo html_tag( 'table', '', 'center', $color[9], 'width="95%" cellpadding="1" cellspacing="1" border="0"' );
- echo html_tag( 'tr', html_tag( 'td', asearch_get_title_display($color, $title), 'center', $color[5], 'colspan=5'));
+ echo html_tag('table', '', 'center', $color[9], 'width="95%" cellpadding="1" cellspacing="1" border="0"');
+ echo html_tag('tr', html_tag('td', asearch_get_title_display($color, $title), 'center', $color[5], 'colspan=5'));
$main_key = $query_keys[0];
$query_count = count($query_array[$main_key]);
for ($query_num=0, $row_num=0; $query_num<$query_count; $query_num++) {
$exclude_array = $search_array[5];
$query_display = asearch_get_query_display($color, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array);
- echo html_tag( 'td', $query_num+1, 'right');
- echo html_tag( 'td', $query_display, 'center', '', 'width="80%"');
+ echo html_tag('td', $query_num+1, 'right');
+ echo html_tag('td', $query_display, 'center', '', 'width="80%"');
foreach ($action_array as $action => $action_display) {
echo html_tag('td', '<a href=search.php?submit=' . $action . '&rownum=' . $query_num . '>' . $action_display . '</a>', 'center');
}
}
/* build an <option> statement */
-function asearch_opt( $val, $sel, $tit )
+function asearch_opt($val, $sel, $tit)
{
- return '<option value="' . $val . '"' . ($sel == $val ? ' selected' : '' ) . '>' . $tit . '</option>' . "\n";
+ return '<option value="' . $val . '"' . ($sel == $val ? ' selected' : '') . '>' . $tit . '</option>' . "\n";
}
/* build a <select> statement from an array */
return $output;
}
+function asearch_mailbox_exists($mailbox, $boxes)
+{
+ foreach ($boxes as $box) {
+ if ($box['unformatted'] == $mailbox)
+ return TRUE;
+ }
+ return FALSE;
+}
+
/* print one form row */
function asearch_print_form_row($imapConnection, $boxes, $mailbox, $biop, $unop, $where, $what, $exclude, $row_num)
{
global $imap_asearch_biops_in, $imap_asearch_unops, $imap_asearch_options;
global $color;
- echo html_tag( 'tr', '', '', $color[4]);
+ echo html_tag('tr', '', '', $color[4]);
- echo html_tag( 'td', '', 'center' );
+ echo html_tag('td', '', 'center');
/* Binary operator */
if ($row_num)
echo asearch_opt_array('biop[' . $row_num . ']', $imap_asearch_biops_in, $biop);
echo /*'<input type="hidden" name="biop[0]" value="">' .*/ '<b>' . _("In") . '</b>';
echo "</td>\n";
- echo html_tag( 'td', '', 'center' );
+ echo html_tag('td', '', 'center');
/* Mailbox list */
- echo '<select name="mailbox[' . $row_num . ']">' . '<option value="All Folders"';
- if ($mailbox == 'All Folders')
- echo ' selected';
- echo '>[ ' . asearch_get_mailbox_display('All Folders') . " ]</option>\n";
+ echo '<select name="mailbox[' . $row_num . ']">';
+ if (($mailbox != 'All Folders') && (!asearch_mailbox_exists($mailbox, $boxes)))
+ echo asearch_opt($mailbox, $mailbox, '[' . _("Missing") . '] ' . asearch_get_mailbox_display($mailbox));
+ echo asearch_opt('All Folders', $mailbox, '[' . asearch_get_mailbox_display('All Folders') . ']');
echo sqimap_mailbox_option_list($imapConnection, array(strtolower($mailbox)), 0, $boxes);
echo '</select></td>' . "\n";
/* Unary operator and Search location */
- if (empty($where))
- $where = 'FROM';
- echo html_tag( 'td',
+ echo html_tag('td',
asearch_opt_array('unop[' . $row_num . ']', $imap_asearch_unops, $unop)
. asearch_opt_array('where[' . $row_num . ']', $imap_asearch_options, $where),
'center');
$what_disp = str_replace('\\\\', '\\', $what_disp);
$what_disp = str_replace('\\"', '"', $what_disp);
$what_disp = str_replace('"', '"', $what_disp);*/
- $what_disp = htmlspecialchars($what, ENT_QUOTES);
- echo html_tag( 'td', '<input type="text" size="35" name="what[' . $row_num . ']" value="' . $what_disp . '">', 'center' ) . "\n";
+ $what_disp = htmlspecialchars($what);
+ echo html_tag('td', '<input type="text" size="35" name="what[' . $row_num . ']" value="' . $what_disp . '">', 'center') . "\n";
/* Exclude criteria */
- echo html_tag( 'td',
+ echo html_tag('td',
_("Exclude Criteria:") . '<input type=checkbox name="exclude[' . $row_num .']"' . ($exclude ? ' CHECKED' : '') . '>', 'center', '') . "\n";
echo "</tr>\n";
}
/* print the search form */
-function asearch_print_form($imapConnection, $boxes, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array, $add_criteria)
+function asearch_print_form($imapConnection, $boxes, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array)
{
global $search_button_html, $add_criteria_button_html, $del_excluded_button_html, $del_all_button_html;
global $color;
echo "<br>\n";
echo '<form action="search.php" name="form_asearch">' . "\n";
- echo html_tag( 'table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="1" border="0"' );
- echo html_tag( 'tr', html_tag( 'td', asearch_get_title_display($color, _("Search Criteria")), 'center', $color[5], 'colspan=5'));
- $row_count = count($where_array) + $add_criteria;
- $mailbox = '';
+ echo html_tag('table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="1" border="0"');
+ echo html_tag('tr', html_tag('td', asearch_get_title_display($color, _("Search Criteria")), 'center', $color[5], 'colspan=5'));
+ $row_count = count($where_array);
for ($row_num = 0; $row_num < $row_count; $row_num++) {
- /* Keep the last non-empty mailbox as default choice */
- if (strip_tags(asearch_nz($mailbox_array[$row_num])) != '')
- $mailbox = strip_tags($mailbox_array[$row_num]);
- if ($mailbox == '')
- $mailbox = $boxes[0]['unformatted'];
+ $mailbox = asearch_nz($mailbox_array[$row_num]);
$biop = strip_tags(asearch_nz($biop_array[$row_num]));
$unop = strip_tags(asearch_nz($unop_array[$row_num]));
$where = strip_tags(asearch_nz($where_array[$row_num]));
echo '</table>' . "\n";
/* Submit buttons */
- echo html_tag('table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="0" border="0"' );
+ echo html_tag('table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="0" border="0"');
echo html_tag('tr',
html_tag('td', getButton('SUBMIT', 'submit', $search_button_html), 'center') . "\n"
. html_tag('td', getButton('SUBMIT', 'submit', $add_criteria_button_html), 'center') . "\n"
if ($cnt > 0) {
$msort = calc_msort($msgs, $sort);
$showbox = asearch_get_mailbox_display($mailbox);
- echo html_tag( 'div', '<b><big>' . _("Folder:") . ' '. $showbox.'</big></b>','center') . "\n";
+ echo html_tag('div', '<b><big>' . _("Folder:") . ' '. $showbox.'</big></b>','center') . "\n";
$msg_cnt_str = get_msgcnt_str(1, $cnt, $cnt);
$toggle_all = get_selectall_link(1, $sort);
/* get globals we may need */
sqgetGlobalVar('username', $username, SQ_SESSION);
sqgetGlobalVar('key', $key, SQ_COOKIE);
-/*sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION);*/ /* do we really need this? */
-/*sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION);*/ /* do we really need this? */
+sqgetGlobalVar('delimiter', $delimiter, SQ_SESSION); /* we really need this? */
+sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION); /* do we really need this? */
$recent_prefkeys = array('asearch_recent_where', 'asearch_recent_mailbox', 'asearch_recent_what', 'asearch_recent_biop', 'asearch_recent_unop', 'asearch_recent_exclude');
$saved_prefkeys = array('asearch_saved_where', 'asearch_saved_mailbox', 'asearch_saved_what', 'asearch_saved_biop', 'asearch_saved_unop', 'asearch_saved_exclude');
$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
/* get mailbox names once here */
$boxes = sqimap_mailbox_list($imapConnection);
+/* ensure we have a valid default mailbox name */
+$mailbox = asearch_nz($mailbox_array[0]);
+if (($mailbox == '') || ($mailbox == 'None')) //Workaround for sm quirk IMHO (what if I really have a mailbox called None?)
+ $mailbox = $boxes[0]['unformatted']; //Usually INBOX ;)
-if (isset($mailbox_array[0])) {
- $mailbox = strip_tags($mailbox_array[0]);
-}
-if (empty($mailbox))
- $mailbox = $boxes[0]['unformatted'];
if (isset($composenew) && $composenew) {
$comp_uri = "../src/compose.php?mailbox=" . urlencode($mailbox) .
"&session=$composesession&attachedmessages=true&";
do_hook('search_before_form');
if (!$search_silent) {
- echo html_tag( 'table',
- html_tag( 'tr', "\n" .
- html_tag( 'td', asearch_get_title_display($color, _("Search")), 'center', $color[0] )
+ echo html_tag('table',
+ html_tag('tr', "\n" .
+ html_tag('td', asearch_get_title_display($color, _("Search")), 'center', $color[0])
) ,
'', '', 'width="100%"') . "\n";
asearch_print_saved($data_dir, $username);
asearch_print_recent($data_dir, $username);
- if (($submit == $add_criteria_button_text) || (empty($where_array)))
- $new_row = 1;
- else
- $new_row = 0;
- asearch_print_form($imapConnection, $boxes, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array, $new_row);
+ if (empty($where_array)) {
+ $mailbox_array[0] = $mailbox;
+ $biop_array[0] = '';
+ $unop_array[0] = '';
+ $where_array[0] = 'FROM';
+ $what_array[0] = '';
+ $exclude_array[0] = '';
+ }
+ if ($submit == $add_criteria_button_text) {
+ $last_index = max(count($where_array) - 1, 0);
+ $mailbox_array[] = asearch_nz($mailbox_array[$last_index]);
+ $biop_array[] = asearch_nz($biop_array[$last_index]);
+ $unop_array[] = asearch_nz($unop_array[$last_index]);
+ $where_array[] = asearch_nz($where_array[$last_index]);
+ $what_array[] = asearch_nz($what_array[$last_index]);
+ $exclude_array[] = asearch_nz($exclude_array[$last_index]);
+ }
+ asearch_print_form($imapConnection, $boxes, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array);
}
/* This deserves a comment, at least. What is it for exactly? */
* used. Also check to make sure we actually have the array in the *
* registered session data. :) *
*********************************************************************/
-if (! isset($use_mailbox_cache)) {
+if (!isset($use_mailbox_cache))
$use_mailbox_cache = 0;
-}
-
-/* There is a problem with registered vars in 4.1 */
-/*
-if( substr( phpversion(), 0, 3 ) == '4.1' ) {
- $use_mailbox_cache = FALSE;
-}
-*/
do_hook('search_after_form');
if ($submit == $search_button_text) {
- echo html_tag( 'table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="0" border="0"' );
- echo html_tag( 'tr', html_tag( 'td', asearch_get_title_display($color, _("Search Results")), 'center', $color[5]));
- echo html_tag( 'tr', html_tag( 'td', asearch_get_query_display($color, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array), 'center', $color[4]));
+ echo html_tag('table', '', 'center', $color[9], 'width="100%" cellpadding="1" cellspacing="0" border="0"');
+ echo html_tag('tr', html_tag('td', asearch_get_title_display($color, _("Search Results")), 'center', $color[5]));
+ echo html_tag('tr', html_tag('td', asearch_get_query_display($color, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array), 'center', $color[4]));
echo '</table><br>' . "\n";
$query_error = asearch_check_query($where_array, $what_array, $exclude_array);
if ($query_error != '')
- echo '<br>' . html_tag( 'div', asearch_get_error_display($color, $query_error), 'center' ) . "\n";
+ echo '<br>' . html_tag('div', asearch_get_error_display($color, $query_error), 'center') . "\n";
else {
- $old_allow_thread_sort = 0;
+ // Temporarily unset thread sort because it is meaningless in search results
+ $old_allow_thread_sort = FALSE;
if ($allow_thread_sort == TRUE) {
$old_allow_thread_sort = $allow_thread_sort;
$allow_thread_sort = FALSE;
$mboxes_msgs = sqimap_asearch($imapConnection, $mailbox_array, $biop_array, $unop_array, $where_array, $what_array, $exclude_array, $mboxes_array);
if (empty($mboxes_msgs))
- echo '<br>' . html_tag( 'div', asearch_get_error_display($color, _("No Messages Found")), 'center' ) . "\n";
+ echo '<br>' . html_tag('div', asearch_get_error_display($color, _("No Messages Found")), 'center') . "\n";
else {
foreach($mboxes_msgs as $mailbox => $msgs) {
sqimap_mailbox_select($imapConnection, $mailbox);
}
}
-
do_hook('search_bottom');
sqimap_logout($imapConnection);
echo '</body></html>';
-?>
+?>
\ No newline at end of file