1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * Contains class mod_feedback_responses_anon_table 19 * 20 * @package mod_feedback 21 * @copyright 2016 Marina Glancy 22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 23 */ 24 25 defined('MOODLE_INTERNAL') || die(); 26 27 /** 28 * Class mod_feedback_responses_anon_table 29 * 30 * @package mod_feedback 31 * @copyright 2016 Marina Glancy 32 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 33 */ 34 class mod_feedback_responses_anon_table extends mod_feedback_responses_table { 35 36 /** @var string */ 37 protected $showallparamname = 'ashowall'; 38 39 /** @var string */ 40 protected $downloadparamname = 'adownload'; 41 42 /** 43 * Initialises table 44 * @param int $group retrieve only users from this group (optional) 45 */ 46 public function init($group = 0) { 47 48 $cm = $this->feedbackstructure->get_cm(); 49 $this->uniqueid = 'feedback-showentry-anon-list-' . $cm->instance; 50 51 // There potentially can be both tables with anonymouns and non-anonymous responses on 52 // the same page (for example when feedback anonymity was changed after some people 53 // already responded). In this case we need to distinguish tables' pagination parameters. 54 $this->request[TABLE_VAR_PAGE] = 'apage'; 55 56 $tablecolumns = ['random_response']; 57 $tableheaders = [get_string('response_nr', 'feedback')]; 58 59 if ($this->feedbackstructure->get_feedback()->course == SITEID && !$this->feedbackstructure->get_courseid()) { 60 $tablecolumns[] = 'courseid'; 61 $tableheaders[] = get_string('course'); 62 } 63 64 $this->define_columns($tablecolumns); 65 $this->define_headers($tableheaders); 66 67 $this->sortable(true, 'random_response'); 68 $this->collapsible(true); 69 $this->set_attribute('id', 'showentryanontable'); 70 71 $params = ['instance' => $cm->instance, 72 'anon' => FEEDBACK_ANONYMOUS_YES, 73 'courseid' => $this->feedbackstructure->get_courseid()]; 74 75 $fields = 'c.id, c.random_response, c.courseid'; 76 $from = '{feedback_completed} c'; 77 $where = 'c.anonymous_response = :anon AND c.feedback = :instance'; 78 if ($this->feedbackstructure->get_courseid()) { 79 $where .= ' AND c.courseid = :courseid'; 80 } 81 82 $group = (empty($group)) ? groups_get_activity_group($this->feedbackstructure->get_cm(), true) : $group; 83 if ($group) { 84 $where .= ' AND c.userid IN (SELECT g.userid FROM {groups_members} g WHERE g.groupid = :group)'; 85 $params['group'] = $group; 86 } 87 88 $this->set_sql($fields, $from, $where, $params); 89 $this->set_count_sql("SELECT COUNT(c.id) FROM $from WHERE $where", $params); 90 } 91 92 /** 93 * Returns a link for viewing a single response 94 * @param stdClass $row 95 * @return \moodle_url 96 */ 97 protected function get_link_single_entry($row) { 98 return new moodle_url($this->baseurl, ['showcompleted' => $row->id]); 99 } 100 101 /** 102 * Prepares column reponse for display 103 * @param stdClass $row 104 * @return string 105 */ 106 public function col_random_response($row) { 107 if ($this->is_downloading()) { 108 return $row->random_response; 109 } else { 110 return html_writer::link($this->get_link_single_entry($row), 111 get_string('response_nr', 'feedback').': '. $row->random_response); 112 } 113 } 114 115 /** 116 * Add data for the external structure that will be returned. 117 * 118 * @param stdClass $row a database query record row 119 * @since Moodle 3.3 120 */ 121 protected function add_data_for_external($row) { 122 $this->dataforexternal[] = [ 123 'id' => $row->id, 124 'courseid' => $row->courseid, 125 'number' => $row->random_response, 126 'responses' => $this->get_responses_for_external($row) 127 ]; 128 } 129 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body