Zeile 6 | Zeile 6 |
---|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* Website: http://mybb.com * License: http://mybb.com/about/license *
|
* $Id: search.php 5765 2012-03-27 09:52:45Z Tomm $
| * $Id$
|
*/
|
*/
|
| |
define("IN_MYBB", 1); define("IGNORE_CLEAN_VARS", "sid"); define('THIS_SCRIPT', 'search.php');
|
define("IN_MYBB", 1); define("IGNORE_CLEAN_VARS", "sid"); define('THIS_SCRIPT', 'search.php');
|
|
|
$templatelist = "search,forumdisplay_thread_gotounread,search_results_threads_thread,search_results_threads,search_results_posts,search_results_posts_post"; $templatelist .= ",multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage,forumdisplay_thread_multipage_more,forumdisplay_thread_multipage_page,forumdisplay_thread_multipage";
|
$templatelist = "search,forumdisplay_thread_gotounread,search_results_threads_thread,search_results_threads,search_results_posts,search_results_posts_post"; $templatelist .= ",multipage_nextpage,multipage_page_current,multipage_page,multipage_start,multipage_end,multipage,forumdisplay_thread_multipage_more,forumdisplay_thread_multipage_page,forumdisplay_thread_multipage";
|
$templatelist .= ",search_results_posts_inlinecheck,search_results_posts_nocheck,search_results_threads_inlinecheck,search_results_threads_nocheck,search_results_inlinemodcol,search_results_posts_inlinemoderation_custom_tool,search_results_posts_inlinemoderation_custom,search_results_posts_inlinemoderation,search_results_threads_inlinemoderation_custom_tool,search_results_threads_inlinemoderation_custom,search_results_threads_inlinemoderation,search_orderarrow,search_moderator_options"; $templatelist .= ",forumdisplay_thread_attachment_count,forumdisplay_threadlist_inlineedit_js,search_threads_inlinemoderation_selectall";
| $templatelist .= ",search_results_posts_inlinecheck,search_results_posts_nocheck,search_results_threads_inlinecheck,search_results_threads_nocheck,search_results_inlinemodcol,search_results_posts_inlinemoderation_custom_tool"; $templatelist .= ",search_results_posts_inlinemoderation_custom,search_results_posts_inlinemoderation,search_results_threads_inlinemoderation_custom_tool,search_results_threads_inlinemoderation_custom,search_results_threads_inlinemoderation,search_orderarrow,search_moderator_options"; $templatelist .= ",forumdisplay_thread_attachment_count,forumdisplay_threadlist_inlineedit_js,search_threads_inlinemoderation_selectall,search_posts_inlinemoderation_selectall,multipage_prevpage";
|
require_once "./global.php";
|
require_once "./global.php";
|
|
|
require_once MYBB_ROOT."inc/functions_post.php"; require_once MYBB_ROOT."inc/functions_search.php"; require_once MYBB_ROOT."inc/class_parser.php";
| require_once MYBB_ROOT."inc/functions_post.php"; require_once MYBB_ROOT."inc/functions_search.php"; require_once MYBB_ROOT."inc/class_parser.php";
|
Zeile 49 | Zeile 51 |
---|
$limitsql = ""; if(intval($mybb->settings['searchhardlimit']) > 0) {
|
$limitsql = ""; if(intval($mybb->settings['searchhardlimit']) > 0) {
|
$limitsql = "ORDER BY t.dateline DESC LIMIT ".intval($mybb->settings['searchhardlimit']);
| $limitsql = "LIMIT ".intval($mybb->settings['searchhardlimit']);
|
}
if($mybb->input['action'] == "results")
| }
if($mybb->input['action'] == "results")
|
Zeile 66 | Zeile 68 |
---|
$plugins->run_hooks("search_results_start");
// Decide on our sorting fields and sorting order.
|
$plugins->run_hooks("search_results_start");
// Decide on our sorting fields and sorting order.
|
$order = my_strtolower(htmlspecialchars($mybb->input['order'])); $sortby = my_strtolower(htmlspecialchars($mybb->input['sortby']));
| $order = my_strtolower(htmlspecialchars_uni($mybb->input['order'])); $sortby = my_strtolower(htmlspecialchars_uni($mybb->input['sortby']));
|
switch($sortby) {
| switch($sortby) {
|
Zeile 127 | Zeile 129 |
---|
$oppsort = $lang->desc; }
|
$oppsort = $lang->desc; }
|
if(!$mybb->settings['threadsperpage'])
| if(!$mybb->settings['threadsperpage'] || (int)$mybb->settings['threadsperpage'] < 1)
|
{ $mybb->settings['threadsperpage'] = 20; }
| { $mybb->settings['threadsperpage'] = 20; }
|
Zeile 259 | Zeile 261 |
---|
if($search['querycache'] != "") { $where_conditions = $search['querycache'];
|
if($search['querycache'] != "") { $where_conditions = $search['querycache'];
|
$query = $db->simple_select("threads t", "t.tid", $where_conditions. " AND {$unapproved_where} AND t.closed NOT LIKE 'moved|%' {$limitsql}");
| $query = $db->simple_select("threads t", "t.tid", $where_conditions. " AND {$unapproved_where} AND t.closed NOT LIKE 'moved|%' ORDER BY t.lastpost DESC {$limitsql}");
|
while($thread = $db->fetch_array($query)) { $threads[$thread['tid']] = $thread['tid'];
| while($thread = $db->fetch_array($query)) { $threads[$thread['tid']] = $thread['tid'];
|
Zeile 271 | Zeile 273 |
---|
$search['threads'] = implode(",", $threads); } // No results.
|
$search['threads'] = implode(",", $threads); } // No results.
|
else { error($lang->error_nosearchresults); } $where_conditions = "t.tid IN (".$search['threads'].")"; }
| else { error($lang->error_nosearchresults); } $where_conditions = "t.tid IN (".$search['threads'].")"; }
|
// This search doesn't use a query cache, results stored in search table. else {
| // This search doesn't use a query cache, results stored in search table. else {
|
Zeile 365 | Zeile 367 |
---|
{ $thread_cache[$readthread['tid']]['lastread'] = $readthread['dateline']; }
|
{ $thread_cache[$readthread['tid']]['lastread'] = $readthread['dateline']; }
|
| }
if(!$mybb->settings['maxmultipagelinks']) { $mybb->settings['maxmultipagelinks'] = 5;
|
}
foreach($thread_cache as $thread)
| }
foreach($thread_cache as $thread)
|
Zeile 377 | Zeile 384 |
---|
if(!$thread['visible']) { $bgcolor = 'trow_shaded';
|
if(!$thread['visible']) { $bgcolor = 'trow_shaded';
|
}
| }
|
if($thread['userusername']) {
| if($thread['userusername']) {
|
Zeile 387 | Zeile 394 |
---|
// If this thread has a prefix, insert a space between prefix and subject if($thread['prefix'] != 0)
|
// If this thread has a prefix, insert a space between prefix and subject if($thread['prefix'] != 0)
|
{
| {
|
$thread['threadprefix'] .= ' '; }
| $thread['threadprefix'] .= ' '; }
|
Zeile 397 | Zeile 404 |
---|
if($icon_cache[$thread['icon']]) { $posticon = $icon_cache[$thread['icon']];
|
if($icon_cache[$thread['icon']]) { $posticon = $icon_cache[$thread['icon']];
|
| $posticon['path'] = htmlspecialchars_uni($posticon['path']); $posticon['name'] = htmlspecialchars_uni($posticon['name']);
|
$icon = "<img src=\"".$posticon['path']."\" alt=\"".$posticon['name']."\" />";
|
$icon = "<img src=\"".$posticon['path']."\" alt=\"".$posticon['name']."\" />";
|
}
| }
|
else { $icon = " ";
| else { $icon = " ";
|
Zeile 429 | Zeile 438 |
---|
if($forum_read == 0 || $forum_read < $read_cutoff) { $forum_read = $read_cutoff;
|
if($forum_read == 0 || $forum_read < $read_cutoff) { $forum_read = $read_cutoff;
|
}
| }
|
} else {
| } else {
|
Zeile 450 | Zeile 459 |
---|
else { $last_read = my_get_array_cookie("threadread", $thread['tid']);
|
else { $last_read = my_get_array_cookie("threadread", $thread['tid']);
|
}
| }
|
if($forum_read > $last_read) {
| if($forum_read > $last_read) {
|
Zeile 470 | Zeile 479 |
---|
{ $new_class = 'subject_old'; $folder_label .= $lang->icon_no_new;
|
{ $new_class = 'subject_old'; $folder_label .= $lang->icon_no_new;
|
}
| }
|
if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews']) { $folder .= "hot";
| if($thread['replies'] >= $mybb->settings['hottopic'] || $thread['views'] >= $mybb->settings['hottopicviews']) { $folder .= "hot";
|
Zeile 484 | Zeile 493 |
---|
} $folder .= "folder";
|
} $folder .= "folder";
|
if(!$mybb->settings['postsperpage'])
| if(!$mybb->settings['postsperpage'] || (int)$mybb->settings['postsperpage'] < 1)
|
{
|
{
|
$mybb->settings['postperpage'] = 20;
| $mybb->settings['postsperpage'] = 20;
|
}
$thread['pages'] = 0;
| }
$thread['pages'] = 0;
|
Zeile 502 | Zeile 511 |
---|
{ $thread['pages'] = $thread['posts'] / $mybb->settings['postsperpage']; $thread['pages'] = ceil($thread['pages']);
|
{ $thread['pages'] = $thread['posts'] / $mybb->settings['postsperpage']; $thread['pages'] = ceil($thread['pages']);
|
if($thread['pages'] > 4)
| if($thread['pages'] > $mybb->settings['maxmultipagelinks'])
|
{
|
{
|
$pagesstop = 4;
| $pagesstop = $mybb->settings['maxmultipagelinks'] - 1;
|
$page_link = get_thread_link($thread['tid'], $thread['pages']).$highlight; eval("\$morelink = \"".$templates->get("forumdisplay_thread_multipage_more")."\";");
|
$page_link = get_thread_link($thread['tid'], $thread['pages']).$highlight; eval("\$morelink = \"".$templates->get("forumdisplay_thread_multipage_more")."\";");
|
}
| }
|
else
|
else
|
{
| {
|
$pagesstop = $thread['pages'];
|
$pagesstop = $thread['pages'];
|
}
| }
|
for($i = 1; $i <= $pagesstop; ++$i) { $page_link = get_thread_link($thread['tid'], $i).$highlight; eval("\$threadpages .= \"".$templates->get("forumdisplay_thread_multipage_page")."\";"); } eval("\$thread['multipage'] = \"".$templates->get("forumdisplay_thread_multipage")."\";");
|
for($i = 1; $i <= $pagesstop; ++$i) { $page_link = get_thread_link($thread['tid'], $i).$highlight; eval("\$threadpages .= \"".$templates->get("forumdisplay_thread_multipage_page")."\";"); } eval("\$thread['multipage'] = \"".$templates->get("forumdisplay_thread_multipage")."\";");
|
}
| }
|
else { $threadpages = '';
| else { $threadpages = '';
|
Zeile 540 | Zeile 549 |
---|
else { $lastposterlink = build_profile_link($lastposter, $lastposteruid);
|
else { $lastposterlink = build_profile_link($lastposter, $lastposteruid);
|
}
| }
|
$thread['replies'] = my_number_format($thread['replies']); $thread['views'] = my_number_format($thread['views']);
if($forumcache[$thread['fid']])
|
$thread['replies'] = my_number_format($thread['replies']); $thread['views'] = my_number_format($thread['views']);
if($forumcache[$thread['fid']])
|
{
| {
|
$thread['forumlink'] = "<a href=\"".get_forum_link($thread['fid'])."\">".$forumcache[$thread['fid']]['name']."</a>"; } else { $thread['forumlink'] = "";
|
$thread['forumlink'] = "<a href=\"".get_forum_link($thread['fid'])."\">".$forumcache[$thread['fid']]['name']."</a>"; } else { $thread['forumlink'] = "";
|
}
| }
|
// If this user is the author of the thread and it is not closed or they are a moderator, they can edit if(($thread['uid'] == $mybb->user['uid'] && $thread['closed'] != 1 && $mybb->user['uid'] != 0 && $fpermissions[$thread['fid']]['caneditposts'] == 1) || is_moderator($thread['fid'], "caneditposts"))
| // If this user is the author of the thread and it is not closed or they are a moderator, they can edit if(($thread['uid'] == $mybb->user['uid'] && $thread['closed'] != 1 && $mybb->user['uid'] != 0 && $fpermissions[$thread['fid']]['caneditposts'] == 1) || is_moderator($thread['fid'], "caneditposts"))
|
Zeile 585 | Zeile 594 |
---|
}
$inline_edit_tid = $thread['tid'];
|
}
$inline_edit_tid = $thread['tid'];
|
|
|
// Inline thread moderation $inline_mod_checkbox = ''; if($is_supermod || is_moderator($thread['fid']))
| // Inline thread moderation $inline_mod_checkbox = ''; if($is_supermod || is_moderator($thread['fid']))
|
Zeile 628 | Zeile 637 |
---|
$customthreadtools = ''; switch($db->type)
|
$customthreadtools = ''; switch($db->type)
|
{
| {
|
case "pgsql": case "sqlite": $query = $db->simple_select("modtools", "tid, name", "type='t' AND (','||forums||',' LIKE '%,-1,%' OR forums='')");
| case "pgsql": case "sqlite": $query = $db->simple_select("modtools", "tid, name", "type='t' AND (','||forums||',' LIKE '%,-1,%' OR forums='')");
|
Zeile 647 | Zeile 656 |
---|
eval("\$customthreadtools = \"".$templates->get("search_results_threads_inlinemoderation_custom")."\";"); } eval("\$inlinemod = \"".$templates->get("search_results_threads_inlinemoderation")."\";");
|
eval("\$customthreadtools = \"".$templates->get("search_results_threads_inlinemoderation_custom")."\";"); } eval("\$inlinemod = \"".$templates->get("search_results_threads_inlinemoderation")."\";");
|
} $plugins->run_hooks("search_results_end");
| } $plugins->run_hooks("search_results_end");
|
eval("\$searchresults = \"".$templates->get("search_results_threads")."\";"); output_page($searchresults); }
| eval("\$searchresults = \"".$templates->get("search_results_threads")."\";"); output_page($searchresults); }
|
Zeile 659 | Zeile 668 |
---|
if(!$search['posts']) { error($lang->error_nosearchresults);
|
if(!$search['posts']) { error($lang->error_nosearchresults);
|
} $postcount = 0;
| } $postcount = 0;
|
// Moderators can view unapproved threads $query = $db->simple_select("moderators", "fid", "(id='{$mybb->user['uid']}' AND isgroup='0') OR (id='{$mybb->user['usergroup']}' AND isgroup='1')");
| // Moderators can view unapproved threads $query = $db->simple_select("moderators", "fid", "(id='{$mybb->user['uid']}' AND isgroup='0') OR (id='{$mybb->user['usergroup']}' AND isgroup='1')");
|
Zeile 680 | Zeile 689 |
---|
$moderated_forums .= ','.$forum['fid']; $test_moderated_forums[$forum['fid']] = $forum['fid']; }
|
$moderated_forums .= ','.$forum['fid']; $test_moderated_forums[$forum['fid']] = $forum['fid']; }
|
$p_unapproved_where = "visible >= 0";
| $p_unapproved_where = "(visible > 0 OR (visible=0 AND fid IN ({$moderated_forums})))";
|
$t_unapproved_where = "visible < 0 AND fid NOT IN ({$moderated_forums})";
|
$t_unapproved_where = "visible < 0 AND fid NOT IN ({$moderated_forums})";
|
}
| }
|
else { // Normal users
| else { // Normal users
|
Zeile 715 | Zeile 724 |
---|
if(!empty($pids)) { $temp_pids = array();
|
if(!empty($pids)) { $temp_pids = array();
|
| $group_permissions = forum_permissions(); $permsql = ''; $onlyusfids = array();
foreach($group_permissions as $fid => $forum_permissions) { if(!empty($forum_permissions['canonlyviewownthreads'])) { $onlyusfids[] = $fid; } }
if($onlyusfids) { $permsql .= " OR (fid IN(".implode(',', $onlyusfids).") AND uid!={$mybb->user['uid']})"; } $unsearchforums = get_unsearchable_forums(); if($unsearchforums) { $permsql .= " OR fid IN ($unsearchforums)"; } $inactiveforums = get_inactive_forums(); if($inactiveforums) { $permsql .= " OR fid IN ($inactiveforums)"; }
|
// Check the thread records as well. If we don't have permissions, remove them from the listing.
|
// Check the thread records as well. If we don't have permissions, remove them from the listing.
|
$query = $db->simple_select("threads", "tid", "tid IN(".$db->escape_string(implode(',', $pids)).") AND ({$t_unapproved_where} OR closed LIKE 'moved|%')");
| $query = $db->simple_select("threads", "tid", "tid IN(".$db->escape_string(implode(',', $pids)).") AND ({$t_unapproved_where}{$permsql} OR closed LIKE 'moved|%')");
|
while($thread = $db->fetch_array($query)) { if(array_key_exists($thread['tid'], $tids) != false)
| while($thread = $db->fetch_array($query)) { if(array_key_exists($thread['tid'], $tids) != false)
|
Zeile 794 | Zeile 830 |
---|
if($icon_cache[$post['icon']]) { $posticon = $icon_cache[$post['icon']];
|
if($icon_cache[$post['icon']]) { $posticon = $icon_cache[$post['icon']];
|
| $posticon['path'] = htmlspecialchars_uni($posticon['path']); $posticon['name'] = htmlspecialchars_uni($posticon['name']);
|
$icon = "<img src=\"".$posticon['path']."\" alt=\"".$posticon['name']."\" />"; } else
| $icon = "<img src=\"".$posticon['path']."\" alt=\"".$posticon['name']."\" />"; } else
|
Zeile 889 | Zeile 927 |
---|
$folder .= "hot"; $folder_label .= $lang->icon_hot; }
|
$folder .= "hot"; $folder_label .= $lang->icon_hot; }
|
if($thread['thread_closed'] == 1)
| if($post['thread_closed'] == 1)
|
{ $folder .= "lock"; $folder_label .= $lang->icon_lock;
| { $folder .= "lock"; $folder_label .= $lang->icon_lock;
|
Zeile 973 | Zeile 1011 |
---|
$num_results = $db->num_rows($query); $lang->page_selected = $lang->sprintf($lang->page_selected, intval($num_results)); $lang->select_all = $lang->sprintf($lang->select_all, intval($postcount));
|
$num_results = $db->num_rows($query); $lang->page_selected = $lang->sprintf($lang->page_selected, intval($num_results)); $lang->select_all = $lang->sprintf($lang->select_all, intval($postcount));
|
$lang->all_selected = $lang->sprintf($lang->page_selected, intval($postcount));
| $lang->all_selected = $lang->sprintf($lang->all_selected, intval($postcount));
|
eval("\$selectall = \"".$templates->get("search_posts_inlinemoderation_selectall")."\";"); $customthreadtools = $customposttools = '';
| eval("\$selectall = \"".$templates->get("search_posts_inlinemoderation_selectall")."\";"); $customthreadtools = $customposttools = '';
|
Zeile 1210 | Zeile 1248 |
---|
elseif($mybb->input['action'] == "getnew") {
|
elseif($mybb->input['action'] == "getnew") {
|
$where_sql = "t.lastpost >= '".$mybb->user['lastvisit']."'";
| $where_sql = "t.lastpost >= '".intval($mybb->user['lastvisit'])."'";
|
if($mybb->input['fid']) {
| if($mybb->input['fid']) {
|
Zeile 1459 | Zeile 1497 |
---|
{ $sortorder = "desc"; }
|
{ $sortorder = "desc"; }
|
$sortby = htmlspecialchars($mybb->input['sortby']);
| $sortby = htmlspecialchars_uni($mybb->input['sortby']);
|
$plugins->run_hooks("search_do_search_end"); redirect("search.php?action=results&sid=".$sid."&sortby=".$sortby."&order=".$sortorder, $lang->redirect_searchresults); }
| $plugins->run_hooks("search_do_search_end"); redirect("search.php?action=results&sid=".$sid."&sortby=".$sortby."&order=".$sortorder, $lang->redirect_searchresults); }
|
Zeile 1485 | Zeile 1523 |
---|
{ error($lang->error_closedinvalidforum); }
|
{ error($lang->error_closedinvalidforum); }
|
if($forum_permissions['canview'] == 0 || $forum_permissions['canviewthreads'] != 1)
| if($forum_permissions['canview'] == 0 || $forum_permissions['canviewthreads'] != 1 || (isset($forum_permissions['canonlyviewownthreads']) && $forum_permissions['canonlyviewownthreads'] != 0 && $thread['uid'] != $mybb->user['uid']))
|
{ error_no_permission(); }
| { error_no_permission(); }
|