From cdea3a531c5c4f3b8059e2ab00f9b57086a2827f Mon Sep 17 00:00:00 2001 From: fiedorow Date: Tue, 8 Feb 2005 18:06:06 +0000 Subject: [PATCH] Highlight search terms found only in HTML markup --- mod/forum/search.php | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/mod/forum/search.php b/mod/forum/search.php index 8b63531914..001d7ed597 100644 --- a/mod/forum/search.php +++ b/mod/forum/search.php @@ -90,6 +90,17 @@ print_paging_bar($totalcount, $page, $perpage, "search.php?search=$search&id=$course->id&perpage=$perpage&"); echo ""; + //added to implement highlighting of search terms found only in HTML markup + //fiedorow - 9/2/2005 + $searchterms = explode(" ", $strippedsearch); // Search for words independently + foreach ($searchterms as $key => $searchterm) { + if (preg_match('/^\-/',$searchterm)) { + unset($searchterms[$key]); + } else { + $searchterms[$key] = preg_replace('/^\+/','',$searchterm); + } + } + foreach ($posts as $post) { if (! $discussion = get_record("forum_discussions", "id", $post->discussion)) { @@ -115,8 +126,27 @@ /// Add the forum id to the post object - used by read tracking. $post->forum = $forum->id; + //Indicate search terms only found in HTML markup + //Use highlight() with nonsense tags to spot search terms in the + //actual text content first. + //fiedorow - 9/2/2005 + $missing_terms = ""; + $message = highlight($strippedsearch,format_text($post->message, $post->format, NULL, $courseid),0,"",""); + foreach ($searchterms as $searchterm) { + if (preg_match("/$searchterm/i",$message) && !preg_match('/'.$searchterm.'<\/fgw9sdpq4>/i',$message)) { + $missing_terms .= " $searchterm";} + } + $message = preg_replace('//','',$message); + $message = preg_replace('/<\/fgw9sdpq4>/','',$message); + if ($missing_terms) { + $missing_terms_message = get_string('missingsearchterms','forum'); + $message = "

$missing_terms_message $missing_terms

" . $message; + } + $post->message = $message; + $fulllink = "discussion#$post->id\">".get_string("postincontext", "forum").""; - forum_print_post($post, $course->id, false, false, false, false, $fulllink, $strippedsearch); + //search terms already highlighted - fiedorow - 9/2/2005 + forum_print_post($post, $course->id, false, false, false, false, $fulllink); echo "
"; } -- 2.39.5