Files
moodle/mod/survey/classes/output/actionbar.php
T
Sujith Haridasan bfb4c2797a MDL-74332 mod_survey: Critical incidents dont require summary and scales
Do not show summary and scales for the survey with critical
incidents. So critical incidents survey would have questions
and participants only under response reports.
Also corrected the heading for the Questions page.
2022-04-04 09:56:15 +05:30

129 lines
3.8 KiB
PHP

<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
namespace mod_survey\output;
use moodle_url;
use renderable;
use renderer_base;
use templatable;
use url_select;
/**
* Output the rendered elements for the tertiary nav page action
*
* @package mod_survey
* @copyright 2021 Sujith Haridasan <sujith@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class actionbar implements renderable, templatable {
/**
* The course id.
*
* @var int $id
*/
private $id;
/**
* The action decides the url to navigate to.
*
* @var string $action
*/
private $action;
/**
* Current url.
*
* @var moodle_url $currenturl
*/
private $currenturl;
/**
* actionbar constructor.
*
* @param int $id The course module id.
* @param string $action The action string.
* @param moodle_url $currenturl The current URL.
*/
public function __construct(int $id, string $action, moodle_url $currenturl) {
$this->id = $id;
$this->action = $action;
$this->currenturl = $currenturl;
}
/**
* Create select menu for the reports
*
* @return url_select url_select object.
*/
private function create_select_menu(): url_select {
$menu = [];
$actions = $this->get_available_reports();
foreach ($actions as $action => $straction) {
$url = new moodle_url($this->currenturl, ['id' => $this->id, 'action' => $action]);
$menu[$url->out(false)] = $straction;
}
return new url_select($menu, $this->currenturl->out(false), null, 'surveyresponseselect');
}
/**
* Generate available reports list
*
* @return array The list of available action => action string.
*/
private function get_available_reports(): array {
global $DB;
$cm = get_coursemodule_from_id('survey', $this->id);
$survey = $DB->get_record("survey", ["id" => $cm->instance]);
$actions = [];
if ($survey && ($survey->template != SURVEY_CIQ)) {
$actions['summary'] = get_string('summary', 'survey');
$actions['scales'] = get_string('scales', 'survey');
}
$actions['questions'] = get_string('questions', 'survey');
$actions['students'] = get_string('participants');
return $actions;
}
/**
* Data for the template.
*
* @param renderer_base $output renderer_base object.
* @return array data for the template
*/
public function export_for_template(renderer_base $output): array {
global $PAGE;
$selecturl = $this->create_select_menu();
$data = [
'urlselect' => $selecturl->export_for_template($output)
];
if (has_capability('mod/survey:download', $PAGE->cm->context)) {
$downloadlink = (new moodle_url('/mod/survey/report.php', ['id' => $this->id, 'action' => 'download']))->out(false);
$data['download'] = [
'link' => $downloadlink,
'text' => get_string('downloadresults', 'mod_survey'),
];
}
return $data;
}
}