$tit\n"; } /* function to get the recent searches and put them in the attributes array */ function get_recent($username, $data_dir) { $attributes = array(); $types = array('search_what', 'search_where', 'search_folder'); $recent_count = getPref($data_dir, $username, 'search_memory', 0); for ($x=1;$x<=$recent_count;$x++) { reset($types); foreach ($types as $key) { $attributes[$key][$x] = getPref($data_dir, $username, $key.$x, ""); } } return $attributes; } /* function to get the saved searches and put them in the saved_attributes array */ function get_saved($username, $data_dir) { $saved_attributes = array(); $types = array('saved_what', 'saved_where', 'saved_folder'); foreach ($types as $key) { for ($x=1;;$x++) { $saved_attributes[$key][$x] = getPref($data_dir, $username, $key."$x", ""); if ($saved_attributes[$key][$x] == "") { array_pop($saved_attributes[$key]); break; } } } return $saved_attributes; } /* function to update recent pref arrays */ function update_recent($what, $where, $mailbox, $username, $data_dir) { $attributes = array(); $types = array('search_what', 'search_where', 'search_folder'); $input = array($what, $where, $mailbox); $attributes = get_recent( $username, $data_dir); reset($types); $dupe = 'no'; for ($i=1;$i<=count($attributes['search_what']);$i++) { if (isset($attributes['search_what'][$i])) { if ($what == $attributes['search_what'][$i] && $where == $attributes['search_where'][$i] && $mailbox == $attributes['search_folder'][$i]) { $dupe = 'yes'; } } } if ($dupe == 'no') { $i = 0; foreach ($types as $key) { array_push ($attributes[$key], $input[$i]); array_shift ($attributes[$key]); $i++; } $recent_count = getPref($data_dir, $username, 'search_memory', 0); $n=0; for ($i=1;$i<=$recent_count;$i++) { reset($types); foreach ($types as $key) { setPref($data_dir, $username, $key.$i, $attributes[$key][$n]); } $n++; } } } /* function to forget a recent search */ function forget_recent($forget_index, $username, $data_dir) { $attributes = array(); $types = array('search_what', 'search_where', 'search_folder'); $attributes = get_recent( $username, $data_dir); reset($types); foreach ($types as $key) { array_splice($attributes[$key], $forget_index, 1); array_unshift($attributes[$key], ''); } reset($types); $recent_count = getPref($data_dir, $username, 'search_memory', 0); $n=0; for ($i=1;$i<=$recent_count;$i++) { reset($types); foreach ($types as $key) { setPref($data_dir, $username, $key.$i, $attributes[$key][$n]); } $n++; } } /* function to delete a saved search */ function delete_saved($delete_index, $username, $data_dir) { $types = array('saved_what', 'saved_where', 'saved_folder'); $attributes = get_saved($username, $data_dir); foreach ($types as $key) { array_splice($attributes[$key], $delete_index, 1); } reset($types); $n=0; $saved_count = count($attributes['saved_what']); $last_element = $saved_count + 1; for ($i=1;$i<=$saved_count;$i++) { reset($types); foreach ($types as $key) { setPref($data_dir, $username, $key.$i, $attributes[$key][$n]); } $n++; } reset($types); foreach($types as $key) { removePref($data_dir, $username, $key.$last_element); } } /* function to save a search from recent to saved */ function save_recent($save_index, $username, $data_dir) { $attributes = array(); $types = array('search_what', 'search_where', 'search_folder'); $saved_types = array(0 => 'saved_what', 1 => 'saved_where', 2 => 'saved_folder'); $saved_array = get_saved($username, $data_dir); $save_index = $save_index -1; $saved_count = (count($saved_array['saved_what']) + 1); $attributes = get_recent ($username, $data_dir); $n = 0; foreach ($types as $key) { $slice = array_slice($attributes[$key], $save_index, 1); $name = $saved_types[$n]; setPref($data_dir, $username, $name.$saved_count, $slice[0]); $n++; } } function printSearchMessages($msgs,$mailbox, $cnt, $imapConnection, $usecache = false, $newsort = false) { global $sort, $color; $msort = calc_msort($msgs, $sort); if ($cnt > 0) { if ( $mailbox == 'INBOX' ) { $showbox = _("INBOX"); } else { $showbox = imap_utf7_decode_local($mailbox); } echo html_tag( 'div', '' . _("Folder:") . ' '. $showbox.'','center') . "\n"; $msg_cnt_str = get_msgcnt_str(1, $cnt, $cnt); mail_message_listing_beginning($imapConnection, $mailbox, $sort, $msg_cnt_str, '', 1); printHeader($mailbox, 6, $color, false); displayMessageArray($imapConnection, $cnt, 1, $msort, $mailbox, $sort, $color, $cnt); mail_message_listing_end($cnt, '', $msg_cnt_str, $color); } } /* ------------------------ main ------------------------ */ /* reset these arrays on each page load just in case */ $attributes = array (); $saved_attributes = array (); $search_all = 'none'; $perbox_count = array (); $recent_count = getPref($data_dir, $username, 'search_memory', 0); /* get mailbox names */ $imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); $boxes = sqimap_mailbox_list($imapConnection); /* set current mailbox to INBOX if none was selected or if page was called to search all folders. */ if ( !isset($mailbox) || $mailbox == 'None' || $mailbox == '' ) { $mailbox = $boxes[0]['unformatted']; } if ($mailbox == 'All Folders') { $search_all = 'all'; } if (isset($composenew) && $composenew) { $comp_uri = "../src/compose.php?mailbox=". urlencode($mailbox). "&session=$composesession&attachedmessages=true&"; displayPageHeader($color, $mailbox, "comp_in_new(false,'$comp_uri');", false); } else { displayPageHeader($color, $mailbox); } /* See how the page was called and fire off correct function */ if ((!isset($submit) || empty($submit)) && !empty($what)) { $submit = _("Search"); } if ( !isset( $submit ) ) { $submit = ''; } else if ($submit == _("Search") && !empty($what)) { if ($recent_count > 0) { update_recent($what, $where, $mailbox, $username, $data_dir); } } elseif ($submit == 'forget') { forget_recent($count, $username, $data_dir); } elseif ($submit == 'save') { save_recent($count, $username, $data_dir); } elseif ($submit == 'delete') { delete_saved($count, $username, $data_dir); } do_hook('search_before_form'); echo "
\n". html_tag( 'table', html_tag( 'tr', "\n" . html_tag( 'td', '' . _("Search") . '', 'center', $color[0] ) ) , '', '', 'width="100%"') . "\n"; /* update the recent and saved searches from the pref files */ $attributes = get_recent($username, $data_dir); $saved_attributes = get_saved($username, $data_dir); $saved_count = count($saved_attributes['saved_what']); $count_all = 0; /* Saved Search Table */ if ($saved_count > 0) { echo "
\n" . html_tag( 'table', '', 'center', $color[9], 'width="95%" cellpadding="1" cellspacing="1" border="0"' ) . html_tag( 'tr', html_tag( 'td', 'Saved Searches', 'center' ) ) . html_tag( 'tr' ) . html_tag( 'td' ) . html_tag( 'table', '', 'center', '', 'width="100%" cellpadding="2" cellspacing="2" border="0"' ); for ($i=0; $i < $saved_count; ++$i) { if ($i % 2) { echo html_tag( 'tr', '', '', $color[0] ); } else { echo html_tag( 'tr', '', '', $color[4] ); } echo html_tag( 'td', $saved_attributes['saved_folder'][$i], 'left', '', 'width="35%"' ) . html_tag( 'td', $saved_attributes['saved_what'][$i], 'left' ) . html_tag( 'td', $saved_attributes['saved_where'][$i], 'center' ) . html_tag( 'td', '', 'right' ) . '' . _("edit") . '' . ' | ' . '' . _("search") . '' . ' | ' . "" . _("delete") . '' . ''; } echo "\n"; } if ($recent_count > 0) { echo "
\n" . html_tag( 'table', '', 'center', $color[9], 'width="95%" cellpadding="1" cellspacing="1" border="0"' ) . html_tag( 'tr', html_tag( 'td', '' . _("Recent Searches") . '', 'center' ) ) . html_tag( 'tr' ) . html_tag( 'td' ) . html_tag( 'table', '', 'center', '', 'width="100%" cellpadding="0" cellspacing="0" border="0"' ); for ($i=1; $i <= $recent_count; ++$i) { if (isset($attributes['search_folder'][$i])) { if ($attributes['search_folder'][$i] == "") { $attributes['search_folder'][$i] = "INBOX"; } } if ($i % 2) { echo html_tag( 'tr', '', '', $color[0] ); } else { echo html_tag( 'tr', '', '', $color[0] ); } if (isset($attributes['search_what'][$i]) && !empty($attributes['search_what'][$i])) { echo html_tag( 'td', $attributes['search_folder'][$i], 'left', '', 'width="35%"' ) . html_tag( 'td', $attributes['search_what'][$i], 'left' ) . html_tag( 'td', $attributes['search_where'][$i], 'center' ) . html_tag( 'td', '', 'right' ) . "" . _("save") . '' . ' | ' . '' . _("search") . '' . ' | ' . "" . _("forget") . '' . ''; } } echo '
'; } if (isset($newsort)) { $sort = $newsort; session_register('sort'); } /********************************************************************* * Check to see if we can use cache or not. Currently the only time * * when you will not use it is when a link on the left hand frame is * * used. Also check to make sure we actually have the array in the * * registered session data. :) * *********************************************************************/ 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; } */ /* Search Form */ echo html_tag( 'div', '' . _("Current Search") . '', 'left' ) . "\n" . '
' . html_tag( 'table', '', '', '', 'width="95%" cellpadding="0" cellspacing="0" border="0"' ) . html_tag( 'tr' ) . html_tag( 'td', '', 'left' ) . ''. " \n"; if ( !isset( $what ) ) { $what = ''; } if ( !isset( $where ) ) { $where = ''; } $what_disp = str_replace(',', ' ', $what); $what_disp = str_replace('\\\\', '\\', $what_disp); $what_disp = str_replace('\\"', '"', $what_disp); $what_disp = str_replace('"', '"', $what_disp); echo html_tag( 'td', '' . "\n", 'center' ) . html_tag( 'td', '', 'right' ) . "\n" . " \n". html_tag( 'td', '' . "\n", 'center', '', 'colspan="3"' ) . " \n". "
\n". " \n". "\n"; do_hook('search_after_form'); /* search all folders option still in the works. returns a table for each folder it finds a match in. */ $old_value = 0; if ($allow_thread_sort == TRUE) { $old_value = $allow_thread_sort; $allow_thread_sort = FALSE; } if ($search_all == 'all') { $mailbox == ''; $boxcount = count($boxes); echo '
' . _("Search Results") . "

