$tit\n"; } // function to get the recent searches and put them in arrays function get_recent($pref_name, $username, $data_dir) { $array = array (); $recent_count = getPref($data_dir, $username, 'search_memory', 0); $n = 0; for ($x=1;$x<=$recent_count;$x++) { $array[$n] = getPref($data_dir, $username, "$pref_name" . "$x", ""); $n++; } return $array; } // function to get the saved searches and put them in arrays function get_saved($pref_name, $username, $data_dir) { $array = array (); $n = 0; for ($x=1;;$x++) { $array[$n] = getPref($data_dir, $username, "$pref_name" . "$x", ""); if ($array[$n] == "") { array_pop($array); return $array; } $n++; } return $array; } // function to update pref file with recent searches function update_recent($array, $recent_value, $pref_name, $username, $data_dir) { $array = get_recent($pref_name, $username, $data_dir); array_push ($array, $recent_value); array_shift ($array); $recent_count = getPref($data_dir, $username, 'search_memory', 0); $n=0; for ($i=1;$i<=$recent_count;$i++) { setPref($data_dir, $username, "$pref_name" . "$i", $array[$n]); $n++; } } // function to "forget" a recent search function forget_recent($forget_index, $username, $data_dir) { $what_array = get_recent("search_what", $username, $data_dir); $where_array = get_recent("search_where", $username, $data_dir); $folder_array = get_recent("search_folder", $username, $data_dir); array_splice($what_array, $forget_index, 1); array_splice($where_array, $forget_index, 1); array_splice($folder_array, $forget_index, 1); array_unshift($what_array, ""); array_unshift($where_array, ""); array_unshift($folder_array, ""); $recent_count = getPref($data_dir, $username, 'search_memory', 0); $n=0; for ($i=1;$i<=$recent_count;$i++) { setPref($data_dir, $username, "search_what" . "$i", $what_array[$n]); setPref($data_dir, $username, "search_where" . "$i", $where_array[$n]); setPref($data_dir, $username, "search_folder" . "$i", $folder_array[$n]); $n++; } // function to delete a saved search } function delete_saved($delete_index, $username, $data_dir) { $saved_what_array = get_saved("saved_what", $username, $data_dir); $saved_where_array = get_saved("saved_where", $username, $data_dir); $saved_folder_array = get_saved("saved_folder", $username, $data_dir); array_splice($saved_what_array, $delete_index, 1); array_splice($saved_where_array, $delete_index, 1); array_splice($saved_folder_array, $delete_index, 1); $n=0; $saved_count = count($saved_what_array); $last_element = $saved_count + 1; if ($last_element < 1) { for ($i=1;$i<=$saved_count;$i++) { setPref($data_dir, $username, "saved_what" . "$i", $saved_what_array[$n]); setPref($data_dir, $username, "saved_where" . "$i", $saved_where_array[$n]); setPref($data_dir, $username, "saved_folder" . "$i", $saved_folder_array[$n]); $n++; } } removePref($data_dir, $username, "saved_what" . "$last_element"); removePref($data_dir, $username, "saved_where" . "$last_element"); removePref($data_dir, $username, "saved_folder" . "$last_element"); } // function to save a search from recent to saved function save_recent($save_index, $username, $data_dir) { $what_array = get_recent("search_what", $username, $data_dir); $where_array = get_recent("search_where", $username, $data_dir); $folder_array = get_recent("search_folder", $username, $data_dir); $saved_what_once = array_slice($what_array, $save_index, 1); $saved_where_once = array_slice($where_array, $save_index, 1); $saved_folder_once = array_slice($folder_array, $save_index, 1); $saved_array = get_saved("saved_what", $username, $data_dir); $saved_count = (count($saved_array) + 1); setPref($data_dir, $username, "saved_what" . "$saved_count", $saved_what_once[0]); setPref($data_dir, $username, "saved_where" . "$saved_count", $saved_where_once[0]); setPref($data_dir, $username, "saved_folder" . "$saved_count", $saved_folder_once[0]); } /* ------------------------ main ------------------------ */ // reset these arrays on each page load just in case $what_array = array (); $where_array = array (); $folder_array = array (); $saved_what_array = array (); $saved_where_array = array (); $saved_folder_array = array (); $search_all = "none"; // 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 ($mailbox == 'None' || $mailbox == "" ) { $mailbox = $boxes[0]['unformatted']; } if ($mailbox == "All Folders") { $search_all = "all"; } // page headers displayPageHeader($color, $mailbox); // if the page is called from a search link or button update recent values // in pref files here if ($submit == "Search" && !empty($what)) { update_recent($what_array, $what, "search_what", $username, $data_dir); update_recent($where_array, $where, "search_where", $username, $data_dir); update_recent($folder_array, $mailbox, "search_folder", $username, $data_dir); } // if the page is called from a "forget recent" link remove search from pref file elseif ($submit == "forget") { forget_recent($count, $username, $data_dir); } // if the page is called from a "save recent" link add search to saved searches elseif ($submit == "save") { save_recent($count, $username, $data_dir); } elseif ($submit == "delete") { delete_saved($count, $username, $data_dir); } // if the page is called from a "delete saved" link delete saved search do_hook('search_before_form'); echo "
\n". " \n". " \n". "
\n". "
"._("Search")."
\n". "
\n"; # ' '; // update the recent and saved searches from the pref files $what_array = get_recent("search_what", $username, $data_dir); $where_array = get_recent("search_where", $username, $data_dir); $folder_array = get_recent("search_folder", $username, $data_dir); $recent_count = getPref($data_dir, $username, 'search_memory', 0); $saved_what_array = get_saved("saved_what", $username, $data_dir); $saved_where_array = get_saved("saved_where", $username, $data_dir); $saved_folder_array = get_saved("saved_folder", $username, $data_dir); $saved_count = count($saved_what_array); /* Saved Search Table */ if ($saved_count > 0) { echo "
\n" . "" . '
Saved Searches
' . ''; for ($i=0; $i < $saved_count; ++$i) { if ($i % 2) { echo ""; } else { echo ""; } echo "" . "" . "" . ''; } echo "
$saved_folder_array[$i]$saved_what_array[$i]$saved_where_array[$i]' . '' . _("edit") . '' . ' | ' . '' . _("search") . '' . ' | ' . "" . _("delete") . '' . '
\n"; } /* Recent Search Table */ if ($recent_count > 0) { echo "
\n" . "\n" . '
Recent Searches
' . ''; for ($i=0; $i < $recent_count; ++$i) { if (!empty($what_array[$i])) { if ($folder_array[$i] == "") { $folder_array[$i] = "INBOX"; } if ($i % 2) { echo ""; } else { echo ""; } echo "" . "" . "" . ''; } } echo '
$folder_array[$i]$what_array[$i]$where_array[$i]' . "" . _("save") . '' . ' | ' . '' . _("search") . '' . ' | ' . "" . _("forget") . '' . '

'; } /* Search Form */ echo 'Current Search' . ' ' . ' ' . ' \n". " \n". "\n". " \n". " \n". "\n". "
'. " \n"; $what_disp = str_replace(',', ' ', $what); $what_disp = str_replace('\\\\', '\\', $what_disp); $what_disp = str_replace('\\"', '"', $what_disp); $what_disp = str_replace('"', '"', $what_disp); echo " \n". " \n". "\n" . " \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. The toggle all link does not work 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']; } echo "
Folder: $mailbox
"; if (($submit == "Search" || $submit == "Search_no_update") && !empty($what)) { sqimap_mailbox_select($imapConnection, $mailbox); sqimap_search($imapConnection, $where, $what, $mailbox, $color, $pos); } } } // search one folder option else { if (($submit == "Search" || $submit == "Search_no_update") && !empty($what)) { echo "
Search Results
\n"; sqimap_mailbox_select($imapConnection, $mailbox); sqimap_search($imapConnection, $where, $what, $mailbox, $color, $pos); } } // must have search terms to search if ($submit == "Search" && empty($what)) { echo "
Please enter something to search for
\n"; } do_hook("search_bottom"); // all done sqimap_logout ($imapConnection); echo ''; ?>