X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=src%2Fsearch.php;h=8ace7760cb04d2182659311e9745bfa33d35e1db;hp=d62f671c8e9154807dbbdf5143555465a64aaa9e;hb=548a552a51c35aff7b8a9db77fade2835685f2f5;hpb=83a92ae855277d0ed84bfb85d8c8191a53e1187d;ds=sidebyside
diff --git a/src/search.php b/src/search.php
index d62f671c..8ace7760 100644
--- a/src/search.php
+++ b/src/search.php
@@ -15,10 +15,11 @@ require_once('../functions/imap_search.php');
require_once('../functions/array.php');
require_once('../functions/strings.php');
+global $allow_thread_sort;
-// here are some functions, could go in imap_search.php
-// this was here, pretty handy
+/* here are some functions, could go in imap_search.php
+ this was here, pretty handy */
function s_opt( $val, $sel, $tit ) {
echo " \n";
}
-// function to get the recent searches and put them in arrays
-
-function get_recent($pref_name, $username, $data_dir) {
- $array = array ();
+/* 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);
- $n = 0;
for ($x=1;$x<=$recent_count;$x++) {
- $array[$n] = getPref($data_dir, $username, "$pref_name" . "$x", "");
- $n++;
+ reset($types);
+ foreach ($types as $key) {
+ $attributes[$key][$x] = getPref($data_dir, $username, $key.$x, "");
+ }
}
- return $array;
+ return $attributes;
}
-// 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++;
+/* 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 $array;
+ return $saved_attributes;
}
-// 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 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 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, "");
+ $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++) {
- 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++;
+ reset($types);
+ foreach ($types as $key) {
+ setPref($data_dir, $username, $key.$i, $attributes[$key][$n]);
+ }
+ $n++;
}
-
-// function to delete a saved search
}
+
+/* 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);
+ $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($saved_what_array);
+ $saved_count = count($attributes['saved_what']);
$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++;
+ 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);
}
- 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 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]);
+ $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++;
+ }
}
-
-
/* ------------------------ 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
+/* 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 ($mailbox == 'None' || $mailbox == "" ) {
+/* 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 ($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 (isset($composenew) && $composenew) {
+ displayPageHeader($color, $mailbox, 'comp_in_new();');
+} 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 the page is called from a "forget recent" link remove search from pref file
-elseif ($submit == "forget") {
+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);
}
-// if the page is called from a "save recent" link add search to saved searches
-elseif ($submit == "save") {
+elseif ($submit == 'save') {
save_recent($count, $username, $data_dir);
}
-elseif ($submit == "delete") {
+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".
- " "._("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
+ "\n".
+ "\n".
+ "" . _("Search") . "\n".
+ " | \n".
+ " \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 " Saved Searches\n".
- "\n";
- for ($i=0;$i<$saved_count;$i++) {
- echo "$saved_folder_array[$i] | \n".
- "$saved_what_array[$i] | \n".
- "$saved_where_array[$i] \n".
- "".
- "edit\n".
- " | search\n".
- " | delete".
- " ";
+ echo " \n"
+ . ""
+ . 'Saved Searches | '
+ . '';
+ for ($i=0; $i < $saved_count; ++$i) {
+ if ($i % 2) {
+ echo "";
+ } else {
+ echo " ";
+ }
+ echo "".$saved_attributes['saved_folder'][$i]." | "
+ . "".$saved_attributes['saved_what'][$i]." | "
+ . "".$saved_attributes['saved_where'][$i]." | "
+ . ''
+ . '' . _("edit") . ''
+ . ' | '
+ . '' . _("search") . ''
+ . ' | '
+ . ""
+ . _("delete")
+ . ''
+ . ' | ';
}
-echo " \n";
+ echo " | | \n";
}
-// recent search table
-
+/* Recent Search Table */
if ($recent_count > 0) {
- echo " Recent Searches\n".
- "\n";
- for ($i=0;$i<$recent_count;$i++) {
- if (!empty($what_array[$i])) {
- if ($folder_array[$i] == "") {
- $folder_array[$i] = "INBOX";
- }
- echo "$folder_array[$i] | \n".
- "$what_array[$i] | \n".
- "$where_array[$i] ".
- "save\n".
- " | search\n".
- " | forget".
- " | \n";
+ echo " \n"
+ . "\n"
+ . '' . _("Recent Searches") . ' | '
+ . '';
+ 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 "";
+ } else {
+ echo " ";
+ }
+ if (isset($attributes['search_what'][$i]) &&
+ !empty($attributes['search_what'][$i])) {
+ echo "".$attributes['search_folder'][$i]." | "
+ . "".$attributes['search_what'][$i]." | "
+ . "".$attributes['search_where'][$i]." | "
+ . ''
+ . ""
+ . _("save")
+ . ''
+ . ' | '
+ . '' . _("search") . ''
+ . ' | '
+ . ""
+ . _("forget")
+ . ''
+ . ' | ';
}
- }
- echo " \n".
- " \n";
+ }
+ echo ' | ';
}
-// search form
-echo "Current Search";
-echo " |