\n"; for ($x=0;$x<$boxcount;$x++) { if (!in_array('noselect', $boxes[$x]['flags'])) { $mailbox = $boxes[$x]['unformatted']; } if (($submit == _("Search") || $submit == 'Search_no_update') && !empty($what)) { sqimap_mailbox_select($imapConnection, $mailbox); $msgs = sqimap_search($imapConnection, $where, $what, $mailbox, $color, 0, $search_all, $count_all); $count_all = count($msgs); printSearchMessages($msgs, $mailbox, $count_all, $imapConnection, false, false); array_push($perbox_count, $count_all); } } for ($i=0;$i
' . _("No Messages Found") . '
'; } } /* search one folder option */ else { if (($submit == _("Search") || $submit == 'Search_no_update') && !empty($what)) { echo '
' . html_tag( 'div', '' . _("Search Results") . '', 'center' ) . "\n"; sqimap_mailbox_select($imapConnection, $mailbox); $msgs = sqimap_search($imapConnection, $where, $what, $mailbox, $color, 0, $search_all, $count_all); if (count($msgs)) { printSearchMessages($msgs, $mailbox, count($msgs), $imapConnection, false, false); } else { echo '
' . _("No Messages Found") . '
'; } } } /* must have search terms to search */ if ($submit == _("Search") && empty($what)) { echo '
' . html_tag( 'div', 'Please enter something to search for', 'center' ) . "\n"; } $allow_thread_sort = $old_value; do_hook('search_bottom'); sqimap_logout ($imapConnection); echo ''; ?>