$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++) { $prefval = getPref($data_dir, $username, $key."$x", ""); if ($prefval == "") { break; } else { $saved_attributes[$key][$x] = $prefval; } } } 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, 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; if (isset($saved_array['saved_what'])) { $saved_count = (count($saved_array['saved_what']) + 1); } else { // there are no saved searches. Function is used to save first search $saved_count = 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, $where, $what, $usecache = false, $newsort = false) { global $sort, $color, $allow_server_sort, $allow_server_thread; if ($cnt > 0) { if ((!empty($allow_server_sort) && $allow_server_sort) || (!empty($allow_server_thread) && $allow_server_thread)) { $msort = $msgs; } else { $msort = calc_msort($msgs, $sort); } if ( $mailbox == 'INBOX' ) { $showbox = _("INBOX"); } else { $showbox = imap_utf7_decode_local($mailbox); } echo html_tag( 'div', '' . _("Folder:") . ' '. htmlspecialchars($showbox) .'','center') . "\n"; $msg_cnt_str = get_msgcnt_str(1, $cnt, $cnt); $toggle_all = get_selectall_link(1, $sort); $safe_name = preg_replace("/[^0-9A-Za-z_]/", '_', $mailbox); $form_name = "FormMsgs" . $safe_name; echo '
\n\n"; } } /* ------------------------ 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&"; displayPageHeader($color, $mailbox, "comp_in_new('$comp_uri');", false); } else { displayPageHeader($color, $mailbox); } /* See how the page was called and fire off correct function */ if (empty($submit) && !empty($what)) { $submit = _("Search"); } // need to verify security token if user wants to do anything if (!empty($submit)) { sm_validate_security_token($submitted_token, 3600, TRUE); } if ($submit == _("Search") && !empty($what)) { if ($recent_count > 0) { update_recent($what, $where, $mailbox, $username, $data_dir); } } elseif ($submit == 'forget' && isset($count)) { forget_recent($count, $username, $data_dir); } elseif ($submit == 'save' && isset($count)) { save_recent($count, $username, $data_dir); } elseif ($submit == 'delete' && isset($count)) { delete_saved($count, $username, $data_dir); } do_hook('search_before_form'); echo 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); if (isset($saved_attributes['saved_what'])) { $saved_count = count($saved_attributes['saved_what']); } else { $saved_count = 0; } $count_all = 0; /* Saved Search Table */ if ($saved_count > 0) { echo "