diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2004-09-01 15:47:46 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2004-09-01 15:47:46 +0000 |
commit | 070cbefa461d53031b6fa8a168c3e9c9db539fb0 (patch) | |
tree | 9fcb30f2d3360c5805935226aad8234ab254beb5 /phpBB/search.php | |
parent | 3c8e36b458742116a41f90421e20251df97c528c (diff) | |
download | forums-070cbefa461d53031b6fa8a168c3e9c9db539fb0.tar forums-070cbefa461d53031b6fa8a168c3e9c9db539fb0.tar.gz forums-070cbefa461d53031b6fa8a168c3e9c9db539fb0.tar.bz2 forums-070cbefa461d53031b6fa8a168c3e9c9db539fb0.tar.xz forums-070cbefa461d53031b6fa8a168c3e9c9db539fb0.zip |
This is a mass commit ... expect trouble! Changes made here are primarily to how login is handled, schema changes necessary!
git-svn-id: file:///svn/phpbb/trunk@4970 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/search.php')
-rw-r--r-- | phpBB/search.php | 67 |
1 files changed, 35 insertions, 32 deletions
diff --git a/phpBB/search.php b/phpBB/search.php index 58952abe21..8a87809f4b 100644 --- a/phpBB/search.php +++ b/phpBB/search.php @@ -21,35 +21,33 @@ define('IN_PHPBB', true); $phpbb_root_path = './'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.'.$phpEx); -include($phpbb_root_path . 'includes/bbcode.'.$phpEx); - -// Define initial vars -$mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : false; -$search_id = (isset($_REQUEST['search_id'])) ? htmlspecialchars($_REQUEST['search_id']) : false; -$start = (isset($_REQUEST['start'])) ? intval($_REQUEST['start']) : 0; -$post_id = (isset($_GET['p'])) ? max(intval($_GET['p']), 0) : 0; -$view = (isset($_GET['view'])) ? htmlspecialchars($_GET['view']) : false; - -$search_keywords = (!empty($_REQUEST['search_keywords'])) ? $_REQUEST['search_keywords'] : false; -$search_author = (!empty($_REQUEST['search_author'])) ? htmlspecialchars($_REQUEST['search_author']) : false; -$show_results = (isset($_REQUEST['show_results'])) ? htmlspecialchars($_REQUEST['show_results']) : 'posts'; -$search_terms = (isset($_REQUEST['search_terms'])) ? (($_REQUEST['search_terms'] == 'all') ? 1 : 0) : 1; -$search_fields = (isset($_REQUEST['search_fields'])) ? $_REQUEST['search_fields'] : 'all'; -$search_child = (!empty($_REQUEST['search_child'])) ? true : false; - -$return_chars = (isset($_REQUEST['return_chars'])) ? intval($_REQUEST['return_chars']) : 200; -$search_forum = (!empty($_GET['f'])) ? array(intval($_GET['f'])) : ((isset($_REQUEST['search_forum'])) ? array_map('intval', $_REQUEST['search_forum']) : array()); -$search_time = (isset($_REQUEST['search_time'])) ? (time() - intval($_REQUEST['search_time'])) * 86400 : 0; - -$sort_days = (!empty($_REQUEST['st'])) ? intval($_REQUEST['st']) : 0; -$sort_key = (!empty($_REQUEST['sk'])) ? htmlspecialchars($_REQUEST['sk']) : 't'; -$sort_dir = (!empty($_REQUEST['sd'])) ? htmlspecialchars($_REQUEST['sd']) : 'd'; // Start session management $user->start(); $auth->acl($user->data); $user->setup('search'); +// Define initial vars +$mode = request_var('mode', ''); +$search_id = request_var('search_id', ''); +$start = request_var('start', 0); +$post_id = request_var('p', 0); +$view = request_var('view', ''); + +$search_keywords = request_var('search_keywords', ''); +$search_author = request_var('search_author', ''); +$show_results = request_var('show_results', 'posts'); +$search_terms = request_var('search_terms', 'all'); +$search_fields = request_var('search_fields', 'all'); +$search_child = request_var('search_child', true); + +$return_chars = request_var('return_chars', 200); +$search_forum = request_var('f', 0); + +$sort_days = request_var('st', 0); +$sort_key = request_var('sk', 't'); +$sort_dir = request_var('sd', 'd'); + // Is user able to search? Has search been disabled? if (!$auth->acl_get('u_search') || !$config['load_search']) { @@ -100,11 +98,9 @@ if ($search_keywords || $search_author || $search_id) $sql_forums = array(); while ($row = $db->sql_fetchrow($result)) { -// echo "<br />" . $row['forum_id'] . " -> " . $row['forum_name'] . " :: " . $auth->acl_get('f_read', $row['forum_id']) . " && " . ((!$row['forum_password'] || $row['user_id'] == $user->data['user_id'])); - if ($search_child) { - if (in_array($row['forum_id'], $search_forum) && $row['right_id'] > $right_id) + if (!$search_forum || (in_array($row['forum_id'], $search_forum) && $row['right_id'] > $right_id)) { $right_id = $row['right_id']; } @@ -320,13 +316,15 @@ if ($search_keywords || $search_author || $search_id) } - if ($search_keywords && sizeof($split_words) && array_diff($split_words, $old_split_words)) + if (sizeof($split_words) && array_diff($split_words, $old_split_words)) { + + // This "entire" section may be switched out to allow for alternative search systems // such as that built-in to MySQL, MSSQL, etc. or external solutions which provide // an appropriate API - $bool = ($search_terms) ? 'AND' : 'OR'; + $bool = ($search_terms == 'all') ? 'AND' : 'OR'; $sql_words = ''; foreach ($split_words as $word) { @@ -342,8 +340,9 @@ if ($search_keywords || $search_author || $search_id) $bool = 'OR'; continue; default: + $bool = ($search_terms != 'all') ? 'OR' : $bool; $sql_words[$bool][] = "'" . preg_replace('#\*+#', '%', trim($word)) . "'"; - $bool = ($search_terms) ? 'AND' : 'OR'; + $bool = ($search_terms == 'all') ? 'AND' : 'OR'; } } @@ -455,7 +454,7 @@ if ($search_keywords || $search_author || $search_id) $sql_author $sql_and $sql_time - $sql_match + $sql_match $sql_find_in"; $result = $db->sql_query($sql); @@ -486,6 +485,8 @@ if ($search_keywords || $search_author || $search_id) $post_id_ary = array_unique($post_id_ary); + + if (!sizeof($post_id_ary)) { trigger_error($user->lang['NO_SEARCH_RESULTS']); @@ -579,6 +580,8 @@ if ($search_keywords || $search_author || $search_id) unset($data); } + // Include the bbcode parser + include($phpbb_root_path . 'includes/bbcode.'.$phpEx); // Look up data ... $per_page = ($show_results == 'posts') ? $config['posts_per_page'] : $config['topics_per_page']; @@ -598,8 +601,8 @@ if ($search_keywords || $search_author || $search_id) $template->assign_vars(array( 'SEARCH_MATCHES' => $l_search_matches, 'SEARCH_WORDS' => $split_words, - 'IGNORED_WORDS' => ($ignored_words) ? $ignored_words : 'No words', - 'PAGINATION' => generate_pagination("search.$phpEx$SID&search_id=$search_id&sk=$sort_key&sd=$sort_dir&st=$sort_days", $total_match_count, $per_page, $start), + 'IGNORED_WORDS' => ($ignored_words) ? $ignored_words : $user->lang['NO_IGNORE_WORDS'], + 'PAGINATION' => generate_pagination("search.$phpEx$SID&search_id=$search_id&hilit=$hilit&sk=$sort_key&sd=$sort_dir&st=$sort_days", $total_match_count, $per_page, $start), 'PAGE_NUMBER' => on_page($total_match_count, $start), 'S_SELECT_SORT_DIR' => $s_sort_dir, |