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/>.
/**
* This main view page for a questionnaire.
*
* @package mod_questionnaire
* @copyright 2016 Mike Churchward (mike.churchward@poetgroup.org)
* @author Mike Churchward
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*
*/
require_once("../../config.php");
require_once($CFG->dirroot.'/mod/questionnaire/locallib.php');
require_once($CFG->libdir . '/completionlib.php');
require_once($CFG->dirroot.'/mod/questionnaire/questionnaire.class.php');
if (!isset($SESSION->questionnaire)) {
$SESSION->questionnaire = new stdClass();
}
$SESSION->questionnaire->current_tab = 'view';
$id = optional_param('id', null, PARAM_INT); // Course Module ID.
$a = optional_param('a', null, PARAM_INT); // Or questionnaire ID.
$sid = optional_param('sid', null, PARAM_INT); // Survey id.
list($cm, $course, $questionnaire) = questionnaire_get_standard_page_items($id, $a);
// Check login and get context.
require_course_login($course, true, $cm);
$context = context_module::instance($cm->id);
$url = new moodle_url($CFG->wwwroot.'/mod/questionnaire/view.php');
if (isset($id)) {
$url->param('id', $id);
} else {
$url->param('a', $a);
}
if (isset($sid)) {
$url->param('sid', $sid);
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$questionnaire = new questionnaire($course, $cm, 0, $questionnaire);
// Add renderer and page objects to the questionnaire object for display use.
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
$questionnaire->add_page(new \mod_questionnaire\output\viewpage());
$PAGE->set_title(format_string($questionnaire->name));
$PAGE->set_heading(format_string($course->fullname));
echo $questionnaire->renderer->header();
// No need to print out intro or name in Moodle 4 and above.
$cm = $questionnaire->cm;
$currentgroupid = groups_get_activity_group($cm);
if (!groups_is_member($currentgroupid, $USER->id)) {
$currentgroupid = 0;
}
$message = $questionnaire->user_access_messages($USER->id);
if ($message !== false) {
$questionnaire->page->add_to_page('message', $message);
} else if ($questionnaire->user_can_take($USER->id)) {
if ($questionnaire->questions) { // Sanity check.
if (!$questionnaire->user_has_saved_response($USER->id)) {
$questionnaire->page->add_to_page('complete',
'<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/complete.php?' .
'id=' . $questionnaire->cm->id) . '" class="btn btn-primary">' .
get_string('answerquestions', 'questionnaire') . '</a>');
} else {
$resumesurvey = get_string('resumesurvey', 'questionnaire');
$questionnaire->page->add_to_page('complete',
'<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/complete.php?' .
'id='.$questionnaire->cm->id.'&resume=1').'" title="'.$resumesurvey.
'" class="btn btn-primary">'.$resumesurvey.'</a>');
}
} else {
$questionnaire->page->add_to_page('message', get_string('noneinuse', 'questionnaire'));
}
}
if ($questionnaire->capabilities->editquestions && !$questionnaire->questions && $questionnaire->is_active()) {
$questionnaire->page->add_to_page('complete',
'<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/questions.php?'.
'id=' . $questionnaire->cm->id) . '" class="btn btn-primary">' .
get_string('addquestions', 'questionnaire') . '</a>');
}
if (isguestuser()) {
$guestno = html_writer::tag('p', get_string('noteligible', 'questionnaire'));
$liketologin = html_writer::tag('p', get_string('liketologin'));
$questionnaire->page->add_to_page('guestuser',
$questionnaire->renderer->confirm($guestno."\n\n".$liketologin."\n", get_login_url(), get_local_referer(false)));
}
// Log this course module view.
// Needed for the event logging.
$context = context_module::instance($questionnaire->cm->id);
$anonymous = $questionnaire->respondenttype == 'anonymous';
$event = \mod_questionnaire\event\course_module_viewed::create(array(
'objectid' => $questionnaire->id,
'anonymous' => $anonymous,
'context' => $context
));
$event->trigger();
$usernumresp = $questionnaire->count_submissions($USER->id);
if ($questionnaire->capabilities->readownresponses && ($usernumresp > 0)) {
$argstr = 'instance='.$questionnaire->id.'&user='.$USER->id;
if ($usernumresp > 1) {
$titletext = get_string('viewyourresponses', 'questionnaire', $usernumresp);
} else {
$titletext = get_string('yourresponse', 'questionnaire');
$argstr .= '&byresponse=1&action=vresp';
}
$questionnaire->page->add_to_page('yourresponse',
'<a href="' .$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/myreport.php?' . $argstr).
'" class="btn btn-primary">' . $titletext . '</a>');
}
if ($questionnaire->can_view_all_responses($usernumresp)) {
$argstr = 'instance='.$questionnaire->id.'&group='.$currentgroupid;
$questionnaire->page->add_to_page('allresponses',
'<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/report.php?'.$argstr).'" class="btn btn-primary">'.
get_string('viewallresponses', 'questionnaire').'</a>');
}
echo $questionnaire->renderer->render($questionnaire->page);
echo $questionnaire->renderer->footer();