From 667f63fefa4156c9e6920061db55147785eef31b Mon Sep 17 00:00:00 2001 From: "Andrew Davis (andyjdavis)" Date: Mon, 19 Sep 2011 16:06:05 +0800 Subject: [PATCH] MDL-25241 forum: reimplemented the display of ratings on the forum search page --- mod/forum/search.php | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/mod/forum/search.php b/mod/forum/search.php index 96af8369398..9913facfd7a 100644 --- a/mod/forum/search.php +++ b/mod/forum/search.php @@ -158,6 +158,17 @@ if (!$posts = forum_search_posts($searchterms, $course->id, $page*$perpage, $per exit; } +//including this here to prevent it being included if there are no search results +require_once($CFG->dirroot.'/rating/lib.php'); + +//set up the ratings information that will be the same for all posts +$ratingoptions = new stdClass(); +$ratingoptions->component = 'mod_forum'; +$ratingoptions->ratingarea = 'post'; +$ratingoptions->userid = $USER->id; +$ratingoptions->returnurl = $PAGE->url->out(false); +$rm = new rating_manager(); + $PAGE->set_title($strsearchresults); $PAGE->set_heading($course->fullname); $PAGE->set_button($searchform); @@ -227,6 +238,23 @@ foreach ($posts as $post) { $post->subject = $fullsubject; $post->subjectnoformat = true; + //add the ratings information to the post + //Unfortunately seem to have do this individually as posts may be from different forums + if ($forum->assessed != RATING_AGGREGATE_NONE) { + $modcontext = get_context_instance(CONTEXT_MODULE, $cm->id); + $ratingoptions->context = $modcontext; + $ratingoptions->items = array($post); + $ratingoptions->aggregate = $forum->assessed;//the aggregation method + $ratingoptions->scaleid = $forum->scale; + $ratingoptions->assesstimestart = $forum->assesstimestart; + $ratingoptions->assesstimefinish = $forum->assesstimefinish; + $postswithratings = $rm->get_ratings($ratingoptions); + + if ($postswithratings && count($postswithratings)==1) { + $post = $postswithratings[0]; + } + } + // Identify search terms only found in HTML markup, and add a warning about them to // the start of the message text. However, do not do the highlighting here. forum_print_post // will do it for us later.