芝麻web文件管理V1.00
编辑当前文件:/home2/sdektunc/www/cepali/mod/feedback/classes/responses_anon_table.php
. /** * Contains class mod_feedback_responses_anon_table * * @package mod_feedback * @copyright 2016 Marina Glancy * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); /** * Class mod_feedback_responses_anon_table * * @package mod_feedback * @copyright 2016 Marina Glancy * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class mod_feedback_responses_anon_table extends mod_feedback_responses_table { /** @var string */ protected $showallparamname = 'ashowall'; /** @var string */ protected $downloadparamname = 'adownload'; /** * Initialises table * @param int $group retrieve only users from this group (optional) */ public function init($group = 0) { $cm = $this->feedbackstructure->get_cm(); $this->uniqueid = 'feedback-showentry-anon-list-' . $cm->instance; // There potentially can be both tables with anonymouns and non-anonymous responses on // the same page (for example when feedback anonymity was changed after some people // already responded). In this case we need to distinguish tables' pagination parameters. $this->request[TABLE_VAR_PAGE] = 'apage'; $tablecolumns = ['random_response']; $tableheaders = [get_string('response_nr', 'feedback')]; if ($this->feedbackstructure->get_feedback()->course == SITEID && !$this->feedbackstructure->get_courseid()) { $tablecolumns[] = 'courseid'; $tableheaders[] = get_string('course'); } $this->define_columns($tablecolumns); $this->define_headers($tableheaders); $this->sortable(true, 'random_response'); $this->collapsible(true); $this->set_attribute('id', 'showentryanontable'); $params = ['instance' => $cm->instance, 'anon' => FEEDBACK_ANONYMOUS_YES, 'courseid' => $this->feedbackstructure->get_courseid()]; $fields = 'c.id, c.random_response, c.courseid'; $from = '{feedback_completed} c'; $where = 'c.anonymous_response = :anon AND c.feedback = :instance'; if ($this->feedbackstructure->get_courseid()) { $where .= ' AND c.courseid = :courseid'; } $group = (empty($group)) ? groups_get_activity_group($this->feedbackstructure->get_cm(), true) : $group; if ($group) { $where .= ' AND c.userid IN (SELECT g.userid FROM {groups_members} g WHERE g.groupid = :group)'; $params['group'] = $group; } $this->set_sql($fields, $from, $where, $params); $this->set_count_sql("SELECT COUNT(c.id) FROM $from WHERE $where", $params); } /** * Returns a link for viewing a single response * @param stdClass $row * @return \moodle_url */ protected function get_link_single_entry($row) { return new moodle_url($this->baseurl, ['showcompleted' => $row->id]); } /** * Prepares column reponse for display * @param stdClass $row * @return string */ public function col_random_response($row) { if ($this->is_downloading()) { return $row->random_response; } else { return html_writer::link($this->get_link_single_entry($row), get_string('response_nr', 'feedback').': '. $row->random_response); } } /** * Add data for the external structure that will be returned. * * @param stdClass $row a database query record row * @since Moodle 3.3 */ protected function add_data_for_external($row) { $this->dataforexternal[] = [ 'id' => $row->id, 'courseid' => $row->courseid, 'number' => $row->random_response, 'responses' => $this->get_responses_for_external($row) ]; } }