AutorÃa | Ultima modificación | Ver Log |
<?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;
}
}