function search($q) { global $prefs; $url = $prefs['siteurl']; extract($prefs); $s_filter = filterSearch(); $form = fetch('form', 'txp_form', 'name', 'search_results'); // lose this eventually - only used if search_results form is missing $form = !$form ? legacy_form() : $form; $rs = safe_rows("*, ID as thisid, unix_timestamp(Posted) as posted, Title as title,\n\t\t\tmatch (Title,Body) against ('{$q}') as score", "textpattern", "(Title rlike '{$q}' or Body rlike '{$q}') {$s_filter}\n\t\t\tand Status = 4 and Posted <=now() order by score desc limit 40"); if ($rs) { $result_rows = count($rs); $text = $result_rows == 1 ? gTxt('article_found') : gTxt('articles_found'); } else { $result_rows = 0; $text = gTxt('articles_found'); } $results[] = graf($result_rows . ' ' . $text); if ($result_rows > 0) { foreach ($rs as $a) { extract($a); $result_date = safe_strftime($archive_dateformat, $posted); $uTitle = $url_title ? $url_title : stripSpace($Title); $hurl = permlinkurl($a); $result_url = '<a href="' . $hurl . '">' . $hurl . '</a>'; $result_title = '<a href="' . $hurl . '">' . $Title . '</a>'; $result = preg_replace("/>\\s*</", "> <", $Body_html); preg_match_all("/\\s.{1,50}" . preg_quote($q) . ".{1,50}\\s/i", $result, $concat); $concat = join(" ... ", $concat[0]); $concat = strip_tags($concat); $concat = preg_replace('/^[^>]+>/U', "", $concat); $concat = preg_replace("/({$q})/i", "<strong>\$1</strong>", $concat); $result_excerpt = $concat ? "... " . $concat . " ..." : ''; $glob['search_result_title'] = $result_title; $glob['search_result_excerpt'] = $result_excerpt; $glob['search_result_url'] = $result_url; $glob['search_result_date'] = $result_date; $GLOBALS['this_result'] = $glob; $thisresult = $form; $results[] = parse($thisresult); } } return is_array($results) ? join('', $results) : ''; }
/** * Performs searching and returns results. * * This is now performed by doArticles(). * * @param string $q * @deprecated in 4.0.4 * @see doArticles() */ function search($q) { global $prefs; $url = $prefs['siteurl']; extract($prefs); $s_filter = filterSearch(); $form = fetch('form', 'txp_form', 'name', 'search_results'); // Lose this eventually - only used if search_results form is missing. $form = !$form ? legacy_form() : $form; $rs = safe_rows("*, ID AS thisid, UNIX_TIMESTAMP(Posted) AS posted, Title AS title,\n MATCH (Title,Body) AGAINST ('{$q}') AS score", 'textpattern', "(Title RLIKE '{$q}' OR Body RLIKE '{$q}') {$s_filter}\n AND Status = 4 AND Posted <= " . now('posted') . " ORDER BY score DESC LIMIT 40"); if ($rs) { $result_rows = count($rs); $text = $result_rows == 1 ? gTxt('article_found') : gTxt('articles_found'); } else { $result_rows = 0; $text = gTxt('articles_found'); } $results[] = graf($result_rows . ' ' . $text); if ($result_rows > 0) { foreach ($rs as $a) { extract($a); $result_date = safe_strftime($archive_dateformat, $posted); $uTitle = $url_title ? $url_title : stripSpace($Title); $hurl = permlinkurl($a); $result_url = '<a href="' . $hurl . '">' . $hurl . '</a>'; $result_title = '<a href="' . $hurl . '">' . $Title . '</a>'; $result = preg_replace("/>\\s*</", "> <", $Body_html); preg_match_all("/\\s.{1,50}" . preg_quote($q) . ".{1,50}\\s/i", $result, $concat); $concat = join(" ... ", $concat[0]); $concat = strip_tags($concat); $concat = preg_replace('/^[^>]+>/U', "", $concat); $concat = preg_replace("/({$q})/i", "<strong>\$1</strong>", $concat); $result_excerpt = $concat ? "... " . $concat . " ..." : ''; $glob['search_result_title'] = $result_title; $glob['search_result_excerpt'] = $result_excerpt; $glob['search_result_url'] = $result_url; $glob['search_result_date'] = $result_date; $GLOBALS['this_result'] = $glob; $thisresult = $form; $results[] = parse($thisresult); } } return is_array($results) ? join('', $results) : ''; }
function search($q) { global $prefs; $url = $prefs['siteurl']; extract($prefs); $s_filter = filterSearch(); $form = fetch('form', 'txp_form', 'name', 'search_results'); // lose this eventually - only used if search_results form is missing $form = !$form ? legacy_form() : $form; $rs = safe_rows("ID, Title, Body_html, Section, unix_timestamp(Posted) as uPosted, \n\t\t\tmatch (Title,Body) against ('{$q}') as score", "textpattern", "Title rlike '{$q}' or Body rlike '{$q}' {$s_filter}\n\t\t\tand Status = 4 and Posted <=now() order by score desc limit 40"); if ($rs) { $result_rows = count($rs); $text = $result_rows == 1 ? gTxt('article_found') : gTxt('articles_found'); } else { $result_rows = 0; $text = gTxt('articles_found'); } $results[] = graf($result_rows . ' ' . $text); if ($result_rows > 0) { foreach ($rs as $a) { extract($a); $result_date = date("j M Y", $uPosted); $hurl = $url_mode ? $siteurl . $path_from_root . $Section . '/' . $ID . '/' . stripSpace($Title) : $siteurl . $path_from_root . 'index.php?id=' . $ID; $result_url = '<a href="http://' . $hurl . '">' . $hurl . '</a>'; $result_title = '<a href="http://' . $hurl . '">' . $Title . '</a>'; $result = preg_replace("/>\\s*</", "> <", $Body_html); preg_match_all("/\\s.{0,50}" . $q . ".{0,50}\\s/i", $result, $concat); $concat = implode(" ... ", $concat[0]); $concat = strip_tags($concat); $concat = preg_replace('/^[^>]+>/U', "", $concat); $concat = preg_replace("/({$q})/i", "<strong>\$1</strong>", $concat); $result_excerpt = $concat ? "... " . $concat . " ..." : ''; $glob['search_result_title'] = $result_title; $glob['search_result_excerpt'] = $result_excerpt; $glob['search_result_url'] = $result_url; $glob['search_result_date'] = $result_date; $GLOBALS['this_result'] = $glob; $thisresult = $form; $results[] = parse($thisresult); } } return is_array($results) ? join('', $results) : ''; }