X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=src%2Fsearch.php;h=8c5532240f0300f19c5720d5d0dd4a2ad4bf21ab;hb=aeccbe701c34e4d958e9a8c558852dfb871f010c;hp=b38d10b900506aca25656617af6a19528877c894;hpb=a7d0eaf6b9baadb64a4cc740db3894ec8794f789;p=squirrelmail.git
diff --git a/src/search.php b/src/search.php
index b38d10b9..8c553224 100644
--- a/src/search.php
+++ b/src/search.php
@@ -3,17 +3,53 @@
/**
* search.php
*
- * Copyright (c) 1999-2002 The SquirrelMail Project Team
+ * Copyright (c) 1999-2003 The SquirrelMail Project Team
* Licensed under the GNU GPL. For full terms see the file COPYING.
*
* $Id$
*/
-require_once('../src/validate.php');
-require_once('../functions/imap.php');
-require_once('../functions/imap_search.php');
-require_once('../functions/array.php');
+/* Path for SquirrelMail required files. */
+define('SM_PATH','../');
+/* SquirrelMail required files. */
+require_once(SM_PATH . 'include/validate.php');
+require_once(SM_PATH . 'functions/imap.php');
+require_once(SM_PATH . 'functions/imap_search.php');
+require_once(SM_PATH . 'functions/imap_mailbox.php');
+require_once(SM_PATH . 'functions/strings.php');
+
+global $allow_thread_sort;
+
+/* get globals we may need */
+
+$key = $_COOKIE['key'];
+$username = $_SESSION['username'];
+$onetimepad = $_SESSION['onetimepad'];
+$delimiter = $_SESSION['delimiter'];
+
+if (isset($_GET['mailbox'])) {
+ $mailbox = strip_tags($_GET['mailbox']);
+}
+if (isset($_GET['submit'])) {
+ $submit = strip_tags($_GET['submit']);
+}
+if (isset($_GET['what'])) {
+ $what = $_GET['what'];
+}
+if (isset($_GET['where'])) {
+ $where = strip_tags($_GET['where']);
+}
+if (isset($_GET['checkall'])) {
+ $checkall = strip_tags($_GET['checkall']);
+}
+if (isset($_GET['count'])) {
+ $count = strip_tags($_GET['count']);
+}
+/* end of get globals */
+
+/* here are some functions, could go in imap_search.php
+ this was here, pretty handy */
function s_opt( $val, $sel, $tit ) {
echo " \n";
}
-/* ------------------------ main ------------------------ */
+/* 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;
+}
-$imapConnection = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0);
-$boxes = sqimap_mailbox_list($imapConnection);
+/* 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;
+}
-if( $mailbox == 'None' ) {
- $mailbox = $boxes[0]['unformatted'];
+/* 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++;
+ }
+ }
}
-displayPageHeader($color, $mailbox);
+/* 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++;
+ }
+}
-if( !isset( $search_memory ) ) {
- $search_memory = 0;
+/* 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);
+ }
}
-do_hook('search_before_form');
-echo "
\n".
- "
\n".
- " | |||||
';
+/* 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, $where, $what, $usecache = false, $newsort = false) {
+ global $sort, $color;
+
+ if ($cnt > 0) {
+ $msort = calc_msort($msgs, $sort);
+ 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);
+ $toggle_all = get_selectall_link(1, $sort);
+
+ 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 { - setpref( $data_dir, $username, "search_what$frm", $$what ); - setpref( $data_dir, $username, "search_where$frm", $$where ); + 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") + . '' + . ' |