<<<<<<< HEAD ,=,?,!,#,^,(,),[,\],:,;,\\\,%]/","",$text); $this->querystring = $text; $this->marked = $this->boolean_mark_atoms($text); $this->inclusive = $this->boolean_inclusive_atoms($text); $this->blogs = array(); // get all public searchable blogs, no matter what, include the current blog allways. $res = DB::getResult('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 '); foreach ( $res as $row ) $this->blogs[] = intval($row['bnumber']); } function boolean_sql_select($match){ if (i18n::strlen($this->inclusive) > 0) { /* build sql for determining score for each record */ $result=preg_split("# #",$this->inclusive); for($cth=0;$cth=4){ $stringsum_long .= " $result[$cth] "; }else{ $stringsum_a[] = ' '.$this->boolean_sql_select_short($result[$cth],$match).' '; } } if(i18n::strlen($stringsum_long)>0){ $stringsum_long = DB::quoteValue($stringsum_long); $stringsum_a[] = " match ({$match}) against ({$stringsum_long}) "; } $stringsum .= implode("+",$stringsum_a); return $stringsum; } } function boolean_inclusive_atoms($string){ $result = trim($string); $result = preg_replace("#([[:space:]]{2,})#", ' ', $result); # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0 # just added delimiters to regex and the 'i' for case-insensitive matching /* convert normal boolean operators to shortened syntax */ $result = preg_replace('# not #i', ' -', $result); $result = preg_replace('# and #i', ' ', $result); $result = preg_replace('# or #i', ',', $result); /* drop unnecessary spaces */ $result = str_replace(' ,', ',', $result); $result = str_replace(', ', ',', $result); $result = str_replace('- ', '-', $result); $result = str_replace('+', '', $result); /* strip exlusive atoms */ $result = preg_replace( "#\-\([A-Za-z0-9]{1,}[A-Za-z0-9\-\.\_\,]{0,}\)#", '', $result); $result = str_replace('(', ' ', $result); $result = str_replace(')', ' ', $result); $result = str_replace(',', ' ', $result); return $result; } function boolean_sql_where($match){ $result = $this->marked; $this->boolean_sql_where_cb1($match); // set the static $match $result = preg_replace_callback( "/foo\[\(\'([^\)]{4,})\'\)\]bar/", array($this,'boolean_sql_where_cb1'), $result); $this->boolean_sql_where_cb2($match); // set the static $match $result = preg_replace_callback( "/foo\[\(\'([^\)]{1,3})\'\)\]bar/", array($this,'boolean_sql_where_cb2'), $result); return $result; } function boolean_sql_where_cb1($matches){ static $match; if (!is_array($matches)) $match=$matches; else return ' match ('.$match.') against ('.DB::quoteValue($matches[1]).') > 0 '; } function boolean_sql_where_cb2($matches){ static $match; if (!is_array($matches)) $match=$matches; else return ' ('.$this->boolean_sql_where_short($matches[1], $match).') '; } function boolean_mark_atoms($string){ $result = trim($string); $result = preg_replace("/([[:space:]]{2,})/",' ',$result); # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0 # just added delimiters to regex and the 'i' for case-insensitive matching /* convert normal boolean operators to shortened syntax */ $result = preg_replace('# not #i', ' -', $result); $result = preg_replace('# and #i', ' ', $result); $result = preg_replace('# or #i', ',', $result); /* strip excessive whitespace */ $result = str_replace('( ', '(', $result); $result = str_replace(' )', ')', $result); $result = str_replace(', ', ',', $result); $result = str_replace(' ,', ',', $result); $result = str_replace('- ', '-', $result); $result = str_replace('+', '', $result); // remove double spaces (we might have introduced some new ones above) $result = trim($result); $result = preg_replace("#([[:space:]]{2,})#", ' ', $result); /* apply arbitrary function to all 'word' atoms */ $result_a = preg_split('# #', $result); for($word = 0;$word ======= ,=,?,!,#,^,(,),[,\],:,;,\\\,%]/","",$text); $this->querystring = $text; $this->marked = $this->boolean_mark_atoms($text); $this->inclusive = $this->boolean_inclusive_atoms($text); $this->blogs = array(); // get all public searchable blogs, no matter what, include the current blog allways. $res = DB::getResult('SELECT bnumber FROM '.sql_table('blog').' WHERE bincludesearch=1 '); foreach ( $res as $row ) $this->blogs[] = intval($row['bnumber']); } function boolean_sql_select($match){ if (i18n::strlen($this->inclusive) > 0) { /* build sql for determining score for each record */ $result=preg_split("# #",$this->inclusive); for($cth=0;$cth=4){ $stringsum_long .= " $result[$cth] "; }else{ $stringsum_a[] = ' '.$this->boolean_sql_select_short($result[$cth],$match).' '; } } if(i18n::strlen($stringsum_long)>0){ $stringsum_long = DB::quoteValue($stringsum_long); $stringsum_a[] = " match ({$match}) against ({$stringsum_long}) "; } $stringsum .= implode("+",$stringsum_a); return $stringsum; } } function boolean_inclusive_atoms($string){ $result = trim($string); $result = preg_replace("#([[:space:]]{2,})#", ' ', $result); # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0 # just added delimiters to regex and the 'i' for case-insensitive matching /* convert normal boolean operators to shortened syntax */ $result = preg_replace('# not #i', ' -', $result); $result = preg_replace('# and #i', ' ', $result); $result = preg_replace('# or #i', ',', $result); /* drop unnecessary spaces */ $result = str_replace(' ,', ',', $result); $result = str_replace(', ', ',', $result); $result = str_replace('- ', '-', $result); $result = str_replace('+', '', $result); /* strip exlusive atoms */ $result = preg_replace( "#\-\([A-Za-z0-9]{1,}[A-Za-z0-9\-\.\_\,]{0,}\)#", '', $result); $result = str_replace('(', ' ', $result); $result = str_replace(')', ' ', $result); $result = str_replace(',', ' ', $result); return $result; } function boolean_sql_where($match){ $result = $this->marked; $this->boolean_sql_where_cb1($match); // set the static $match $result = preg_replace_callback( "/foo\[\(\'([^\)]{4,})\'\)\]bar/", array($this,'boolean_sql_where_cb1'), $result); $this->boolean_sql_where_cb2($match); // set the static $match $result = preg_replace_callback( "/foo\[\(\'([^\)]{1,3})\'\)\]bar/", array($this,'boolean_sql_where_cb2'), $result); return $result; } function boolean_sql_where_cb1($matches){ static $match; if (!is_array($matches)) $match=$matches; else return ' match ('.$match.') against ('.DB::quoteValue($matches[1]).') > 0 '; } function boolean_sql_where_cb2($matches){ static $match; if (!is_array($matches)) $match=$matches; else return ' ('.$this->boolean_sql_where_short($matches[1], $match).') '; } function boolean_mark_atoms($string){ $result = trim($string); $result = preg_replace("/([[:space:]]{2,})/",' ',$result); # replaced eregi_replace() below with preg_replace(). ereg* functions are deprecated in PHP 5.3.0 # just added delimiters to regex and the 'i' for case-insensitive matching /* convert normal boolean operators to shortened syntax */ $result = preg_replace('# not #i', ' -', $result); $result = preg_replace('# and #i', ' ', $result); $result = preg_replace('# or #i', ',', $result); /* strip excessive whitespace */ $result = str_replace('( ', '(', $result); $result = str_replace(' )', ')', $result); $result = str_replace(', ', ',', $result); $result = str_replace(' ,', ',', $result); $result = str_replace('- ', '-', $result); $result = str_replace('+', '', $result); // remove double spaces (we might have introduced some new ones above) $result = trim($result); $result = preg_replace("#([[:space:]]{2,})#", ' ', $result); /* apply arbitrary function to all 'word' atoms */ $result_a = preg_split('# #', $result); for($word = 0;$word >>>>>>> skinnable-master