Zeile 1 | Zeile 1 |
---|
<?php /** * MyBB 1.4
|
<?php /** * MyBB 1.4
|
* Copyright � 2008 MyBB Group, All Rights Reserved
| * Copyright © 2008 MyBB Group, All Rights Reserved
|
* * Website: http://www.mybboard.net * License: http://www.mybboard.net/about/license *
|
* * Website: http://www.mybboard.net * License: http://www.mybboard.net/about/license *
|
* $Id: functions_search.php 4177 2008-09-03 22:27:41Z Tikitiki $
| * $Id: functions_search.php 5379 2011-02-21 11:06:42Z Tomm $
|
*/
/**
| */
/**
|
Zeile 154 | Zeile 154 |
---|
} } $unsearchable = $unsearchableforums;
|
} } $unsearchable = $unsearchableforums;
|
| // Get our unsearchable password protected forums $pass_protected_forums = get_password_protected_forums(); if($unsearchable && $pass_protected_forums) { $unsearchable .= ","; } if($pass_protected_forums) { $unsearchable .= implode(",", $pass_protected_forums); }
|
return $unsearchable;
|
return $unsearchable;
|
}
| }
/** * Build a array list of the forums this user cannot search due to password protection * * @param int the fids to check (leave null to check all forums) * @return return a array list of password protected forums the user cannot search */ function get_password_protected_forums($fids=array()) { global $forum_cache, $mybb; if(!is_array($fids)) { return false; } if(!is_array($forum_cache)) { $forum_cache = cache_forums(); if(!$forum_cache) { return false; } } if(empty($fids)) { $fids = array_keys($forum_cache); }
$pass_fids = array(); foreach($fids as $fid) { if(empty($forum_cache[$fid]['password'])) { continue; } if(md5($mybb->user['uid'].$forum_cache[$fid]['password']) != $mybb->cookies['forumpass'][$fid]) { $pass_fids[] = $fid; $child_list = get_child_list($fid); } if(is_array($child_list)) { $pass_fids = array_merge($pass_fids, $child_list); } } return array_unique($pass_fids); }
|
/** * Clean search keywords and make them safe for querying
| /** * Clean search keywords and make them safe for querying
|
Zeile 171 | Zeile 236 |
---|
$keywords = str_replace("*", "%", $keywords); $keywords = preg_replace("#([\[\]\|\.\,:'])#s", " ", $keywords); $keywords = preg_replace("#\s+#s", " ", $keywords);
|
$keywords = str_replace("*", "%", $keywords); $keywords = preg_replace("#([\[\]\|\.\,:'])#s", " ", $keywords); $keywords = preg_replace("#\s+#s", " ", $keywords);
|
return trim($keywords);
| // Search for "and" or "or" and remove if it's at the beginning $keywords = trim($keywords); if(my_strpos($keywords, "or") !== false && my_strpos($keywords, "or") == 0) { $keywords = substr_replace($keywords, "", 0, 2); } if(my_strpos($keywords, "and") !== false && my_strpos($keywords, "and") == 0) { $keywords = substr_replace($keywords, "", 0, 3); }
return $keywords;
|
}
/**
| }
/**
|
Zeile 191 | Zeile 268 |
---|
$keywords = preg_replace("#\*{2,}#s", "*", $keywords); $keywords = preg_replace("#([\[\]\|\.\,:])#s", " ", $keywords); $keywords = preg_replace("#\s+#s", " ", $keywords);
|
$keywords = preg_replace("#\*{2,}#s", "*", $keywords); $keywords = preg_replace("#([\[\]\|\.\,:])#s", " ", $keywords); $keywords = preg_replace("#\s+#s", " ", $keywords);
|
| $words = array();
|
if(my_strpos($keywords, "\"") !== false) { $inquote = false;
| if(my_strpos($keywords, "\"") !== false) { $inquote = false;
|
Zeile 201 | Zeile 280 |
---|
if($phrase != '') { if($inquote)
|
if($phrase != '') { if($inquote)
|
{
| {
|
$words[] = "\"".trim($phrase)."\"";
|
$words[] = "\"".trim($phrase)."\"";
|
} else {
| } else {
|
$split_words = preg_split("#\s{1,}#", $phrase, -1); if(!is_array($split_words)) {
| $split_words = preg_split("#\s{1,}#", $phrase, -1); if(!is_array($split_words)) {
|
Zeile 230 | Zeile 309 |
---|
if(!is_array($split_words)) { continue;
|
if(!is_array($split_words)) { continue;
|
}
| }
|
foreach($split_words as $word) { if(!$word)
| foreach($split_words as $word) { if(!$word)
|
Zeile 249 | Zeile 328 |
---|
$boolean = ''; } elseif($word == "and")
|
$boolean = ''; } elseif($word == "and")
|
{
| {
|
$boolean = "+"; } elseif($word == "not") { $boolean = "-";
|
$boolean = "+"; } elseif($word == "not") { $boolean = "-";
|
}
| }
|
else { $keywords .= " ".$boolean.$word;
| else { $keywords .= " ".$boolean.$word;
|
Zeile 306 | Zeile 385 |
---|
{ // If we're not in a double quoted section if(!$inquote)
|
{ // If we're not in a double quoted section if(!$inquote)
|
{
| {
|
// Expand out based on search operators (and, or) $matches = preg_split("#\s{1,}(and|or)\s{1,}#", $phrase, -1, PREG_SPLIT_DELIM_CAPTURE); $count_matches = count($matches);
| // Expand out based on search operators (and, or) $matches = preg_split("#\s{1,}(and|or)\s{1,}#", $phrase, -1, PREG_SPLIT_DELIM_CAPTURE); $count_matches = count($matches);
|
Zeile 358 | Zeile 437 |
---|
$message_lookin .= " $boolean LOWER(p.message) LIKE '%{$phrase}%'"; } }
|
$message_lookin .= " $boolean LOWER(p.message) LIKE '%{$phrase}%'"; } }
|
| if($subject_lookin == " AND (") { // 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; } $subject_lookin .= ")";
| $inquote = !$inquote; } $subject_lookin .= ")";
|