diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-02-25 01:00:48 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-02-25 01:00:48 +0000 |
commit | 508b6d60efdf646a8efab9c2cd5a97091f873d53 (patch) | |
tree | 6ff18a47cb6dead18d23d5bd1c19298ffb03691a | |
parent | b9b87a04facdb8eb63e5b6385151066d6908e599 (diff) | |
download | forums-508b6d60efdf646a8efab9c2cd5a97091f873d53.tar forums-508b6d60efdf646a8efab9c2cd5a97091f873d53.tar.gz forums-508b6d60efdf646a8efab9c2cd5a97091f873d53.tar.bz2 forums-508b6d60efdf646a8efab9c2cd5a97091f873d53.tar.xz forums-508b6d60efdf646a8efab9c2cd5a97091f873d53.zip |
Fix issues with view posts since last visit, errors on next page, re-introduce external stopword list, examine feasibility of stemmer, tidy ups ...
git-svn-id: file:///svn/phpbb/trunk@2205 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/config.php | 51 | ||||
-rw-r--r-- | phpBB/develop/search_fill.php | 53 | ||||
-rw-r--r-- | phpBB/includes/search.php | 123 | ||||
-rw-r--r-- | phpBB/language/lang_english/search_synonyms.txt | 46 | ||||
-rw-r--r-- | phpBB/search.php | 789 | ||||
-rw-r--r-- | phpBB/templates/Euclid/search_results_posts.tpl | 2 | ||||
-rw-r--r-- | phpBB/templates/Euclid/search_results_topics.tpl | 2 | ||||
-rw-r--r-- | phpBB/templates/subSilver/search_body.tpl | 99 |
8 files changed, 589 insertions, 576 deletions
diff --git a/phpBB/config.php b/phpBB/config.php index e69de29bb2..ab82bb7b92 100644 --- a/phpBB/config.php +++ b/phpBB/config.php @@ -0,0 +1,51 @@ +<?php + +// +// phpBB 2.x auto-generated config file +// Do not change anything in this file! +// + +$dbms = "mysql4"; +$dbhost = "localhost"; +$dbname = "dev_starstreak_net"; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; + +$dbhost = "localhost"; +$dbname = "phpbb_com"; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; +/* + +$dbhost = "localhost"; +$dbname = "phpbb_test"; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; + +$dbms = "mssql-odbc"; + +$dbhost = "phpbb_test_mssql_odbc"; +$dbname = ""; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; + +$dbms = "msaccess"; + +$dbhost = "phpbb_test_msaccess_odbc"; +$dbname = ""; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; + +$dbms = "mssql"; + +$dbhost = "localhost"; +$dbname = "phpbb_com"; +$dbuser = "devhttp"; +$dbpasswd = "efx2KarizonaD"; +*/ + +$table_prefix = "phpbb_"; + +define('PHPBB_INSTALLED', true); + +?>
\ No newline at end of file diff --git a/phpBB/develop/search_fill.php b/phpBB/develop/search_fill.php index c03c6f9eb1..8cfea84f02 100644 --- a/phpBB/develop/search_fill.php +++ b/phpBB/develop/search_fill.php @@ -7,55 +7,41 @@ // Remove or comment the next line (die(".... ) to enable this script. // Do NOT FORGET to either remove this script or disable it after you have used it. // -die("Please read the first lines of this script for instructions on how to enable it"); // // Do not change anything below this line. // - set_time_limit(0); -$common_percent = 0.4; // Percentage of posts in which a word has to appear to be marked as common $phpbb_root_path = "../"; - include($phpbb_root_path . 'extension.inc'); -include($phpbb_root_path . 'config.'.$phpEx); -include($phpbb_root_path . 'includes/constants.'.$phpEx); -include($phpbb_root_path . 'includes/db.'.$phpEx); -include($phpbb_root_path . 'includes/functions.'.$phpEx); +include($phpbb_root_path . 'common.'.$phpEx); include($phpbb_root_path . 'includes/search.'.$phpEx); +$common_percent = 0.4; // Percentage of posts in which a word has to appear to be marked as common + print "<html>\n<body>\n"; // // Try and load stopword and synonym files // -//$stopword_array = file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_stopwords.txt"); -//$synonym_array = file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_synonyms.txt"); - // This needs fixing! Shouldn't be hardcoded to English files! -//$stopword_array = file($phpbb_root_path . "language/lang_english/search_stopwords.txt"); +$stopword_array = file($phpbb_root_path . "language/lang_english/search_stopwords.txt"); $synonym_array = file($phpbb_root_path . "language/lang_english/search_synonyms.txt"); -/* -for ($j = 0; $j < count($stopword_array); $j++) -{ - $filter_word = trim(strtolower($stopword_array[$j])); - $search[] = "/\b" . phpbb_preg_quote($filter_word, "/") . "\b/is"; - $replace[] = ''; -} -*/ // // Fetch a batch of posts_text entries // -$sql = "SELECT count(*) as total, max(post_id) as max_post_id +$sql = "SELECT COUNT(*) as total, MAX(post_id) as max_post_id FROM ". POSTS_TEXT_TABLE; -if(!$result = $db->sql_query($sql)) +if ( !($result = $db->sql_query($sql)) ) { $error = $db->sql_error(); die("Couldn't get maximum post ID :: " . $sql . " :: " . $error['message']); } + $max_post_id = $db->sql_fetchrow($result); + $totalposts = $max_post_id['total']; $max_post_id = $max_post_id['max_post_id']; @@ -74,15 +60,18 @@ for(;$postcounter <= $max_post_id; $postcounter += $batchsize) WHERE post_id BETWEEN $batchstart AND $batchend"; - if(!$posts_result = $db->sql_query($sql)) + if( !($result = $db->sql_query($sql)) ) { $error = $db->sql_error(); die("Couldn't get post_text :: " . $sql . " :: " . $error['message']); } - $rowset = $db->sql_fetchrowset($posts_result); + $rowset = $db->sql_fetchrowset($result); + $db->sql_freeresult($result); - if( $post_rows = $db->sql_numrows($posts_result) ) + $post_rows = count($rowset); + + if( $post_rows ) { // $sql = "LOCK TABLES ".POST_TEXT_TABLE." WRITE"; @@ -92,18 +81,14 @@ for(;$postcounter <= $max_post_id; $postcounter += $batchsize) // For every post in the batch: for($post_nr = 0; $post_nr < $post_rows; $post_nr++ ) { - print "."; flush(); - $matches = array(); $post_id = $rowset[$post_nr]['post_id']; - $text = clean_words("post", $rowset[$post_nr]['post_text'], $synonym_array); // Cleaned up post - $text_title = clean_words("post", $rowset[$post_nr]['post_subject'], $synonym_array); $matches = array(); - $matches['text'] = split_words($text); - $matches['title'] = split_words($text_title); + $matches['text'] = split_words(clean_words("post", $rowset[$post_nr]['post_text'], $stopword_array, $synonym_array)); + $matches['title'] = split_words(clean_words("post", $rowset[$post_nr]['post_subject'], $stopword_array, $synonym_array)); while( list($match_type, $match_ary) = @each($matches) ) { @@ -190,13 +175,7 @@ for(;$postcounter <= $max_post_id; $postcounter += $batchsize) // $result = $db->sql_query($sql); } - else - { - print "Couldn't get rowcount for number of posts<br>$sql<br>\n"; - } // All posts; - $db->sql_freeresult($posts_result); - // Remove common words after the first 2 batches and after every 4th batch after that. if( $batchcount % 4 == 3 ) { diff --git a/phpBB/includes/search.php b/phpBB/includes/search.php index 8304ec77c5..4898e747f5 100644 --- a/phpBB/includes/search.php +++ b/phpBB/includes/search.php @@ -19,7 +19,7 @@ * ***************************************************************************/ -function clean_words($mode, &$entry, &$synonym_list) +function clean_words($mode, &$entry, &$stopword_list, &$synonym_list) { // Weird, $init_match doesn't work with static when double quotes (") are used... static $drop_char_match = array('^', '$', '&', '(', ')', '<', '>', '`', "'", '|', ',', '@', '_', '?', '%', '-', '~', '+', '.', '[', ']', '{', '}', ':', '\\', '/', '=', '#', '\'', ';', '!'); @@ -37,16 +37,16 @@ function clean_words($mode, &$entry, &$synonym_list) if( $mode == "post" ) { - // HTML entities like - $entry = preg_replace("/\b&[a-z]+;\b/is", " ", $entry); // Replace line endings by a space $entry = preg_replace("/[\n\r]/is", " ", $entry); + // HTML entities like + $entry = preg_replace("/\b&[a-z]+;\b/", " ", $entry); // Remove URL's - $entry = preg_replace("/\b[a-z0-9]+:\/\/[a-z0-9\.\-]+(\/[a-z0-9\?\.%_\-\+=&\/]+)?/si", " ", $entry); + $entry = preg_replace("/\b[a-z0-9]+:\/\/[a-z0-9\.\-]+(\/[a-z0-9\?\.%_\-\+=&\/]+)?/", " ", $entry); // Quickly remove BBcode. - $entry = preg_replace("/\[img:[a-z0-9]{10,}\].*?\[\/img:[a-z0-9]{10,}\]/is", " ", $entry); - $entry = preg_replace("/\[\/?url(=.*?)?\]/si", " ", $entry); - $entry = preg_replace("/\[\/?[a-z\*=\+\-]+(\:?[0-9a-z]+)?:[a-z0-9]{10,}(\:[a-z0-9]+)?=?.*?\]/si", " ", $entry); + $entry = preg_replace("/\[img:[a-z0-9]{10,}\].*?\[\/img:[a-z0-9]{10,}\]/", " ", $entry); + $entry = preg_replace("/\[\/?url(=.*?)?\]/", " ", $entry); + $entry = preg_replace("/\[\/?[a-z\*=\+\-]+(\:?[0-9a-z]+)?:[a-z0-9]{10,}(\:[a-z0-9]+)?=?.*?\]/", " ", $entry); } else if( $mode == "search" ) { @@ -55,7 +55,7 @@ function clean_words($mode, &$entry, &$synonym_list) } // Replace numbers on their own - $entry = preg_replace("/\b[0-9]+\b/si", " ", $entry); + $entry = preg_replace("/\b[0-9]+\b/", " ", $entry); // // Filter out strange characters like ^, $, &, change "it's" to "its" @@ -69,8 +69,21 @@ function clean_words($mode, &$entry, &$synonym_list) { $entry = str_replace("*", " ", $entry); - // 'words' that consist of <=3 or >=50 characters are removed. - $entry = preg_replace("/\b([a-z0-9]{1,3}|[a-z0-9]{50,})\b/si", " ", $entry); + // 'words' that consist of <=3 or >=25 characters are removed. + $entry = preg_replace("/\b([a-z0-9]{1,3}|[a-z0-9]{25,})\b/", " ", $entry); + } + + if( !empty($stopword_list) ) + { + for ($j = 0; $j < count($stopword_list); $j++) + { + $stopword = trim($stopword_list[$j]); + + if ( $mode == "post" || ( $stopword != "not" && $stopword != "and" && $stopword != "or" ) ) + { + $entry = preg_replace("/\b" . $stopword . "\b/", " ", $entry); + } + } } if( !empty($synonym_list) ) @@ -78,11 +91,9 @@ function clean_words($mode, &$entry, &$synonym_list) for ($j = 0; $j < count($synonym_list); $j++) { list($replace_synonym, $match_synonym) = split(" ", trim(strtolower($synonym_list[$j]))); - - if( ( $match_synonym != "and" && $match_synonym != "or" && $match_synonym != "not" && - $replace_synonym != "and" && $replace_synonym != "or" && $replace_synonym != "not" ) || $mode == "post" ) + if ( $mode == "post" || ( $match_synonym != "not" && $match_synonym != "and" && $match_synonym != "or" ) ) { - $entry = preg_replace("/\b" . phpbb_preg_quote(trim($match_synonym), "/") . "\b/is", " " . trim($replace_synonym) . " ", $entry); + $entry = preg_replace("/\b" . trim($match_synonym) . "\b/", " " . trim($replace_synonym) . " ", $entry); } } } @@ -98,7 +109,7 @@ function split_words(&$entry, $mode = "post") } else { - preg_match_all("/(\*?[a-z0-9]+\*?)|\b([a-z0-9]+)\b/is", $entry, $split_entries); + preg_match_all("/(\*?[a-z0-9]+\*?)|\b([a-z0-9]+)\b/", $entry, $split_entries); } return $split_entries[1]; @@ -108,11 +119,12 @@ function add_search_words($post_id, $post_text, $post_title = "") { global $db, $phpbb_root_path, $board_config, $lang; + $stopwords_array = @file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_stopwords.txt"); $synonym_array = @file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_synonyms.txt"); $search_raw_words = array(); - $search_raw_words['text'] = split_words(clean_words("post", $post_text, $synonym_array)); - $search_raw_words['title'] = split_words(clean_words("post", $post_title, $synonym_array)); + $search_raw_words['text'] = split_words(clean_words('post', $post_text, $stopword_array, $synonym_array)); + $search_raw_words['title'] = split_words(clean_words('post', $post_title, $stopword_array, $synonym_array)); $word = array(); $word_insert_sql = array(); @@ -389,4 +401,81 @@ function remove_unmatched_words() return 0; } +// +// Username search +// +function username_search($search_match, $is_inline_review = 0, $default_list = "") +{ + global $db, $board_config, $template, $lang, $images, $theme, $phpEx, $phpbb_root_path; + global $starttime; + + $author_list = ''; + if ( !empty($search_match) ) + { + $username_search = preg_replace("/\*/", "%", trim(strip_tags($search_match))); + + $sql = "SELECT username + FROM " . USERS_TABLE . " + WHERE username LIKE '" . str_replace("\'", "''", $username_search) . "' + ORDER BY username"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain search results", "", __LINE__, __FILE__, $sql); + } + + if ( $row = $db->sql_fetchrow($result) ) + { + do + { + $author_list .= '<option value="' . $row['username'] . '">' .$row['username'] . '</option>'; + } + while ( $row = $db->sql_fetchrow($result) ); + } + else + { + $author_list = '<option>' . $lang['No_match']. '</option>'; + } + + } + + if ( !$is_inline_review ) + { + $gen_simple_header = TRUE; + $page_title = $lang['Search']; + include($phpbb_root_path . 'includes/page_header.'.$phpEx); + + $template->set_filenames(array( + "search_user_body" => "search_username.tpl") + ); + + $template->assign_vars(array( + "L_CLOSE_WINDOW" => $lang['Close_window'], + "L_SEARCH_USERNAME" => $lang['Find_username'], + "L_UPDATE_USERNAME" => $lang['Select_username'], + "L_SELECT" => $lang['Select'], + "L_SEARCH" => $lang['Search'], + "L_SEARCH_EXPLAIN" => $lang['Search_author_explain'], + "L_CLOSE_WINDOW" => $lang['Close_window'], + + "S_AUTHOR_OPTIONS" => $author_list, + "S_SEARCH_ACTION" => append_sid("search.$phpEx?mode=searchuser")) + ); + + // + // If we have results then dump them out and enable + // the appropriate switch block + // + if ( !empty($author_list) ) + { + $template->assign_block_vars("switch_select_name", array()); + } + + $template->pparse("search_user_body"); + + include($phpbb_root_path . 'includes/page_tail.'.$phpEx); + } + + return($author_list); +} + ?>
\ No newline at end of file diff --git a/phpBB/language/lang_english/search_synonyms.txt b/phpBB/language/lang_english/search_synonyms.txt index da4adbd7cf..0359039e0e 100644 --- a/phpBB/language/lang_english/search_synonyms.txt +++ b/phpBB/language/lang_english/search_synonyms.txt @@ -8,30 +8,16 @@ andy andrew anemia anaemia anemic anaemic anesthesia anaesthesia -anesthesiologist anaesthesiologist -anesthesiololy anaesthesiology -anesthetic anaesthetic -anesthetist anaesthetist appologize appologise -appologized appologised -appologizing appologising -apr april archean archaean archeology archaeology archeozoic archaeozoic armor armour -armored armoured -armory armoury -armorment armourment artic arctic attachment attachement -attachments attachements attendence attendance -aug august barbecue barbeque -bbq barbeque behavior behaviour -behaviorism behaviourism biassed biased biol biology buletin bulletin @@ -43,18 +29,13 @@ cenozoic caenozoic center centre check cheque color colour -colored coloured -coloring colouring -colorless colourless comission commission comittee committee commitee committee conceed concede creating createing curiculum curriculum -dec december defense defence -dept department develope develop discription description dulness dullness @@ -66,7 +47,6 @@ exhorbitant exorbitant exhuberant exuberant existance existence favorite favourite -feb february fetus foetus ficticious fictitious flavor flavour @@ -78,66 +58,43 @@ geneology genealogy grammer grammar gray grey guerilla guerrilla -gynecological gynaecological -gynecologist gynaecologist gynecology gynaecology harbor harbour heighth height hemaglobin haemaglobin hematin haematin hematite haematite -hematologist haematologist hematology haematology -hemophilia haemophilia -hemorrhage haemorrhage -hemorrhoids haemorrhoids honor honour innoculate inoculate installment instalment irrelevent irrelevant irrevelant irrelevant -jan january jeweler jeweller judgement judgment -jul july -jun june labeled labelled labor labour laborer labourer laborers labourers laboring labouring -lib library licence license liesure leisure liquify liquefy maintainance maintenance maintenence maintenance -marshal marshall medieval mediaeval -medievalism mediaevalism -medievalist mediaevalist -meg margaret meter metre milage mileage millipede millepede miscelaneous miscellaneous morgage mortgage noticable noticeable -nov november occurence occurrence -oct october offense offence ommision omission ommission omission optimize optimize -optimizer optimiser -optimizing optimising -optimized optimised -organisation organization organise organize -organised organized -organising organizing -organiser organizer pajamas pyjamas paleography palaeography paleolithic palaeolithic @@ -158,7 +115,6 @@ personel personnel practise practice program programme psych psychology -qld queensland questionaire questionnaire rarify rarefy reccomend recommend @@ -178,7 +134,6 @@ supersede supercede suprise surprise surprize surprise synchronise synchronize -tas tasmania temperary temporary theater theatre threshhold threshold @@ -187,7 +142,6 @@ truely truly truley truly useable usable valor valour -vic victoria vigor vigour vol volume whack wack diff --git a/phpBB/search.php b/phpBB/search.php index 8ac4ecf9df..89a9591b93 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -29,7 +29,7 @@ include($phpbb_root_path . 'includes/search.'.$phpEx); // // Start session management // -$userdata = session_pagestart($user_ip, PAGE_SEARCH, $board_config['session_length']); +$userdata = session_pagestart($user_ip, PAGE_SEARCH); init_userprefs($userdata); // // End session management @@ -44,68 +44,68 @@ if( isset($HTTP_POST_VARS['mode']) || isset($HTTP_GET_VARS['mode']) ) } else { - $mode = ""; + $mode = ''; } if( isset($HTTP_POST_VARS['search_keywords']) || isset($HTTP_GET_VARS['search_keywords']) ) { - $query_keywords = ( isset($HTTP_POST_VARS['search_keywords']) ) ? $HTTP_POST_VARS['search_keywords'] : $HTTP_GET_VARS['search_keywords']; + $search_keywords = ( isset($HTTP_POST_VARS['search_keywords']) ) ? $HTTP_POST_VARS['search_keywords'] : $HTTP_GET_VARS['search_keywords']; } else { - $query_keywords = ""; + $search_keywords = ''; } if( isset($HTTP_POST_VARS['search_author']) || isset($HTTP_GET_VARS['search_author'])) { - $query_author = ( isset($HTTP_POST_VARS['search_author']) ) ? $HTTP_POST_VARS['search_author'] : $HTTP_GET_VARS['search_author']; + $search_author = ( isset($HTTP_POST_VARS['search_author']) ) ? $HTTP_POST_VARS['search_author'] : $HTTP_GET_VARS['search_author']; } else { - $query_author = ""; + $search_author = ''; } $search_id = ( isset($HTTP_GET_VARS['search_id']) ) ? $HTTP_GET_VARS['search_id'] : ""; -$show_results = ( isset($HTTP_POST_VARS['showresults']) ) ? $HTTP_POST_VARS['showresults'] : "posts"; +$show_results = ( isset($HTTP_POST_VARS['show_results']) ) ? $HTTP_POST_VARS['show_results'] : "posts"; -if( isset($HTTP_POST_VARS['addterms']) ) +if( isset($HTTP_POST_VARS['search_terms']) ) { - $search_all_terms = ( $HTTP_POST_VARS['addterms'] == "all" ) ? 1 : 0; + $search_terms = ( $HTTP_POST_VARS['search_terms'] == "all" ) ? 1 : 0; } else { - $search_all_terms = 0; + $search_terms = 0; } -if( isset($HTTP_POST_VARS['searchfields']) ) +if( isset($HTTP_POST_VARS['search_fields']) ) { - $search_msg_title = ( $HTTP_POST_VARS['searchfields'] == "all" ) ? 1 : 0; + $search_fields = ( $HTTP_POST_VARS['search_fields'] == "all" ) ? 1 : 0; } else { - $search_msg_title = 0; + $search_fields = 0; } -$return_chars = ( isset($HTTP_POST_VARS['charsreqd']) ) ? intval($HTTP_POST_VARS['charsreqd']) : 200; +$return_chars = ( isset($HTTP_POST_VARS['return_chars']) ) ? intval($HTTP_POST_VARS['return_chars']) : 200; -$search_cat = ( isset($HTTP_POST_VARS['searchcat']) ) ? intval($HTTP_POST_VARS['searchcat']) : -1; -$search_forum = ( isset($HTTP_POST_VARS['searchforum']) ) ? intval($HTTP_POST_VARS['searchforum']) : -1; +$search_cat = ( isset($HTTP_POST_VARS['search_cat']) ) ? intval($HTTP_POST_VARS['search_cat']) : -1; +$search_forum = ( isset($HTTP_POST_VARS['search_forum']) ) ? intval($HTTP_POST_VARS['search_forum']) : -1; -$sortby = ( isset($HTTP_POST_VARS['sortby']) ) ? intval($HTTP_POST_VARS['sortby']) : 0; +$sort_by = ( isset($HTTP_POST_VARS['sort_by']) ) ? intval($HTTP_POST_VARS['sort_by']) : 0; -if( isset($HTTP_POST_VARS['sortdir']) ) +if( isset($HTTP_POST_VARS['sort_dir']) ) { - $sortby_dir = ( $HTTP_POST_VARS['sortdir'] == "DESC" ) ? "DESC" : "ASC"; + $sort_dir = ( $HTTP_POST_VARS['sort_dir'] == "DESC" ) ? "DESC" : "ASC"; } else { - $sortby_dir = "DESC"; + $sort_dir = "DESC"; } -if(!empty($HTTP_POST_VARS['resultdays']) ) +if(!empty($HTTP_POST_VARS['search_time']) ) { - $search_time = time() - ( intval($HTTP_POST_VARS['resultdays']) * 86400 ); + $search_time = time() - ( intval($HTTP_POST_VARS['search_time']) * 86400 ); } else { @@ -117,13 +117,13 @@ $start = ( isset($HTTP_GET_VARS['start']) ) ? intval($HTTP_GET_VARS['start']) : // // Define some globally used data // -$sortby_types = array($lang['Sort_Time'], $lang['Sort_Post_Subject'], $lang['Sort_Topic_Title'], $lang['Sort_Author'], $lang['Sort_Forum']); -$sortby_sql = array("p.post_time", "pt.post_subject", "t.topic_title", "u.username", "f.forum_id"); +$sort_by_types = array($lang['Sort_Time'], $lang['Sort_Post_Subject'], $lang['Sort_Topic_Title'], $lang['Sort_Author'], $lang['Sort_Forum']); +$sort_by_sql = array("p.post_time", "pt.post_subject", "t.topic_title", "u.username", "f.forum_id"); // // Begin core code // -if( $mode == "searchuser" ) +if( $mode == 'searchuser' ) { // // This handles the simple windowed user search @@ -143,334 +143,371 @@ if( $mode == "searchuser" ) exit; } -else if( $query_keywords != "" || $query_author != "" || $search_id ) +else if( $search_keywords != '' || $search_author != '' || $search_id ) { + $store_vars = array('search_results', 'total_match_count', 'split_search', 'sort_by', 'sort_dir', 'show_results', 'return_chars'); + // // Cycle through options ... // - if( $search_id == "newposts" || $search_id == "egosearch" || ( $query_author != "" && $query_keywords == "" ) ) + if ( $search_id == 'newposts' || $search_id == 'egosearch' || $search_id == 'unanswered' || $search_keywords != '' || $search_author != '' ) { - if( $search_id == "newposts" ) + if ( $search_id == 'newposts' || $search_id == 'egosearch' || ( $search_author != '' && $search_keywords == '' ) ) { - if( $userdata['session_logged_in'] ) + if ( $search_id == 'newposts' ) { - $sql = "SELECT post_id - FROM " . POSTS_TABLE . " - WHERE post_time >= " . $userdata['user_lastvisit']; + if ( $userdata['session_logged_in'] ) + { + $sql = "SELECT post_id + FROM " . POSTS_TABLE . " + WHERE post_time >= " . $userdata['user_lastvisit']; + } + else + { + header("Location: login.$phpEx?redirect=search&search_id=newposts"); + exit; + } + + $show_results = "topics"; + $sort_by = 0; + $sort_dir = "DESC"; } - else + else if ( $search_id == 'egosearch' ) { - message_die(GENERAL_MESSAGE, $lang['No_search_match']); + if ( $userdata['session_logged_in'] ) + { + $sql = "SELECT post_id + FROM " . POSTS_TABLE . " + WHERE poster_id = " . $userdata['user_id'];; + } + else + { + header("Location: login.$phpEx?redirect=search&search_id=egosearch"); + exit; + } + + $show_results = "topics"; + $sort_by = 0; + $sort_dir = "DESC"; } + else + { + $search_author = str_replace("*", "%", trim($search_author)); + + $sql = "SELECT user_id + FROM " . USERS_TABLE . " + WHERE username LIKE '" . str_replace("\'", "''", $search_author) . "'"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $search_author)", "", __LINE__, __FILE__, $sql); + } - $show_results = "topics"; - $sortby = 0; - $sortby_dir = "DESC"; - } - else if( $search_id == "egosearch" ) - { - $sql = "SELECT post_id - FROM " . POSTS_TABLE . " - WHERE poster_id = " . $userdata['user_id']; + $matching_userids = ''; + if ( $row = $db->sql_fetchrow($result) ) + { + do + { + $matching_userids .= ( ( $matching_userids != '' ) ? ', ' : '' ) . $row['user_id']; + } + while( $row = $db->sql_fetchrow($result) ); + } + else + { + message_die(GENERAL_MESSAGE, $lang['No_search_match']); + } - $show_results = "topics"; - $sortby = 0; - $sortby_dir = "DESC"; - } - else - { - $query_author = str_replace("*", "%", trim($query_author)); - - $sql = "SELECT user_id - FROM " . USERS_TABLE . " - WHERE username LIKE '" . str_replace("\'", "''", $query_author) . "'"; - $result = $db->sql_query($sql); - if( !$result ) - { - message_die(GENERAL_ERROR, "Couldn't obtain list of matching users (searching for: $query_author)", "", __LINE__, __FILE__, $sql); + $sql = "SELECT post_id + FROM " . POSTS_TABLE . " + WHERE poster_id IN ($matching_userids)"; } - if( $db->sql_numrows($result) == 0 ) + + if ( !($result = $db->sql_query($sql)) ) { - message_die(GENERAL_MESSAGE, $lang['No_search_match']); + message_die(GENERAL_ERROR, "Couldn't obtain matched posts list", "", __LINE__, __FILE__, $sql); } - + + $search_ids = array(); while( $row = $db->sql_fetchrow($result) ) { - if( $matching_userids != "" ) - { - $matching_userids .= ", "; - } - $matching_userids .= $row['user_id']; - } + $search_ids[] = $row['post_id']; + } + $db->sql_freeresult($result); - $sql = "SELECT post_id - FROM " . POSTS_TABLE . " - WHERE poster_id IN ($matching_userids)"; - } + $total_match_count = count($search_ids); - $result = $db->sql_query($sql); - if( !$result ) - { - message_die(GENERAL_ERROR, "Couldn't obtain matched posts list", "", __LINE__, __FILE__, $sql); } - - $search_ids = array(); - while( $row = $db->sql_fetchrow($result) ) + else if ( $search_keywords != '' ) { - $search_ids[] = $row['post_id']; - } - - $db->sql_freeresult($result); - - $total_match_count = count($search_ids); - - } - else if( $query_keywords != "" ) - { - - $synonym_array = @file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_synonyms.txt"); - - $split_search = array(); - $cleaned_search = clean_words("search", stripslashes($query_keywords), $synonym_array); - $split_search = split_words($cleaned_search, "search"); + $stopword_array = @file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_stopwords.txt"); + $synonym_array = @file($phpbb_root_path . "language/lang_" . $board_config['default_lang'] . "/search_synonyms.txt"); + + $split_search = array(); + $cleaned_search = clean_words("search", stripslashes($search_keywords), $stopword_array, $synonym_array); + $split_search = split_words($cleaned_search, "search"); - $search_msg_only = ( !$search_msg_title ) ? "AND m.title_match = 0" : ""; + $search_msg_only = ( !$search_fields ) ? "AND m.title_match = 0" : ""; - $word_count = 0; - $current_match_type = "and"; + $word_count = 0; + $current_match_type = 'and'; - $word_match = array(); - $result_list = array(); + $word_match = array(); + $result_list = array(); - for($i = 0; $i < count($split_search); $i++) - { - if( $split_search[$i] == "and" ) - { - $current_match_type = "and"; - } - else if( $split_search[$i] == "or" ) - { - $current_match_type = "or"; - } - else if( $split_search[$i] == "not" ) - { - $current_match_type = "not"; - } - else + for($i = 0; $i < count($split_search); $i++) { - if( !empty($search_all_terms) ) + switch ( $split_search[$i] ) { - $current_match_type = "and"; - } + case 'and': + $current_match_type = 'and'; + break; - $match_word = str_replace("*", "%", $split_search[$i]); + case 'or': + $current_match_type = 'or'; + break; - $sql = "SELECT m.post_id - FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m - WHERE w.word_text LIKE '$match_word' - AND m.word_id = w.word_id - AND w.word_common <> 1 - $search_msg_only"; - $result = $db->sql_query($sql); - if( !$result ) - { - message_die(GENERAL_ERROR, "Couldn't obtain matched posts list", "", __LINE__, __FILE__, $sql); - } + case 'not': + $current_match_type = 'not'; + break; - $row = array(); - while( $temp_row = $db->sql_fetchrow($result) ) - { - $row['' . $temp_row['post_id'] . ''] = 1; + default: + if( !empty($search_terms) ) + { + $current_match_type = "and"; + } - if( !$word_count ) - { - $result_list['' . $temp_row['post_id'] . ''] = 1; - } - else if( $current_match_type == "or" ) - { - $result_list['' . $temp_row['post_id'] . ''] = 1; - } - else if( $current_match_type == "not" ) - { - $result_list['' . $temp_row['post_id'] . ''] = 0; - } - } + $match_word = str_replace("*", "%", $split_search[$i]); - if( $current_match_type == "and" && $word_count ) - { - @reset($result_list); + $sql = "SELECT m.post_id + FROM " . SEARCH_WORD_TABLE . " w, " . SEARCH_MATCH_TABLE . " m + WHERE w.word_text LIKE '$match_word' + AND m.word_id = w.word_id + AND w.word_common <> 1 + $search_msg_only"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain matched posts list", "", __LINE__, __FILE__, $sql); + } - while( list($post_id, $match_count) = each($result_list) ) - { - if( !$row['' . $post_id . ''] ) + $row = array(); + while( $temp_row = $db->sql_fetchrow($result) ) { - $result_list['' . $post_id . ''] = 0; + $row[$temp_row['post_id']] = 1; + + if ( !$word_count ) + { + $result_list[$temp_row['post_id']] = 1; + } + else if ( $current_match_type == "or" ) + { + $result_list[$temp_row['post_id']] = 1; + } + else if ( $current_match_type == "not" ) + { + $result_list[$temp_row['post_id']] = 0; + } } - } - } - $word_count++; + if ( $current_match_type == "and" && $word_count ) + { + @reset($result_list); + while( list($post_id, $match_count) = @each($result_list) ) + { + if ( !$row[$post_id] ) + { + $result_list[$post_id] = 0; + } + } + } - $db->sql_freeresult($result); + $word_count++; + $db->sql_freeresult($result); + } } + + @reset($result_list); + + $search_ids = array(); + while( list($post_id, $matches) = each($result_list) ) + { + if ( $matches ) + { + $search_ids[] = $post_id; + } + } + + unset($result_list); + $total_match_count = count($search_ids); } - @reset($result_list); + // + // If user is logged in then we'll check to see which (if any) private + // forums they are allowed to view and include them in the search. + // + // If not logged in we explicitly prevent searching of private forums + // + $auth_sql = ""; + if ( $search_forum != -1 ) + { + $is_auth = auth(AUTH_READ, $search_forum, $userdata); - $search_ids = array(); - while( list($post_id, $matches) = each($result_list) ) + if ( !$is_auth['auth_read'] ) + { + message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']); + } + + $auth_sql = "f.forum_id = $search_forum"; + } + else { - if( $matches ) + $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); + + if ( $search_cat != -1 ) { - $search_ids[] = $post_id; + $auth_sql = "f.cat_id = $search_cat"; } - } - - unset($result_list); - $total_match_count = count($search_ids); - } - // - // If user is logged in then we'll check to see which (if any) private - // forums they are allowed to view and include them in the search. - // - // If not logged in we explicitly prevent searching of private forums - // - $auth_sql = ""; - if( $search_forum != -1 ) - { - $is_auth = auth(AUTH_READ, $search_forum, $userdata); + $ignore_forum_sql = ""; + while( list($key, $value) = each($is_auth_ary) ) + { + if ( !$value['auth_read'] ) + { + $ignore_forum_sql .= ( ( $ignore_forum_sql != "" ) ? ", " : "" ) . $key; + } + } - if( !$is_auth['auth_read'] ) - { - message_die(GENERAL_MESSAGE, $lang['No_searchable_forums']); + if ( $ignore_forum_sql != "" ) + { + $auth_sql .= ( $auth_sql != "" ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) "; + } } - $auth_sql = "f.forum_id = $search_forum"; - } - else - { - $is_auth_ary = auth(AUTH_READ, AUTH_LIST_ALL, $userdata); - - if( $search_cat != -1 ) + // + // Author name search + // + if ( $search_author != "" ) { - $auth_sql = "f.cat_id = $search_cat"; + $search_author = str_replace("*", "%", trim(str_replace("\'", "''", $search_author))); } - $ignore_forum_sql = ""; - while( list($key, $value) = each($is_auth_ary) ) + if ( $total_match_count ) { - if( !$value['auth_read'] ) + if ( $show_results == "topics" ) { - if( $ignore_forum_sql != "" ) + $where_sql = ""; + + if ( $search_time ) { - $ignore_forum_sql .= ", "; + $where_sql .= ( $search_author == "" && $auth_sql == "" ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time "; } - $ignore_forum_sql .= $key; - } - } - if( $ignore_forum_sql != "" ) - { - $auth_sql .= ( $auth_sql != "" ) ? " AND f.forum_id NOT IN ($ignore_forum_sql) " : "f.forum_id NOT IN ($ignore_forum_sql) "; - } - } + if ( $search_author == "" && $auth_sql == "" ) + { + $sql = "SELECT topic_id + FROM " . POSTS_TABLE . " + WHERE post_id IN (" . implode(", ", $search_ids) . ") + $where_sql + GROUP BY topic_id"; + } + else + { + $from_sql = POSTS_TABLE . " p"; - // - // Author name search - // - if( $query_author != "" ) - { - $query_author = str_replace("*", "%", trim(str_replace("\'", "''", $query_author))); - } + if ( $search_author != '' ) + { + $from_sql .= ", " . USERS_TABLE . " u"; + $where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author' "; + } - if( $total_match_count ) - { - if( $show_results == "topics" ) - { - $where_sql = ""; + if ( $auth_sql != '' ) + { + $from_sql .= ", " . FORUMS_TABLE . " f"; + $where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql"; + } - if( $search_time ) - { - $where_sql .= ( $query_author == "" && $auth_sql == "" ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time "; - } + $sql = "SELECT p.topic_id + FROM $from_sql + WHERE p.post_id IN (" . implode(", ", $search_ids) . ") + $where_sql + GROUP BY p.topic_id"; + } - if( $query_author == "" && $auth_sql == "" ) - { - $sql = "SELECT topic_id - FROM " . POSTS_TABLE . " - WHERE post_id IN (" . implode(", ", $search_ids) . ") - $where_sql - GROUP BY topic_id"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain topic ids", "", __LINE__, __FILE__, $sql); + } + + $search_ids = array(); + while( $row = $db->sql_fetchrow($result) ) + { + $search_ids[] = $row['topic_id']; + } + $db->sql_freeresult($result); + + $total_match_count = sizeof($search_ids); + } - else + else if ( $search_author != '' || $search_time || $auth_sql != '' ) { - $from_sql = POSTS_TABLE . " p"; + $where_sql = ( $search_author == "" && $auth_sql == "" ) ? "post_id IN (" . implode(", ", $search_ids) . ")" : "p.post_id IN (" . implode(", ", $search_ids) . ")"; + $from_sql = ( $search_author == "" && $auth_sql == "" ) ? POSTS_TABLE : POSTS_TABLE . " p"; - if( $query_author != "" ) + if ( $search_time ) { - $from_sql .= ", " . USERS_TABLE . " u"; - $where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$query_author' "; + $where_sql .= ( $search_author == "" && $auth_sql == "" ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time"; } - if( $auth_sql != "" ) + if ( $auth_sql != '' ) { $from_sql .= ", " . FORUMS_TABLE . " f"; $where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql"; } - $sql = "SELECT p.topic_id - FROM $from_sql - WHERE p.post_id IN (" . implode(", ", $search_ids) . ") - $where_sql - GROUP BY p.topic_id"; - } + if ( $search_author != '' ) + { + $from_sql .= ", " . USERS_TABLE . " u"; + $where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$search_author'"; + } - $result = $db->sql_query($sql); - if( !$result ) - { - message_die(GENERAL_ERROR, "Couldn't obtain topic ids", "", __LINE__, __FILE__, $sql); - } + $sql = "SELECT p.post_id + FROM $from_sql + WHERE $where_sql"; + if ( !($result = $db->sql_query($sql)) ) + { + message_die(GENERAL_ERROR, "Couldn't obtain post ids", "", __LINE__, __FILE__, $sql); + } - $search_ids = array(); - while( $row = $db->sql_fetchrow($result) ) - { - $search_ids[] = $row['topic_id']; - } + $search_ids = array(); + while( $row = $db->sql_fetchrow($result) ) + { + $search_ids[] = $row['post_id']; + } - $db->sql_freeresult($result); + $db->sql_freeresult($result); - $total_match_count = count($search_ids); - + $total_match_count = count($search_ids); + } } - else if( $query_author != "" || $search_time || $auth_sql != "" ) + else if ( $search_id == 'unanswered' ) { - $where_sql = ( $query_author == "" && $auth_sql == "" ) ? "post_id IN (" . implode(", ", $search_ids) . ")" : "p.post_id IN (" . implode(", ", $search_ids) . ")"; - $from_sql = ( $query_author == "" && $auth_sql == "" ) ? POSTS_TABLE : POSTS_TABLE . " p"; - - if( $search_time ) - { - $where_sql .= ( $query_author == "" && $auth_sql == "" ) ? " AND post_time >= $search_time " : " AND p.post_time >= $search_time"; - } - - if( $auth_sql != "" ) + if ( $auth_sql != "" ) { - $from_sql .= ", " . FORUMS_TABLE . " f"; - $where_sql .= " AND f.forum_id = p.forum_id AND $auth_sql"; + $sql = "SELECT t.topic_id, f.forum_id + FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f + WHERE t.topic_replies = 0 + AND t.forum_id = f.forum_id + AND t.topic_moved_id = 0 + AND $auth_sql"; } - - if( $query_author != "" ) + else { - $from_sql .= ", " . USERS_TABLE . " u"; - $where_sql .= " AND u.user_id = p.poster_id AND u.username LIKE '$query_author'"; + $sql = "SELECT topic_id + FROM " . TOPICS_TABLE . " + WHERE topic_replies = 0 + AND topic_moved_id = 0"; } - - $sql = "SELECT p.post_id - FROM $from_sql - WHERE $where_sql"; - $result = $db->sql_query($sql); - if( !$result ) + + if ( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Couldn't obtain post ids", "", __LINE__, __FILE__, $sql); } @@ -478,71 +515,31 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) $search_ids = array(); while( $row = $db->sql_fetchrow($result) ) { - $search_ids[] = $row['post_id']; + $search_ids[] = $row['topic_id']; } - $db->sql_freeresult($result); $total_match_count = count($search_ids); - } - } - else if( $search_id == "unanswered" ) - { - - if($auth_sql != "") - { - $sql = "SELECT t.topic_id, f.forum_id - FROM " . TOPICS_TABLE . " t, " . FORUMS_TABLE . " f - WHERE t.topic_replies = 0 - AND t.forum_id = f.forum_id - AND t.topic_moved_id = 0 - AND $auth_sql"; + + // + // Basic requirements + // + $show_results = "topics"; + $sort_by = 0; + $sort_dir = "DESC"; } else { - $sql = "SELECT topic_id - FROM " . TOPICS_TABLE . " - WHERE topic_replies = 0 - AND topic_moved_id = 0"; - } - - - $result = $db->sql_query($sql); - if( !$result ) - { - message_die(GENERAL_ERROR, "Couldn't obtain post ids", "", __LINE__, __FILE__, $sql); - } - - $search_ids = array(); - while( $row = $db->sql_fetchrow($result) ) - { - $search_ids[] = $row['topic_id']; + message_die(GENERAL_MESSAGE, $lang['No_search_match']); } - $db->sql_freeresult($result); - - $total_match_count = count($search_ids); - - // - // Basic requirements - // - $show_results = "topics"; - $sortby = 0; - $sortby_dir = "DESC"; - } - - // - // Finish building query (for all combinations) - // and run it ... - // - if( $total_match_count ) - { // - // Clean up search results table + // Finish building query (for all combinations) + // and run it ... // $sql = "SELECT session_id FROM " . SESSIONS_TABLE; - if( $result = $db->sql_query($sql) ) + if ( $result = $db->sql_query($sql) ) { $delete_search_ids = array(); while( $row = $db->sql_fetchrow($result) ) @@ -550,11 +547,11 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) $delete_search_ids[] = "'" . $row['session_id'] . "'"; } - if( count($delete_search_ids) ) + if ( count($delete_search_ids) ) { $sql = "DELETE FROM " . SEARCH_TABLE . " WHERE session_id NOT IN (" . implode(", ", $delete_search_ids) . ")"; - if( !$result = $db->sql_query($sql) ) + if ( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't delete old search id sessions", "", __LINE__, __FILE__, $sql); } @@ -564,60 +561,45 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) // // Store new result data // - if( $total_match_count ) - { - $search_results = implode(", ", $search_ids); - $per_page = ( $show_results == "posts" ) ? $board_config['posts_per_page'] : $board_config['topics_per_page']; - - // - // Combine both results and search data (apart from original query) - // so we can serialize it and place it in the DB - // - $store_search_data = array(); - $store_search_data['results'] = $search_results; - $store_search_data['match_count'] = $total_match_count; - - $store_search_data['word_array'] = $split_search; + $search_results = implode(", ", $search_ids); + $per_page = ( $show_results == "posts" ) ? $board_config['posts_per_page'] : $board_config['topics_per_page']; - $store_search_data['sort_by'] = $sortby; - $store_search_data['sortby_dir'] = $sortby_dir; - $store_search_data['show_results'] = $show_results; - $store_search_data['return_chars'] = $return_chars; + // + // Combine both results and search data (apart from original query) + // so we can serialize it and place it in the DB + // + $store_search_data = array(); + for($i = 0; $i < count($store_vars); $i++) + { + $store_search_data[$store_vars[$i]] = $$store_vars[$i]; + } - $result_array = serialize($store_search_data); - unset($store_search_data); + $result_array = serialize($store_search_data); + unset($store_search_data); - mt_srand ((double) microtime() * 1000000); - $search_id = mt_rand(); + mt_srand ((double) microtime() * 1000000); + $search_id = mt_rand(); - $sql = "UPDATE " . SEARCH_TABLE . " - SET search_id = $search_id, search_array = '$result_array' - WHERE session_id = '" . $userdata['session_id'] . "'"; - $result = $db->sql_query($sql); - if( !$result || !$db->sql_affectedrows() ) + $sql = "UPDATE " . SEARCH_TABLE . " + SET search_id = $search_id, search_array = '$result_array' + WHERE session_id = '" . $userdata['session_id'] . "'"; + if ( !($result = $db->sql_query($sql)) || !$db->sql_affectedrows() ) + { + $sql = "INSERT INTO " . SEARCH_TABLE . " (search_id, session_id, search_array) + VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace("\'", "''", $result_array) . "')"; + if ( !($result = $db->sql_query($sql)) ) { - $sql = "INSERT INTO " . SEARCH_TABLE . " (search_id, session_id, search_array) - VALUES($search_id, '" . $userdata['session_id'] . "', '" . str_replace("\'", "''", $result_array) . "')"; - if( !$result = $db->sql_query($sql) ) - { - message_die(GENERAL_ERROR, "Couldn't insert search results", "", __LINE__, __FILE__, $sql); - } + message_die(GENERAL_ERROR, "Couldn't insert search results", "", __LINE__, __FILE__, $sql); } } - else - { - message_die(GENERAL_MESSAGE, $lang['No_search_match']); - } } - else if( isset($HTTP_GET_VARS['search_id']) ) + else { - $search_id = intval($HTTP_GET_VARS['search_id']); - $sql = "SELECT search_array FROM " . SEARCH_TABLE . " WHERE search_id = $search_id AND session_id = '". $userdata['session_id'] . "'"; - if( !$result = $db->sql_query($sql) ) + if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Couldn't obtain search results", "", __LINE__, __FILE__, $sql); } @@ -625,32 +607,19 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) if( $row = $db->sql_fetchrow($result) ) { $search_data = unserialize($row['search_array']); - unset($row); - - $search_results = $search_data['results']; - $total_match_count = $search_data['match_count']; - - $split_search = $search_data['word_array']; - - $sortby = $search_data['sort_by']; - $sortby_dir = $search_data['sortby_dir']; - $show_results = $search_data['show_results']; - $return_chars = $search_data['return_chars']; - - } - else - { - header("Location: " . append_sid("search.$phpEx", true)); + for($i = 0; $i < count($store_vars); $i++) + { + $$store_vars[$i] = $search_data[$store_vars[$i]]; + } } } - else - { - message_die(GENERAL_MESSAGE, $lang['No_search_match']); - } - if( $search_results != "" ) + // + // Look up data ... + // + if ( $search_results != "" ) { - if( $show_results == "posts" ) + if ( $show_results == "posts" ) { $sql = "SELECT pt.post_text, pt.bbcode_uid, pt.post_subject, p.*, f.forum_id, f.forum_name, t.*, u.username, u.user_id, u.user_sig, u.user_sig_bbcode_uid FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . USERS_TABLE . " u, " . POSTS_TABLE . " p, " . POSTS_TEXT_TABLE . " pt @@ -673,9 +642,9 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) $per_page = ( $show_results == "posts" ) ? $board_config['posts_per_page'] : $board_config['topics_per_page']; - $sql .= " ORDER BY " . $sortby_sql[$sortby] . " $sortby_dir LIMIT $start, " . $per_page; + $sql .= " ORDER BY " . $sort_by_sql[$sort_by] . " $sort_dir LIMIT $start, " . $per_page; - if( !$result = $db->sql_query($sql) ) + if ( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, "Couldn't obtain search results", "", __LINE__, __FILE__, $sql); } @@ -701,7 +670,7 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) $page_title = $lang['Search']; include($phpbb_root_path . 'includes/page_header.'.$phpEx); - if( $show_results == "posts" ) + if ( $show_results == "posts" ) { $template->set_filenames(array( "body" => "search_results_posts.tpl", @@ -931,7 +900,7 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) if( $replies > $board_config['topics_per_page'] ) { - $goto_page = "[ <img src=\"" . $images['icon_gotopost'] . "\" alt=\"" . $lang['Goto_page'] . "\" />" . $lang['Goto_page'] . ": "; + $goto_page = '[ <img src="' . $images['icon_gotopost'] . '" alt="' . $lang['Goto_page'] . '" title="' . $lang['Goto_page'] . '" />' . $lang['Goto_page'] . ': '; $times = 1; for($j = 0; $j < $replies + 1; $j += $board_config['posts_per_page']) @@ -942,7 +911,7 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) { if( $j + $board_config['topics_per_page'] >= $replies + 1 ) { - $goto_page .= " ... <a href=\"$base_url\">$times</a>"; + $goto_page .= ' ... <a href="' . $base_url . '">' . $times . '</a>'; } } else @@ -952,16 +921,16 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) $goto_page .= ", "; } - $goto_page .= "<a href=\"$base_url\">$times</a>"; + $goto_page .= '<a href="' . $base_url . '">' . $times . '</a>'; } $times++; } - $goto_page .= " ]"; + $goto_page .= ' ]'; } else { - $goto_page = ""; + $goto_page = ''; } if( $searchset[$i]['topic_status'] == TOPIC_MOVED ) @@ -1014,15 +983,15 @@ else if( $query_keywords != "" || $query_author != "" || $search_id ) if( !empty($tracking_topics['' . $topic_id . '']) ) { - if( $tracking_topics['' . $topic_id . ''] > $searchset[$i]['post_time'] ) + if( $tracking_topics[$topic_id] > $searchset[$i]['post_time'] ) { $unread_topics = false; } } - if( !empty($tracking_forums['' . $forum_id . '']) ) + if( !empty($tracking_forums[$forum_id]) ) { - if( $tracking_forums['' . $forum_id . ''] > $searchset[$i]['post_time'] ) + if( $tracking_forums[$forum_id] > $searchset[$i]['post_time'] ) { $unread_topics = false; } @@ -1176,24 +1145,24 @@ else // // Number of chars returned // -$s_characters = "<option value=\"-1\">" . $lang['All_available'] . "</option>"; -$s_characters .= "<option value=\"0\">0</option>"; -$s_characters .= "<option value=\"25\">25</option>"; -$s_characters .= "<option value=\"50\">50</option>"; +$s_characters = '<option value="-1">' . $lang['All_available'] . '</option>'; +$s_characters .= '<option value="0">0</option>'; +$s_characters .= '<option value="25">25</option>'; +$s_characters .= '<option value="50">50</option>'; for($i = 100; $i < 1100 ; $i += 100) { - $selected = ( $i == 200 ) ? "selected=\"selected\"" : ""; - $s_characters .= "<option value=\"$i\"$selected>$i</option>"; + $selected = ( $i == 200 ) ? ' selected="selected"' : ''; + $s_characters .= '<option value="' . $i . '"' . $selected . '>' . $i . '</option>'; } // // Sorting // -$s_sortby = ""; -for($i = 0; $i < count($sortby_types); $i++) +$s_sort_by = ""; +for($i = 0; $i < count($sort_by_types); $i++) { - $s_sortby .= "<option value=\"$i\">" . $sortby_types[$i] . "</option>"; + $s_sort_by .= '<option value="' . $i . '">' . $sort_by_types[$i] . '</option>'; } // @@ -1256,7 +1225,7 @@ $template->assign_vars(array( "S_FORUM_OPTIONS" => $s_forums, "S_CATEGORY_OPTIONS" => $s_categories, "S_TIME_OPTIONS" => $s_time, - "S_SORT_OPTIONS" => $s_sortby, + "S_SORT_OPTIONS" => $s_sort_by, "S_HIDDEN_FIELDS" => $s_hidden_fields) ); @@ -1264,4 +1233,4 @@ $template->pparse("body"); include($phpbb_root_path . 'includes/page_tail.'.$phpEx); -?> +?>
\ No newline at end of file diff --git a/phpBB/templates/Euclid/search_results_posts.tpl b/phpBB/templates/Euclid/search_results_posts.tpl index 8136106994..758ad454db 100644 --- a/phpBB/templates/Euclid/search_results_posts.tpl +++ b/phpBB/templates/Euclid/search_results_posts.tpl @@ -26,7 +26,7 @@ <span class="postdetails">{L_REPLIES}: <b>{searchresults.TOPIC_REPLIES}</b><br /> {L_VIEWS}: <b>{searchresults.TOPIC_VIEWS}</b></span><br /> </td> - <td valign="top" class="row1"> <img src="templates/subSilver/images/icon_minipost.gif" alt="Post image icon"><span class="postdetails">{L_FORUM}: <b><a href="{U_FORUM}" class="postdetails">{searchresults.FORUM_NAME}</a></b> {L_POSTED}: + <td valign="top" class="row1"> <span class="postdetails">{L_FORUM}: <b><a href="{U_FORUM}" class="postdetails">{searchresults.FORUM_NAME}</a></b> {L_POSTED}: {searchresults.POST_DATE} Subject: <b><a href="{searchresults.U_POST}">{searchresults.POST_SUBJECT}</a></b></span></td> </tr> <tr> diff --git a/phpBB/templates/Euclid/search_results_topics.tpl b/phpBB/templates/Euclid/search_results_topics.tpl index b398c89eb8..49c12b35ce 100644 --- a/phpBB/templates/Euclid/search_results_topics.tpl +++ b/phpBB/templates/Euclid/search_results_topics.tpl @@ -57,7 +57,7 @@ <table width="98%" cellspacing="2" border="0" align="center"> <tr> - <td><span class="gensmall"><b>{S_TIMEZONE}</b></span></td> + <td valign="top"><span class="gensmall"><b>{S_TIMEZONE}</b></span></td> <td align="right">{JUMPBOX}</td> </tr> </table> diff --git a/phpBB/templates/subSilver/search_body.tpl b/phpBB/templates/subSilver/search_body.tpl index 519b3f3a26..d1316df23b 100644 --- a/phpBB/templates/subSilver/search_body.tpl +++ b/phpBB/templates/subSilver/search_body.tpl @@ -1,86 +1,57 @@ -<form action="{S_SEARCH_ACTION}" method="POST"> - <table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> + +<form action="{S_SEARCH_ACTION}" method="POST"><table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> <tr> - <td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td> + <td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td> </tr> - </table> - <table border="0" cellpadding="4" cellspacing="1" width="100%" class="forumline"> +</table> + +<table class="forumline" width="100%" cellpadding="4" cellspacing="1" border="0"> <tr> - <th class="thHead" colspan="4" height="25">{L_SEARCH_QUERY}</th> + <th class="thHead" colspan="4" height="25">{L_SEARCH_QUERY}</th> </tr> <tr> - <td class="row1" colspan="2" width="50%"><span class="gen">{L_SEARCH_KEYWORDS}:</span><br /> - <span class="gensmall">{L_SEARCH_KEYWORDS_EXPLAIN}</span></td> - <td class="row2" colspan="2" valign="top"><span class="genmed"> - <input type="text" style="width: 300px" class="post" name="search_keywords" size="30" /> - <br /> - <input type="radio" name="addterms" value="any" checked="checked" /> {L_SEARCH_ANY_TERMS}<br /> - <input type="radio" name="addterms" value="all" /> {L_SEARCH_ALL_TERMS}</span></td> + <td class="row1" colspan="2" width="50%"><span class="gen">{L_SEARCH_KEYWORDS}:</span><br /><span class="gensmall">{L_SEARCH_KEYWORDS_EXPLAIN}</span></td> + <td class="row2" colspan="2" valign="top"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_keywords" size="30" /><br /><input type="radio" name="search_terms" value="any" checked="checked" /> {L_SEARCH_ANY_TERMS}<br /><input type="radio" name="search_terms" value="all" /> {L_SEARCH_ALL_TERMS}</span></td> </tr> <tr> - <td class="row1" colspan="2"><span class="gen">{L_SEARCH_AUTHOR}:</span><br /> - <span class="gensmall">{L_SEARCH_AUTHOR_EXPLAIN}</span></td> - <td class="row2" colspan="2" valign="middle"><span class="genmed"> - <input type="text" style="width: 300px" class="post" name="search_author" size="30" /> - </span> </td> + <td class="row1" colspan="2"><span class="gen">{L_SEARCH_AUTHOR}:</span><br /><span class="gensmall">{L_SEARCH_AUTHOR_EXPLAIN}</span></td> + <td class="row2" colspan="2" valign="middle"><span class="genmed"><input type="text" style="width: 300px" class="post" name="search_author" size="30" /></span></td> </tr> <tr> - <th class="thHead" colspan="4" height="25">{L_SEARCH_OPTIONS}</th> + <th class="thHead" colspan="4" height="25">{L_SEARCH_OPTIONS}</th> </tr> <tr> - <td class="row1" align="right"><span class="gen">{L_FORUM}: </span></td> - <td class="row2"><span class="genmed"> - <select class="post" name="searchforum">{S_FORUM_OPTIONS} - </select> - </span></td> - <td class="row1" align="right" nowrap="nowrap"><span class="gen">{L_SEARCH_PREVIOUS}: </span></td> - <td class="row2" valign="middle"><span class="genmed"><select class="post" name="resultdays">{S_TIME_OPTIONS}</select> - <br /> - <input type="radio" name="searchfields" value="all" checked="checked" /> {L_SEARCH_MESSAGE_TITLE}<br /> - <input type="radio" name="searchfields" value="msgonly" /> {L_SEARCH_MESSAGE_ONLY}</span></td> + <td class="row1" align="right"><span class="gen">{L_FORUM}: </span></td> + <td class="row2"><span class="genmed"><select class="post" name="search_forum">{S_FORUM_OPTIONS}</select></span></td> + <td class="row1" align="right" nowrap="nowrap"><span class="gen">{L_SEARCH_PREVIOUS}: </span></td> + <td class="row2" valign="middle"><span class="genmed"><select class="post" name="search_time">{S_TIME_OPTIONS}</select><br /><input type="radio" name="search_fields" value="all" checked="checked" /> {L_SEARCH_MESSAGE_TITLE}<br /><input type="radio" name="search_fields" value="msgonly" /> {L_SEARCH_MESSAGE_ONLY}</span></td> </tr> <tr> - <td class="row1" align="right"><span class="gen">{L_CATEGORY}: </span></td> - <td class="row2"><span class="genmed"> - <select class="post" name="searchcat">{S_CATEGORY_OPTIONS} - </select> - </span></td> - <td class="row1" align="right"><span class="gen">{L_SORT_BY}: </span></td> - <td class="row2" valign="middle" nowrap="nowrap"><span class="genmed"> - <select class="post" name="sortby">{S_SORT_OPTIONS}</select> - <br /> - <input type="radio" name="sortdir" value="ASC" /> - {L_SORT_ASCENDING}<br /> - <input type="radio" name="sortdir" value="DESC" checked /> - {L_SORT_DESCENDING}</span> </td> + <td class="row1" align="right"><span class="gen">{L_CATEGORY}: </span></td> + <td class="row2"><span class="genmed"><select class="post" name="search_cat">{S_CATEGORY_OPTIONS} + </select></span></td> + <td class="row1" align="right"><span class="gen">{L_SORT_BY}: </span></td> + <td class="row2" valign="middle" nowrap="nowrap"><span class="genmed"><select class="post" name="sort_by">{S_SORT_OPTIONS}</select><br /><input type="radio" name="sort_dir" value="ASC" /> {L_SORT_ASCENDING}<br /><input type="radio" name="sort_dir" value="DESC" checked /> {L_SORT_DESCENDING}</span> </td> </tr> <tr> - <td class="row1" align="right" nowrap="nowrap"><span class="gen">{L_DISPLAY_RESULTS}: </span></td> - <td class="row2" nowrap="nowrap"> - <input type="radio" name="showresults" value="posts" /> - <span class="genmed">{L_POSTS} - <input type="radio" name="showresults" value="topics" checked="checked" /> - {L_TOPICS}</span></td> - <td class="row1" align="right"><span class="gen">{L_RETURN_FIRST}</span></td> - <td class="row2"><span class="genmed"> - <select class="post" name="charsreqd">{S_CHARACTER_OPTIONS} - </select> - {L_CHARACTERS}</span></td> + <td class="row1" align="right" nowrap="nowrap"><span class="gen">{L_DISPLAY_RESULTS}: </span></td> + <td class="row2" nowrap="nowrap"><input type="radio" name="show_results" value="posts" /><span class="genmed">{L_POSTS}<input type="radio" name="show_results" value="topics" checked="checked" />{L_TOPICS}</span></td> + <td class="row1" align="right"><span class="gen">{L_RETURN_FIRST}</span></td> + <td class="row2"><span class="genmed"><select class="post" name="return_chars">{S_CHARACTER_OPTIONS}</select> {L_CHARACTERS}</span></td> </tr> <tr> - <td class="catBottom" colspan="4" align="center" height="28">{S_HIDDEN_FIELDS} - <input class="liteoption" type="submit" value="{L_SEARCH}" /> - </td> + <td class="catBottom" colspan="4" align="center" height="28">{S_HIDDEN_FIELDS}<input class="liteoption" type="submit" value="{L_SEARCH}" /></td> </tr> - </table> - <table width="100%" cellspacing="2" border="0" align="center" cellpadding="2"> +</table> + +<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center"> <tr> - <td align="right" valign="middle"><span class="gensmall">{S_TIMEZONE}</span></td> + <td align="right" valign="middle"><span class="gensmall">{S_TIMEZONE}</span></td> </tr> - </table> -</form> +</table></form> + <table width="100%" border="0"> - <tr> - <td align="right" valign="top">{JUMPBOX}</td> - </tr> + <tr> + <td align="right" valign="top">{JUMPBOX}</td> + </tr> </table> |