Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 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
 * This main view page for a questionnaire.
19
 *
20
 * @package mod_questionnaire
21
 * @copyright  2016 Mike Churchward (mike.churchward@poetgroup.org)
22
 * @author     Mike Churchward
23
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
24
 *
25
 */
26
require_once("../../config.php");
27
require_once($CFG->dirroot.'/mod/questionnaire/locallib.php');
28
require_once($CFG->libdir . '/completionlib.php');
29
require_once($CFG->dirroot.'/mod/questionnaire/questionnaire.class.php');
30
 
31
if (!isset($SESSION->questionnaire)) {
32
    $SESSION->questionnaire = new stdClass();
33
}
34
$SESSION->questionnaire->current_tab = 'view';
35
 
36
$id = optional_param('id', null, PARAM_INT);    // Course Module ID.
37
$a = optional_param('a', null, PARAM_INT);      // Or questionnaire ID.
38
 
39
$sid = optional_param('sid', null, PARAM_INT);  // Survey id.
40
 
41
list($cm, $course, $questionnaire) = questionnaire_get_standard_page_items($id, $a);
42
 
43
// Check login and get context.
44
require_course_login($course, true, $cm);
45
$context = context_module::instance($cm->id);
46
 
47
$url = new moodle_url($CFG->wwwroot.'/mod/questionnaire/view.php');
48
if (isset($id)) {
49
    $url->param('id', $id);
50
} else {
51
    $url->param('a', $a);
52
}
53
if (isset($sid)) {
54
    $url->param('sid', $sid);
55
}
56
 
57
$PAGE->set_url($url);
58
$PAGE->set_context($context);
59
$questionnaire = new questionnaire($course, $cm, 0, $questionnaire);
60
// Add renderer and page objects to the questionnaire object for display use.
61
$questionnaire->add_renderer($PAGE->get_renderer('mod_questionnaire'));
62
$questionnaire->add_page(new \mod_questionnaire\output\viewpage());
63
 
64
$PAGE->set_title(format_string($questionnaire->name));
65
$PAGE->set_heading(format_string($course->fullname));
66
 
67
echo $questionnaire->renderer->header();
68
// No need to print out intro or name in Moodle 4 and above.
69
 
70
$cm = $questionnaire->cm;
71
$currentgroupid = groups_get_activity_group($cm);
72
if (!groups_is_member($currentgroupid, $USER->id)) {
73
    $currentgroupid = 0;
74
}
75
 
76
$message = $questionnaire->user_access_messages($USER->id);
77
if ($message !== false) {
78
    $questionnaire->page->add_to_page('message', $message);
79
} else if ($questionnaire->user_can_take($USER->id)) {
80
    if ($questionnaire->questions) { // Sanity check.
81
        if (!$questionnaire->user_has_saved_response($USER->id)) {
82
            $questionnaire->page->add_to_page('complete',
83
                '<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/complete.php?' .
84
                'id=' . $questionnaire->cm->id) . '" class="btn btn-primary">' .
85
                get_string('answerquestions', 'questionnaire') . '</a>');
86
        } else {
87
            $resumesurvey = get_string('resumesurvey', 'questionnaire');
88
            $questionnaire->page->add_to_page('complete',
89
                '<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/complete.php?' .
90
                'id='.$questionnaire->cm->id.'&resume=1').'" title="'.$resumesurvey.
91
                '" class="btn btn-primary">'.$resumesurvey.'</a>');
92
        }
93
    } else {
94
        $questionnaire->page->add_to_page('message', get_string('noneinuse', 'questionnaire'));
95
    }
96
}
97
 
98
if ($questionnaire->capabilities->editquestions && !$questionnaire->questions && $questionnaire->is_active()) {
99
    $questionnaire->page->add_to_page('complete',
100
        '<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/questions.php?'.
101
        'id=' . $questionnaire->cm->id) . '" class="btn btn-primary">' .
102
        get_string('addquestions', 'questionnaire') . '</a>');
103
}
104
 
105
if (isguestuser()) {
106
    $guestno = html_writer::tag('p', get_string('noteligible', 'questionnaire'));
107
    $liketologin = html_writer::tag('p', get_string('liketologin'));
108
    $questionnaire->page->add_to_page('guestuser',
109
        $questionnaire->renderer->confirm($guestno."\n\n".$liketologin."\n", get_login_url(), get_local_referer(false)));
110
}
111
 
112
// Log this course module view.
113
// Needed for the event logging.
114
$context = context_module::instance($questionnaire->cm->id);
115
$anonymous = $questionnaire->respondenttype == 'anonymous';
116
 
117
$event = \mod_questionnaire\event\course_module_viewed::create(array(
118
                'objectid' => $questionnaire->id,
119
                'anonymous' => $anonymous,
120
                'context' => $context
121
));
122
$event->trigger();
123
 
124
$usernumresp = $questionnaire->count_submissions($USER->id);
125
 
126
if ($questionnaire->capabilities->readownresponses && ($usernumresp > 0)) {
127
    $argstr = 'instance='.$questionnaire->id.'&user='.$USER->id;
128
    if ($usernumresp > 1) {
129
        $titletext = get_string('viewyourresponses', 'questionnaire', $usernumresp);
130
    } else {
131
        $titletext = get_string('yourresponse', 'questionnaire');
132
        $argstr .= '&byresponse=1&action=vresp';
133
    }
134
    $questionnaire->page->add_to_page('yourresponse',
135
        '<a href="' .$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/myreport.php?' . $argstr).
136
        '" class="btn btn-primary">' . $titletext . '</a>');
137
}
138
 
139
if ($questionnaire->can_view_all_responses($usernumresp)) {
140
    $argstr = 'instance='.$questionnaire->id.'&group='.$currentgroupid;
141
    $questionnaire->page->add_to_page('allresponses',
142
        '<a href="'.$CFG->wwwroot.htmlspecialchars('/mod/questionnaire/report.php?'.$argstr).'" class="btn btn-primary">'.
143
        get_string('viewallresponses', 'questionnaire').'</a>');
144
}
145
 
146
echo $questionnaire->renderer->render($questionnaire->page);
147
echo $questionnaire->renderer->footer();