Commit | Line | Data |
---|---|---|
a09aeee4 AD |
1 | <?php |
2 | ||
3 | // This file is part of Moodle - http://moodle.org/ | |
4 | // | |
5 | // Moodle is free software: you can redistribute it and/or modify | |
6 | // it under the terms of the GNU General Public License as published by | |
7 | // the Free Software Foundation, either version 3 of the License, or | |
8 | // (at your option) any later version. | |
9 | // | |
10 | // Moodle is distributed in the hope that it will be useful, | |
11 | // but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | // GNU General Public License for more details. | |
14 | // | |
15 | // You should have received a copy of the GNU General Public License | |
16 | // along with Moodle. If not, see <http://www.gnu.org/licenses/>. | |
17 | ||
18 | /** | |
19 | * A page to display a list of ratings for a given item (forum post etc) | |
20 | * | |
5d354ded PS |
21 | * @package core |
22 | * @subpackage rating | |
23 | * @copyright 2010 Andrew Davis | |
24 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
a09aeee4 AD |
25 | */ |
26 | ||
27 | require_once("../config.php"); | |
9c1f9627 | 28 | require_once("lib.php"); |
a09aeee4 | 29 | |
f1f6a755 | 30 | $contextid = required_param('contextid', PARAM_INT); |
a09aeee4 AD |
31 | $itemid = required_param('itemid', PARAM_INT); |
32 | $scaleid = required_param('scaleid', PARAM_INT); | |
33 | $sort = optional_param('sort', '', PARAM_ALPHA); | |
63e87951 | 34 | $popup = optional_param('popup', 0, PARAM_INT);//==1 if in a popup window? |
a09aeee4 | 35 | |
f1f6a755 AD |
36 | list($context, $course, $cm) = get_context_info_array($contextid); |
37 | require_login($course, false, $cm); | |
a09aeee4 | 38 | |
7ac928a7 | 39 | $url = new moodle_url('/rating/index.php', array('contextid'=>$contextid,'itemid'=>$itemid,'scaleid'=>$scaleid)); |
a09aeee4 AD |
40 | if ($sort !== 0) { |
41 | $url->param('sort', $sort); | |
42 | } | |
43 | $PAGE->set_url($url); | |
c8e142dd AD |
44 | $PAGE->set_context($context); |
45 | ||
63e87951 AD |
46 | if ($popup) { |
47 | $PAGE->set_pagelayout('popup'); | |
48 | } | |
a09aeee4 | 49 | |
63e87951 | 50 | if (!has_capability('moodle/rating:view',$context)) { |
6c5fcef7 | 51 | print_error('noviewrate', 'rating'); |
a09aeee4 | 52 | } |
63e87951 | 53 | if (!has_capability('moodle/rating:viewall',$context) and $USER->id != $item->userid) { |
6c5fcef7 | 54 | print_error('noviewanyrate', 'rating'); |
a09aeee4 AD |
55 | } |
56 | ||
57 | switch ($sort) { | |
58 | case 'firstname': $sqlsort = "u.firstname ASC"; break; | |
59 | case 'rating': $sqlsort = "r.rating ASC"; break; | |
60 | default: $sqlsort = "r.timemodified ASC"; | |
61 | } | |
62 | ||
63 | $scalemenu = make_grades_menu($scaleid); | |
64 | ||
6c5fcef7 | 65 | $strrating = get_string('rating', 'rating'); |
a09aeee4 AD |
66 | $strname = get_string('name'); |
67 | $strtime = get_string('time'); | |
68 | ||
d0c675f7 | 69 | $PAGE->set_title(get_string('allratingsforitem','rating')); |
a09aeee4 AD |
70 | echo $OUTPUT->header(); |
71 | ||
b1721f67 AD |
72 | $ratingoptions = new stdclass(); |
73 | $ratingoptions->context = $context; | |
74 | $ratingoptions->itemid = $itemid; | |
63e87951 | 75 | $ratingoptions->sort = $sqlsort; |
a8e85df6 AD |
76 | |
77 | $rm = new rating_manager(); | |
63e87951 | 78 | $ratings = $rm->get_all_ratings_for_item($ratingoptions); |
a09aeee4 | 79 | if (!$ratings) { |
695719fa AD |
80 | $msg = get_string('noratings','rating'); |
81 | echo html_writer::tag('div', $msg, array('class'=>'mdl-align')); | |
a09aeee4 | 82 | } else { |
63e87951 AD |
83 | $sortargs = "contextid=$contextid&itemid=$itemid&scaleid=$scaleid"; |
84 | if($popup) { | |
85 | $sortargs.="&popup=$popup"; | |
86 | } | |
a09aeee4 AD |
87 | echo "<table border=\"0\" cellpadding=\"3\" cellspacing=\"3\" class=\"generalbox\" style=\"width:100%\">"; |
88 | echo "<tr>"; | |
89 | echo "<th class=\"header\" scope=\"col\"> </th>"; | |
63e87951 AD |
90 | echo "<th class=\"header\" scope=\"col\"><a href=\"index.php?$sortargs&sort=firstname\">$strname</a></th>"; |
91 | echo "<th class=\"header\" scope=\"col\" style=\"width:100%\"><a href=\"index.php?$sortargs&sort=rating\">$strrating</a></th>"; | |
92 | echo "<th class=\"header\" scope=\"col\"><a href=\"index.php?$sortargs&sort=time\">$strtime</a></th>"; | |
a09aeee4 | 93 | echo "</tr>"; |
61b00708 | 94 | |
aafa4f32 AD |
95 | //if the scale was changed after ratings were submitted some ratings may have a value above the current maximum |
96 | $maxrating = count($scalemenu) - 1; | |
a09aeee4 | 97 | foreach ($ratings as $rating) { |
61b00708 AD |
98 | //Undo the aliasing of the user id column from user_picture::fields() |
99 | //we could clone the rating object or preserve the rating id if we needed it again | |
100 | //but we don't | |
101 | $rating->id = $rating->uid; | |
5d354ded | 102 | |
7ac928a7 | 103 | echo '<tr class="ratingitemheader">'; |
a09aeee4 | 104 | echo "<td>"; |
2d10c085 AD |
105 | if($course && $course->id) { |
106 | echo $OUTPUT->user_picture($rating, array('courseid'=>$course->id)); | |
a09aeee4 AD |
107 | } else { |
108 | echo $OUTPUT->user_picture($rating); | |
109 | } | |
110 | echo '</td><td>'.fullname($rating).'</td>'; | |
07f05a04 AD |
111 | |
112 | //if they've switched to rating out of 5 but there were ratings submitted out of 10 for example | |
113 | //Not doing this within $rm->get_all_ratings_for_item to allow access to the raw data | |
114 | if ($rating->rating > $maxrating) { | |
115 | $rating->rating = $maxrating; | |
116 | } | |
a09aeee4 AD |
117 | echo '<td style="white-space:nowrap" align="center" class="rating">'.$scalemenu[$rating->rating]."</td>"; |
118 | echo '<td style="white-space:nowrap" align="center" class="time">'.userdate($rating->timemodified)."</td>"; | |
119 | echo "</tr>\n"; | |
120 | } | |
121 | echo "</table>"; | |
122 | echo "<br />"; | |
123 | } | |
124 | ||
63e87951 AD |
125 | if ($popup) { |
126 | echo $OUTPUT->close_window_button(); | |
127 | } | |
a09aeee4 | 128 | echo $OUTPUT->footer(); |