Zeile 279 | Zeile 279 |
---|
*/ function clean_keywords($keywords) {
|
*/ function clean_keywords($keywords) {
|
global $db;
| global $db, $lang;
|
$keywords = my_strtolower($keywords); $keywords = $db->escape_string_like($keywords);
| $keywords = my_strtolower($keywords); $keywords = $db->escape_string_like($keywords);
|
Zeile 293 | Zeile 293 |
---|
if(my_strpos($keywords, "or") === 0) { $keywords = substr_replace($keywords, "", 0, 2);
|
if(my_strpos($keywords, "or") === 0) { $keywords = substr_replace($keywords, "", 0, 2);
|
| $keywords = " ".$keywords;
|
}
if(my_strpos($keywords, "and") === 0) { $keywords = substr_replace($keywords, "", 0, 3);
|
}
if(my_strpos($keywords, "and") === 0) { $keywords = substr_replace($keywords, "", 0, 3);
|
| $keywords = " ".$keywords; }
if(!$keywords) { error($lang->error_nosearchterms);
|
}
return $keywords;
| }
return $keywords;
|
Zeile 343 | Zeile 350 |
---|
// Collapse multiple spaces $keywords = preg_replace('/(\s)+/', '$1', $keywords); $keywords = trim($keywords);
|
// Collapse multiple spaces $keywords = preg_replace('/(\s)+/', '$1', $keywords); $keywords = trim($keywords);
|
|
|
$words = array(array());
// Fulltext search syntax validation: http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html
| $words = array(array());
// Fulltext search syntax validation: http://dev.mysql.com/doc/refman/5.6/en/fulltext-boolean.html
|
Zeile 409 | Zeile 416 |
---|
elseif($word == "not") { $boolean[$depth] = "-";
|
elseif($word == "not") { $boolean[$depth] = "-";
|
}
| }
|
// Closing braces elseif($word == ")") {
| // Closing braces elseif($word == ")") {
|
Zeile 474 | Zeile 481 |
---|
$keywords = implode(' ', $words[0]); return $keywords;
|
$keywords = implode(' ', $words[0]); return $keywords;
|
}
| }
|
/* Database engine specific search functions */
/**
| /* Database engine specific search functions */
/**
|
Zeile 819 | Zeile 826 |
---|
$name_lookin = ""; $document_lookin = "";
|
$name_lookin = ""; $document_lookin = "";
|
$searchsql = "enabled='1'";
if($keywords) { switch($db->type) { case 'mysql': case 'mysqli':
| $searchsql = "enabled='1'";
if($keywords) { switch($db->type) { case 'mysql': case 'mysqli':
|
$nfield = 'name'; $dfield = 'document';
|
$nfield = 'name'; $dfield = 'document';
|
break;
| break;
|
default: $nfield = 'LOWER(name)'; $dfield = 'LOWER(document)';
| default: $nfield = 'LOWER(name)'; $dfield = 'LOWER(document)';
|
Zeile 845 | Zeile 852 |
---|
{ $string = "OR"; $name_lookin = " AND (";
|
{ $string = "OR"; $name_lookin = " AND (";
|
}
if($search['document'] == 1) {
| }
if($search['document'] == 1) {
|
$document_lookin = " {$string} ("; }
| $document_lookin = " {$string} ("; }
|
Zeile 892 | Zeile 899 |
---|
// Just in a document? continue; }
|
// Just in a document? continue; }
|
}
| }
|
$boolean = $word; }
| $boolean = $word; }
|
Zeile 958 | Zeile 965 |
---|
// There are no search keywords to look for $lang->error_minsearchlength = $lang->sprintf($lang->error_minsearchlength, $mybb->settings['minsearchword']); error($lang->error_minsearchlength);
|
// There are no search keywords to look for $lang->error_minsearchlength = $lang->sprintf($lang->error_minsearchlength, $mybb->settings['minsearchword']); error($lang->error_minsearchlength);
|
}
| }
|
$inquote = !$inquote; }
| $inquote = !$inquote; }
|
Zeile 999 | Zeile 1006 |
---|
if($search['document'] == 1) { $searchsql .= " AND {$dfield} LIKE '%{$keywords}%'";
|
if($search['document'] == 1) { $searchsql .= " AND {$dfield} LIKE '%{$keywords}%'";
|
} } }
| } } }
|
}
// Run the search
| }
// Run the search
|
Zeile 1345 | Zeile 1352 |
---|
{ $post_visiblesql = " AND p.visible == '0'"; $plain_post_visiblesql = " AND visible == '0'";
|
{ $post_visiblesql = " AND p.visible == '0'"; $plain_post_visiblesql = " AND visible == '0'";
|
} } }
// Moderators can view unapproved threads and deleted threads from forums they moderate $unapproved_where_t = get_visible_where('t'); $unapproved_where_p = get_visible_where('p');
| } } }
// Moderators can view unapproved threads and deleted threads from forums they moderate $unapproved_where_t = get_visible_where('t'); $unapproved_where_p = get_visible_where('p');
|
// Searching a specific thread? $tidsql = ''; if(!empty($search['tid'])) { $tidsql = " AND t.tid='".(int)$search['tid']."'";
|
// Searching a specific thread? $tidsql = ''; if(!empty($search['tid'])) { $tidsql = " AND t.tid='".(int)$search['tid']."'";
|
}
| }
|
$limitsql = ''; if((int)$mybb->settings['searchhardlimit'] > 0)
| $limitsql = ''; if((int)$mybb->settings['searchhardlimit'] > 0)
|
Zeile 1374 | Zeile 1381 |
---|
{ // No need to search subjects when looking for results within a specific thread if(empty($search['tid']))
|
{ // No need to search subjects when looking for results within a specific thread if(empty($search['tid']))
|
{
| {
|
$query = $db->query(" SELECT t.tid, t.firstpost FROM ".TABLE_PREFIX."threads t
| $query = $db->query(" SELECT t.tid, t.firstpost FROM ".TABLE_PREFIX."threads t
|
Zeile 1396 | Zeile 1403 |
---|
FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) WHERE 1=1 {$post_datecut} {$thread_replycut} {$thread_prefixcut} {$forumin} {$post_usersql} {$permsql} {$tidsql} {$visiblesql} {$post_visiblesql} AND ({$unapproved_where_t}) AND ({$unapproved_where_p}) AND t.closed NOT LIKE 'moved|%' {$message_lookin}
|
FROM ".TABLE_PREFIX."posts p LEFT JOIN ".TABLE_PREFIX."threads t ON (t.tid=p.tid) WHERE 1=1 {$post_datecut} {$thread_replycut} {$thread_prefixcut} {$forumin} {$post_usersql} {$permsql} {$tidsql} {$visiblesql} {$post_visiblesql} AND ({$unapproved_where_t}) AND ({$unapproved_where_p}) AND t.closed NOT LIKE 'moved|%' {$message_lookin}
|
{$limitsql}
| {$limitsql}
|
"); while($post = $db->fetch_array($query)) {
| "); while($post = $db->fetch_array($query)) {
|
Zeile 1440 | Zeile 1447 |
---|
{ $query = $db->simple_select("posts", "pid", "pid IN ($firstposts) {$plain_post_visiblesql} {$limitsql}"); while($post = $db->fetch_array($query))
|
{ $query = $db->simple_select("posts", "pid", "pid IN ($firstposts) {$plain_post_visiblesql} {$limitsql}"); while($post = $db->fetch_array($query))
|
{
| {
|
$posts[$post['pid']] = $post['pid']; } $posts = implode(',', $posts);
| $posts[$post['pid']] = $post['pid']; } $posts = implode(',', $posts);
|
Zeile 1462 | Zeile 1469 |
---|
function perform_search_mysql_ft($search) { global $mybb, $db, $lang;
|
function perform_search_mysql_ft($search) { global $mybb, $db, $lang;
|
|
|
$keywords = clean_keywords_ft($search['keywords']);
if($mybb->settings['minsearchword'] < 1)
| $keywords = clean_keywords_ft($search['keywords']);
if($mybb->settings['minsearchword'] < 1)
|
Zeile 1470 | Zeile 1477 |
---|
$mybb->settings['minsearchword'] = 4; }
|
$mybb->settings['minsearchword'] = 4; }
|
| $message_lookin = $subject_lookin = '';
|
if($keywords) { $keywords_exp = explode("\"", $keywords);
| if($keywords) { $keywords_exp = explode("\"", $keywords);
|
Zeile 1528 | Zeile 1536 |
---|
$userids = array(); $search['author'] = my_strtolower($search['author']); if($search['matchusername'])
|
$userids = array(); $search['author'] = my_strtolower($search['author']); if($search['matchusername'])
|
{
| {
|
$user = get_user_by_username($search['author']); if($user)
|
$user = get_user_by_username($search['author']); if($user)
|
{ $userids[] = $user['uid']; } } else {
| { $userids[] = $user['uid']; } } else {
|
$query = $db->simple_select("users", "uid", "username LIKE '%".$db->escape_string_like($search['author'])."%'");
while($user = $db->fetch_array($query)) { $userids[] = $user['uid']; }
|
$query = $db->simple_select("users", "uid", "username LIKE '%".$db->escape_string_like($search['author'])."%'");
while($user = $db->fetch_array($query)) { $userids[] = $user['uid']; }
|
}
| }
|
if(count($userids) < 1)
|
if(count($userids) < 1)
|
{ error($lang->error_nosearchresults); } else {
| { error($lang->error_nosearchresults); } else {
|
$userids = implode(',', $userids); $post_usersql = " AND p.uid IN (".$userids.")"; $thread_usersql = " AND t.uid IN (".$userids.")"; } }
|
$userids = implode(',', $userids); $post_usersql = " AND p.uid IN (".$userids.")"; $thread_usersql = " AND t.uid IN (".$userids.")"; } }
|
$datecut = '';
| $datecut = $thread_datecut = $post_datecut = '';
|
if($search['postdate']) { if($search['pddir'] == 0)
|
if($search['postdate']) { if($search['pddir'] == 0)
|
{
| {
|
$datecut = "<=";
|
$datecut = "<=";
|
}
| }
|
else { $datecut = ">=";
| else { $datecut = ">=";
|
Zeile 1572 | Zeile 1580 |
---|
$datecut .= "'$datelimit'"; $post_datecut = " AND p.dateline $datecut"; $thread_datecut = " AND t.dateline $datecut";
|
$datecut .= "'$datelimit'"; $post_datecut = " AND p.dateline $datecut"; $thread_datecut = " AND t.dateline $datecut";
|
}
| }
|
$thread_replycut = ''; if($search['numreplies'] != '' && $search['findthreadst'])
|
$thread_replycut = ''; if($search['numreplies'] != '' && $search['findthreadst'])
|
{
| {
|
if((int)$search['findthreadst'] == 1) { $thread_replycut = " AND t.replies >= '".(int)$search['numreplies']."'"; } else
|
if((int)$search['findthreadst'] == 1) { $thread_replycut = " AND t.replies >= '".(int)$search['numreplies']."'"; } else
|
{
| {
|
$thread_replycut = " AND t.replies <= '".(int)$search['numreplies']."'"; } }
| $thread_replycut = " AND t.replies <= '".(int)$search['numreplies']."'"; } }
|
Zeile 1595 | Zeile 1603 |
---|
{ $threadprefix = (int)$threadprefix; $prefixlist[] = $threadprefix;
|
{ $threadprefix = (int)$threadprefix; $prefixlist[] = $threadprefix;
|
}
| }
|
} if(count($prefixlist) == 1)
|
} if(count($prefixlist) == 1)
|
{
| {
|
$thread_prefixcut .= " AND t.prefix='$threadprefix' "; } else { if(count($prefixlist) > 1)
|
$thread_prefixcut .= " AND t.prefix='$threadprefix' "; } else { if(count($prefixlist) > 1)
|
{
| {
|
$thread_prefixcut = " AND t.prefix IN (".implode(',', $prefixlist).")"; } }
| $thread_prefixcut = " AND t.prefix IN (".implode(',', $prefixlist).")"; } }
|
Zeile 1617 | Zeile 1625 |
---|
if(!is_array($search['forums'])) { $search['forums'] = array((int)$search['forums']);
|
if(!is_array($search['forums'])) { $search['forums'] = array((int)$search['forums']);
|
}
| }
|
foreach($search['forums'] as $forum) { $forum = (int)$forum;
| foreach($search['forums'] as $forum) { $forum = (int)$forum;
|
Zeile 1639 | Zeile 1647 |
---|
} $permsql = ""; $onlyusfids = array();
|
} $permsql = ""; $onlyusfids = array();
|
|
|
// Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions)
| // Check group permissions if we can't view threads not started by us $group_permissions = forum_permissions(); foreach($group_permissions as $fid => $forum_permissions)
|
Zeile 1648 | Zeile 1656 |
---|
{ $onlyusfids[] = $fid; }
|
{ $onlyusfids[] = $fid; }
|
}
| }
|
if(!empty($onlyusfids))
|
if(!empty($onlyusfids))
|
{
| {
|
$permsql .= "AND ((t.fid IN(".implode(',', $onlyusfids).") AND t.uid='{$mybb->user['uid']}') OR t.fid NOT IN(".implode(',', $onlyusfids)."))"; }
| $permsql .= "AND ((t.fid IN(".implode(',', $onlyusfids).") AND t.uid='{$mybb->user['uid']}') OR t.fid NOT IN(".implode(',', $onlyusfids)."))"; }
|
Zeile 1661 | Zeile 1669 |
---|
} $inactiveforums = get_inactive_forums(); if($inactiveforums)
|
} $inactiveforums = get_inactive_forums(); if($inactiveforums)
|
{
| {
|
$permsql .= " AND t.fid NOT IN ($inactiveforums)"; }
| $permsql .= " AND t.fid NOT IN ($inactiveforums)"; }
|
Zeile 1671 | Zeile 1679 |
---|
if($search['visible'] == 1) { $visiblesql = " AND t.visible = '1'";
|
if($search['visible'] == 1) { $visiblesql = " AND t.visible = '1'";
|
if($search['postthread'] == 1) {
| if($search['postthread'] == 1) {
|
$post_visiblesql = " AND p.visible = '1'"; $plain_post_visiblesql = " AND visible = '1'"; }
| $post_visiblesql = " AND p.visible = '1'"; $plain_post_visiblesql = " AND visible = '1'"; }
|
Zeile 1681 | Zeile 1689 |
---|
elseif($search['visible'] == -1) { $visiblesql = " AND t.visible = '-1'";
|
elseif($search['visible'] == -1) { $visiblesql = " AND t.visible = '-1'";
|
if($search['postthread'] == 1) {
| if($search['postthread'] == 1) {
|
$post_visiblesql = " AND p.visible = '-1'"; $plain_post_visiblesql = " AND visible = '-1'";
|
$post_visiblesql = " AND p.visible = '-1'"; $plain_post_visiblesql = " AND visible = '-1'";
|
}
| }
|
} else { $visiblesql = " AND t.visible != '1'";
|
} else { $visiblesql = " AND t.visible != '1'";
|
|
|
if($search['postthread'] == 1) { $post_visiblesql = " AND p.visible != '1'";
| if($search['postthread'] == 1) { $post_visiblesql = " AND p.visible != '1'";
|
Zeile 1699 | Zeile 1707 |
---|
} } }
|
} } }
|
|
|
// Moderators can view unapproved threads and deleted threads from forums they moderate $unapproved_where_t = get_visible_where('t'); $unapproved_where_p = get_visible_where('p');
// Searching a specific thread?
|
// Moderators can view unapproved threads and deleted threads from forums they moderate $unapproved_where_t = get_visible_where('t'); $unapproved_where_p = get_visible_where('p');
// Searching a specific thread?
|
| $tidsql = '';
|
if($search['tid']) { $tidsql = " AND t.tid='".(int)$search['tid']."'";
| if($search['tid']) { $tidsql = " AND t.tid='".(int)$search['tid']."'";
|