831 |
florian |
1 |
<?php
|
|
|
2 |
|
|
|
3 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
4 |
// //
|
|
|
5 |
// Copyright (C) 2006 Phorum Development Team //
|
|
|
6 |
// http://www.phorum.org //
|
|
|
7 |
// //
|
|
|
8 |
// This program is free software. You can redistribute it and/or modify //
|
|
|
9 |
// it under the terms of either the current Phorum License (viewable at //
|
|
|
10 |
// phorum.org) or the Phorum License that was distributed with this file //
|
|
|
11 |
// //
|
|
|
12 |
// This program is distributed in the hope that it will be useful, //
|
|
|
13 |
// but WITHOUT ANY WARRANTY, without even the implied warranty of //
|
|
|
14 |
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. //
|
|
|
15 |
// //
|
|
|
16 |
// You should have received a copy of the Phorum License //
|
|
|
17 |
// along with this program. //
|
|
|
18 |
////////////////////////////////////////////////////////////////////////////////
|
|
|
19 |
define('phorum_page','search');
|
|
|
20 |
|
|
|
21 |
include_once("./common.php");
|
|
|
22 |
|
|
|
23 |
if(!phorum_check_read_common()) {
|
|
|
24 |
return;
|
|
|
25 |
}
|
|
|
26 |
|
|
|
27 |
include_once("./include/format_functions.php");
|
|
|
28 |
// set all our URL's
|
|
|
29 |
phorum_build_common_urls();
|
|
|
30 |
|
|
|
31 |
$PHORUM["DATA"]["SEARCH"]["noresults"] = false;
|
|
|
32 |
$PHORUM["DATA"]["SEARCH"]["showresults"] = false;
|
|
|
33 |
$PHORUM["DATA"]["SEARCH"]["safe_search"] = "";
|
|
|
34 |
|
|
|
35 |
function phorum_search_check_valid_vars() {
|
|
|
36 |
$PHORUM=$GLOBALS['PHORUM'];
|
|
|
37 |
$retval=true;
|
|
|
38 |
// these are valid values for some args
|
|
|
39 |
$valid_match_types=array("ALL","ANY","PHRASE","AUTHOR");
|
|
|
40 |
$valid_match_forum=array("THISONE","ALL");
|
|
|
41 |
|
|
|
42 |
if(!in_array($PHORUM["args"]["match_type"],$valid_match_types)) {
|
|
|
43 |
$retval=false;
|
|
|
44 |
} elseif(!in_array($PHORUM["args"]["match_forum"],$valid_match_forum)) {
|
|
|
45 |
$retval=false;
|
|
|
46 |
} elseif(!is_numeric($PHORUM["args"]["match_dates"])) {
|
|
|
47 |
$retval=false;
|
|
|
48 |
}
|
|
|
49 |
|
|
|
50 |
return $retval;
|
|
|
51 |
}
|
|
|
52 |
|
|
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
|
56 |
if(!empty($_GET["search"]) && !isset($PHORUM["args"]["page"])){
|
|
|
57 |
$search_url = @phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($_GET["search"]), "page=1", "match_type=" . urlencode($_GET['match_type']), "match_dates=" . urlencode($_GET['match_dates']), "match_forum=" . urlencode($_GET['match_forum']));
|
|
|
58 |
$PHORUM["DATA"]["MESSAGE"]=$PHORUM["DATA"]["LANG"]["SearchRunning"];
|
|
|
59 |
$PHORUM["DATA"]["BACKMSG"]=$PHORUM["DATA"]["LANG"]["BackToSearch"];
|
|
|
60 |
$PHORUM["DATA"]["URL"]["REDIRECT"]=$search_url;
|
|
|
61 |
$PHORUM["DATA"]["REDIRECT_TIME"]=1;
|
|
|
62 |
include phorum_get_template("header");
|
|
|
63 |
phorum_hook("after_header");
|
|
|
64 |
include phorum_get_template("message");
|
|
|
65 |
phorum_hook("before_footer");
|
|
|
66 |
include phorum_get_template("footer");
|
|
|
67 |
return;
|
|
|
68 |
}
|
|
|
69 |
|
|
|
70 |
if(isset($PHORUM["args"]["search"])){
|
|
|
71 |
$phorum_search = $PHORUM["args"]["search"];
|
|
|
72 |
}
|
|
|
73 |
|
|
|
74 |
if(!isset($PHORUM["args"]["match_type"])) $PHORUM["args"]["match_type"]="ALL";
|
|
|
75 |
if(!isset($PHORUM["args"]["match_dates"])) $PHORUM["args"]["match_dates"]="30";
|
|
|
76 |
if(!isset($PHORUM["args"]["match_forum"])) $PHORUM["args"]["match_forum"]="ALL";
|
|
|
77 |
|
|
|
78 |
if(!phorum_search_check_valid_vars()) {
|
|
|
79 |
$redir_url=phorum_get_url(PHORUM_LIST_URL);
|
|
|
80 |
phorum_redirect_by_url($redir_url);
|
|
|
81 |
}
|
|
|
82 |
|
|
|
83 |
// setup some stuff based on the url passed
|
|
|
84 |
if(!empty($phorum_search)){
|
|
|
85 |
|
|
|
86 |
$PHORUM["DATA"]["SEARCH"]["safe_search"] = htmlspecialchars($phorum_search);
|
|
|
87 |
|
|
|
88 |
include_once("./include/format_functions.php");
|
|
|
89 |
|
|
|
90 |
$offset = (empty($PHORUM["args"]["page"])) ? 0 : $PHORUM["args"]["page"]-1;
|
|
|
91 |
|
|
|
92 |
if(empty($PHORUM["list_length"])) $PHORUM["list_length"]=30;
|
|
|
93 |
|
|
|
94 |
$start = ($offset * $PHORUM["list_length"]);
|
|
|
95 |
|
|
|
96 |
settype($PHORUM["args"]["match_dates"], "int");
|
|
|
97 |
|
|
|
98 |
$arr = phorum_db_search($phorum_search, $offset, $PHORUM["list_length"], $PHORUM["args"]["match_type"], $PHORUM["args"]["match_dates"], $PHORUM["args"]["match_forum"]);
|
|
|
99 |
|
|
|
100 |
if(count($arr["rows"])){
|
|
|
101 |
|
|
|
102 |
$match_number = $start + 1;
|
|
|
103 |
|
|
|
104 |
$forums = phorum_db_get_forums();
|
|
|
105 |
|
|
|
106 |
// For announcements, we will put the current forum_id in the record.
|
|
|
107 |
// Else the message cannot be read (Phorum will redirect the user
|
|
|
108 |
// back to the index page if the forum id is zero). If the user came
|
|
|
109 |
// from the index page, no forum id will be set. In that case we
|
|
|
110 |
// use the first available forum id.
|
|
|
111 |
$announcement_forum_id = 0;
|
|
|
112 |
if ($PHORUM["forum_id"]) {
|
|
|
113 |
$announcement_forum_id = $PHORUM["forum_id"];
|
|
|
114 |
} elseif (count($forums)) {
|
|
|
115 |
list ($f_id, $_data) = each($forums);
|
|
|
116 |
$announcement_forum_id = $f_id;
|
|
|
117 |
}
|
|
|
118 |
|
|
|
119 |
foreach($arr["rows"] as $key => $row){
|
|
|
120 |
$arr["rows"][$key]["number"] = $match_number;
|
|
|
121 |
|
|
|
122 |
// Fake a forum_id for folders.
|
|
|
123 |
if ($row["forum_id"] == 0) {
|
|
|
124 |
$row["forum_id"] = $announcement_forum_id;
|
|
|
125 |
}
|
|
|
126 |
|
|
|
127 |
$arr["rows"][$key]["url"] = phorum_get_url(PHORUM_FOREIGN_READ_URL, $row["forum_id"], $row["thread"], $row["message_id"]);
|
|
|
128 |
|
|
|
129 |
// strip HTML & BB Code
|
|
|
130 |
$body = phorum_strip_body($arr["rows"][$key]["body"]);
|
|
|
131 |
$arr["rows"][$key]["short_body"] = substr($body, 0, 200);
|
|
|
132 |
$arr["rows"][$key]["datestamp"] = phorum_date($PHORUM["short_date"], $row["datestamp"]);
|
|
|
133 |
$arr["rows"][$key]["author"] = htmlspecialchars($row["author"]);
|
|
|
134 |
$arr["rows"][$key]["short_body"] = htmlspecialchars($arr["rows"][$key]["short_body"]);
|
|
|
135 |
|
|
|
136 |
$forum_ids[$row["forum_id"]] = $row["forum_id"];
|
|
|
137 |
|
|
|
138 |
$match_number++;
|
|
|
139 |
}
|
|
|
140 |
|
|
|
141 |
foreach($arr["rows"] as $key => $row){
|
|
|
142 |
// Skip announcements "forum".
|
|
|
143 |
if ($row["forum_id"] == 0) continue;
|
|
|
144 |
|
|
|
145 |
$arr["rows"][$key]["forum_url"] = phorum_get_url(PHORUM_LIST_URL, $row["forum_id"]);
|
|
|
146 |
|
|
|
147 |
$arr["rows"][$key]["forum_name"] = $forums[$row["forum_id"]]["name"];
|
|
|
148 |
}
|
|
|
149 |
|
|
|
150 |
$PHORUM["DATA"]["RANGE_START"] = $start + 1;
|
|
|
151 |
$PHORUM["DATA"]["RANGE_END"] = $start + count($arr["rows"]);
|
|
|
152 |
$PHORUM["DATA"]["TOTAL"] = $arr["count"];
|
|
|
153 |
$PHORUM["DATA"]["SEARCH"]["showresults"] = true;
|
|
|
154 |
// figure out paging
|
|
|
155 |
$pages = ceil($arr["count"] / $PHORUM["list_length"]);
|
|
|
156 |
$page = $offset + 1;
|
|
|
157 |
|
|
|
158 |
if ($pages <= 5){
|
|
|
159 |
$page_start = 1;
|
|
|
160 |
}elseif ($pages - $page < 2){
|
|
|
161 |
$page_start = $pages-4;
|
|
|
162 |
}elseif ($pages > 5 && $page > 3){
|
|
|
163 |
$page_start = $page-2;
|
|
|
164 |
}else{
|
|
|
165 |
$page_start = 1;
|
|
|
166 |
}
|
|
|
167 |
|
|
|
168 |
$pageno = 1;
|
|
|
169 |
for($x = 0;$x < 5 && $x < $pages;$x++){
|
|
|
170 |
$pageno = $x + $page_start;
|
|
|
171 |
$PHORUM["DATA"]["PAGES"][] = array("pageno" => $pageno,
|
|
|
172 |
"url" => phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($phorum_search), "page=$pageno", "match_type={$PHORUM['args']['match_type']}", "match_dates={$PHORUM['args']['match_dates']}", "match_forum={$PHORUM['args']['match_forum']}")
|
|
|
173 |
);
|
|
|
174 |
}
|
|
|
175 |
|
|
|
176 |
$PHORUM["DATA"]["CURRENTPAGE"] = $page;
|
|
|
177 |
$PHORUM["DATA"]["TOTALPAGES"] = $pages;
|
|
|
178 |
|
|
|
179 |
if ($page_start > 1){
|
|
|
180 |
$PHORUM["DATA"]["URL"]["FIRSTPAGE"] = phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($phorum_search), "page=1", "match_type={$PHORUM['args']['match_type']}", "match_dates={$PHORUM['args']['match_dates']}", "match_forum={$PHORUM['args']['match_forum']}");
|
|
|
181 |
}
|
|
|
182 |
|
|
|
183 |
if ($pageno < $pages){
|
|
|
184 |
$PHORUM["DATA"]["URL"]["LASTPAGE"] = phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($phorum_search), "page=$pages", "match_type={$PHORUM['args']['match_type']}", "match_dates={$PHORUM['args']['match_dates']}", "match_forum={$PHORUM['args']['match_forum']}");
|
|
|
185 |
}
|
|
|
186 |
|
|
|
187 |
if ($pages > $page){
|
|
|
188 |
$nextpage = $page + 1;
|
|
|
189 |
$PHORUM["DATA"]["URL"]["NEXTPAGE"] = phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($phorum_search), "page=$nextpage", "match_type={$PHORUM['args']['match_type']}", "match_dates={$PHORUM['args']['match_dates']}", "match_forum={$PHORUM['args']['match_forum']}");
|
|
|
190 |
}
|
|
|
191 |
if ($page > 1){
|
|
|
192 |
$prevpage = $page-1;
|
|
|
193 |
$PHORUM["DATA"]["URL"]["PREVPAGE"] = phorum_get_url(PHORUM_SEARCH_URL, "search=" . urlencode($phorum_search), "page=$prevpage", "match_type={$PHORUM['args']['match_type']}", "match_dates={$PHORUM['args']['match_dates']}", "match_forum={$PHORUM['args']['match_forum']}");
|
|
|
194 |
}
|
|
|
195 |
|
|
|
196 |
|
|
|
197 |
|
|
|
198 |
$arr["rows"] = phorum_hook("search", $arr["rows"]);
|
|
|
199 |
$arr["rows"] = phorum_format_messages($arr["rows"]);
|
|
|
200 |
$PHORUM["DATA"]["MATCHES"] = $arr["rows"];
|
|
|
201 |
|
|
|
202 |
}else{
|
|
|
203 |
$PHORUM["DATA"]["SEARCH"]["noresults"] = true;
|
|
|
204 |
$PHORUM["DATA"]["FOCUS_TO_ID"] = 'phorum_search_message';
|
|
|
205 |
}
|
|
|
206 |
} else {
|
|
|
207 |
// Set cursor focus to message search entry.
|
|
|
208 |
$PHORUM["DATA"]["FOCUS_TO_ID"] = 'phorum_search_message';
|
|
|
209 |
}
|
|
|
210 |
|
|
|
211 |
$PHORUM["DATA"]["URL"]["ACTION"] = phorum_get_url(PHORUM_SEARCH_ACTION_URL);
|
|
|
212 |
$PHORUM["DATA"]["SEARCH"]["forum_id"] = $PHORUM["forum_id"];
|
|
|
213 |
$PHORUM["DATA"]["SEARCH"]["match_type"] = $PHORUM["args"]["match_type"];
|
|
|
214 |
$PHORUM["DATA"]["SEARCH"]["match_dates"] = $PHORUM["args"]["match_dates"];
|
|
|
215 |
$PHORUM["DATA"]["SEARCH"]["match_forum"] = $PHORUM["args"]["match_forum"];
|
|
|
216 |
$PHORUM["DATA"]["SEARCH"]["allow_match_one_forum"] = $PHORUM["forum_id"];
|
|
|
217 |
|
|
|
218 |
include phorum_get_template("header");
|
|
|
219 |
phorum_hook("after_header");
|
|
|
220 |
include phorum_get_template("search");
|
|
|
221 |
phorum_hook("before_footer");
|
|
|
222 |
include phorum_get_template("footer");
|
|
|
223 |
|
|
|
224 |
?>
|