Merge branch 'MDL-74332-311' of https://github.com/sharidas/moodle into MOODLE_311_STABLE

This commit is contained in:
Jun Pataleta
2022-04-07 00:35:13 +08:00
3 changed files with 326 additions and 264 deletions
+10 -5
View File
@@ -812,16 +812,21 @@ function survey_supports($feature) {
* @param navigation_node $surveynode
*/
function survey_extend_settings_navigation($settings, $surveynode) {
global $PAGE;
global $PAGE, $DB;
if (has_capability('mod/survey:readresponses', $PAGE->cm->context)) {
$responsesnode = $surveynode->add(get_string("responsereports", "survey"));
$url = new moodle_url('/mod/survey/report.php', array('id' => $PAGE->cm->id, 'action'=>'summary'));
$responsesnode->add(get_string("summary", "survey"), $url);
$url = new moodle_url('/mod/survey/report.php', array('id' => $PAGE->cm->id, 'action'=>'scales'));
$responsesnode->add(get_string("scales", "survey"), $url);
$cm = get_coursemodule_from_id('survey', $PAGE->cm->id);
$survey = $DB->get_record("survey", ["id" => $cm->instance]);
if ($survey && ($survey->template != SURVEY_CIQ)) {
$url = new moodle_url('/mod/survey/report.php', array('id' => $PAGE->cm->id, 'action' => 'summary'));
$responsesnode->add(get_string("summary", "survey"), $url);
$url = new moodle_url('/mod/survey/report.php', array('id' => $PAGE->cm->id, 'action' => 'scales'));
$responsesnode->add(get_string("scales", "survey"), $url);
}
$url = new moodle_url('/mod/survey/report.php', array('id' => $PAGE->cm->id, 'action'=>'questions'));
$responsesnode->add(get_string("question", "survey"), $url);
+263 -259
View File
@@ -23,169 +23,173 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
require_once("../../config.php");
require_once("lib.php");
require_once("../../config.php");
require_once("lib.php");
// Check that all the parameters have been provided.
$id = required_param('id', PARAM_INT); // Course Module ID
$action = optional_param('action', '', PARAM_ALPHA); // What to look at
$qid = optional_param('qid', 0, PARAM_RAW); // Question IDs comma-separated list
$student = optional_param('student', 0, PARAM_INT); // Student ID
$notes = optional_param('notes', '', PARAM_RAW); // Save teachers notes
$id = required_param('id', PARAM_INT); // Course Module ID.
$action = optional_param('action', '', PARAM_ALPHA); // What to look at.
$qid = optional_param('qid', 0, PARAM_RAW); // Question IDs comma-separated list.
$student = optional_param('student', 0, PARAM_INT); // Student ID.
$notes = optional_param('notes', '', PARAM_RAW); // Save teachers notes.
$qids = explode(',', $qid);
$qids = clean_param_array($qids, PARAM_INT);
$qid = implode (',', $qids);
$qids = explode(',', $qid);
$qids = clean_param_array($qids, PARAM_INT);
$qid = implode(',', $qids);
if (! $cm = get_coursemodule_from_id('survey', $id)) {
print_error('invalidcoursemodule');
}
if (!$cm = get_coursemodule_from_id('survey', $id)) {
throw new moodle_exception('invalidcoursemodule');
}
if (! $course = $DB->get_record("course", array("id"=>$cm->course))) {
print_error('coursemisconf');
}
if (!$course = $DB->get_record("course", array("id" => $cm->course))) {
throw new moodle_exception('coursemisconf');
}
$url = new moodle_url('/mod/survey/report.php', array('id'=>$id));
if ($action !== '') {
$url->param('action', $action);
}
if ($qid !== 0) {
$url->param('qid', $qid);
}
if ($student !== 0) {
$url->param('student', $student);
}
if ($notes !== '') {
$url->param('notes', $notes);
}
$PAGE->set_url($url);
$url = new moodle_url('/mod/survey/report.php', array('id' => $id));
if ($action !== '') {
$url->param('action', $action);
}
if ($qid !== 0) {
$url->param('qid', $qid);
}
if ($student !== 0) {
$url->param('student', $student);
}
if ($notes !== '') {
$url->param('notes', $notes);
}
$PAGE->set_url($url);
require_login($course, false, $cm);
require_login($course, false, $cm);
$context = context_module::instance($cm->id);
$context = context_module::instance($cm->id);
require_capability('mod/survey:readresponses', $context);
require_capability('mod/survey:readresponses', $context);
if (! $survey = $DB->get_record("survey", array("id"=>$cm->instance))) {
print_error('invalidsurveyid', 'survey');
}
if (!$survey = $DB->get_record("survey", array("id" => $cm->instance))) {
throw new moodle_exception('invalidsurveyid', 'survey');
}
if (! $template = $DB->get_record("survey", array("id"=>$survey->template))) {
print_error('invalidtmptid', 'survey');
}
if (!$template = $DB->get_record("survey", array("id" => $survey->template))) {
throw new moodle_exception('invalidtmptid', 'survey');
}
$showscales = ($template->name != 'ciqname');
$showscales = ($template->name != 'ciqname');
$strreport = get_string("report", "survey");
$strsurvey = get_string("modulename", "survey");
$strsurveys = get_string("modulenameplural", "survey");
$strsummary = get_string("summary", "survey");
$strscales = get_string("scales", "survey");
$strquestion = get_string("question", "survey");
$strquestions = get_string("questions", "survey");
$strdownload = get_string("download", "survey");
$strallscales = get_string("allscales", "survey");
$strallquestions = get_string("allquestions", "survey");
$strselectedquestions = get_string("selectedquestions", "survey");
$strseemoredetail = get_string("seemoredetail", "survey");
$strnotes = get_string("notes", "survey");
$strreport = get_string("report", "survey");
$strsurvey = get_string("modulename", "survey");
$strsurveys = get_string("modulenameplural", "survey");
$strsummary = get_string("summary", "survey");
$strscales = get_string("scales", "survey");
$strquestion = get_string("question", "survey");
$strquestions = get_string("questions", "survey");
$strdownload = get_string("download", "survey");
$strallscales = get_string("allscales", "survey");
$strallquestions = get_string("allquestions", "survey");
$strselectedquestions = get_string("selectedquestions", "survey");
$strseemoredetail = get_string("seemoredetail", "survey");
$strnotes = get_string("notes", "survey");
switch ($action) {
case 'download':
$PAGE->navbar->add(get_string('downloadresults', 'survey'));
break;
case 'summary':
if ($survey->template == SURVEY_CIQ) {
throw new moodle_exception('cannotviewreport');
}
case 'scales':
if ($survey->template == SURVEY_CIQ) {
throw new moodle_exception('cannotviewreport');
}
case 'questions':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add(${'str' . $action});
break;
case 'students':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add(get_string('participants'));
break;
case '':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add($strsummary);
break;
default:
$PAGE->navbar->add($strreport);
break;
}
switch ($action) {
case 'download':
$PAGE->navbar->add(get_string('downloadresults', 'survey'));
break;
case 'summary':
case 'scales':
case 'questions':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add(${'str'.$action});
break;
case 'students':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add(get_string('participants'));
break;
case '':
$PAGE->navbar->add($strreport);
$PAGE->navbar->add($strsummary);
break;
default:
$PAGE->navbar->add($strreport);
break;
}
$PAGE->set_title("$course->shortname: " . format_string($survey->name));
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
echo $OUTPUT->heading(format_string($survey->name));
$PAGE->set_title("$course->shortname: ".format_string($survey->name));
$PAGE->set_heading($course->fullname);
echo $OUTPUT->header();
echo $OUTPUT->heading(format_string($survey->name));
// Check to see if groups are being used in this survey.
if ($groupmode = groups_get_activity_groupmode($cm)) { // Groups are being used.
$menuaction = $action == "student" ? "students" : $action;
$currentgroup = groups_get_activity_group($cm, true);
groups_print_activity_menu($cm, $CFG->wwwroot . "/mod/survey/report.php?id=$cm->id&action=$menuaction&qid=$qid");
} else {
$currentgroup = 0;
}
/// Check to see if groups are being used in this survey
if ($groupmode = groups_get_activity_groupmode($cm)) { // Groups are being used
$menuaction = $action == "student" ? "students" : $action;
$currentgroup = groups_get_activity_group($cm, true);
groups_print_activity_menu($cm, $CFG->wwwroot . "/mod/survey/report.php?id=$cm->id&action=$menuaction&qid=$qid");
} else {
$currentgroup = 0;
}
$params = array(
$params = array(
'objectid' => $survey->id,
'context' => $context,
'courseid' => $course->id,
'relateduserid' => $student,
'other' => array('action' => $action, 'groupid' => $currentgroup)
);
$event = \mod_survey\event\report_viewed::create($params);
$event->trigger();
);
$event = \mod_survey\event\report_viewed::create($params);
$event->trigger();
if ($currentgroup) {
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $currentgroup, null, false);
} else if (!empty($cm->groupingid)) {
$groups = groups_get_all_groups($courseid, 0, $cm->groupingid);
$groups = array_keys($groups);
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $groups, null, false);
} else {
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', '', null, false);
$group = false;
if ($currentgroup) {
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $currentgroup, null, false);
} else if (!empty($cm->groupingid)) {
$groups = groups_get_all_groups($courseid, 0, $cm->groupingid);
$groups = array_keys($groups);
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', $groups, null, false);
} else {
$users = get_users_by_capability($context, 'mod/survey:participate', '', '', '', '', '', null, false);
$group = false;
}
$groupingid = $cm->groupingid;
echo $OUTPUT->box_start("generalbox boxaligncenter");
if ($showscales) {
echo "<a href=\"report.php?action=summary&amp;id=$id\">$strsummary</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=scales&amp;id=$id\">$strscales</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">" . get_string('participants') . "</a>";
if (has_capability('mod/survey:download', $context)) {
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>";
}
$groupingid = $cm->groupingid;
echo $OUTPUT->box_start("generalbox boxaligncenter");
if ($showscales) {
echo "<a href=\"report.php?action=summary&amp;id=$id\">$strsummary</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=scales&amp;id=$id\">$strscales</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">".get_string('participants')."</a>";
if (has_capability('mod/survey:download', $context)) {
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>";
}
if (empty($action)) {
$action = "summary";
}
} else {
echo "<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">".get_string('participants')."</a>";
if (has_capability('mod/survey:download', $context)) {
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>";
}
if (empty($action)) {
$action = "questions";
}
if (empty($action)) {
$action = "summary";
}
echo $OUTPUT->box_end();
} else {
echo "<a href=\"report.php?action=questions&amp;id=$id\">$strquestions</a>";
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=students&amp;id=$id\">" . get_string('participants') . "</a>";
if (has_capability('mod/survey:download', $context)) {
echo "&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"report.php?action=download&amp;id=$id\">$strdownload</a>";
}
if (empty($action)) {
$action = "questions";
}
}
echo $OUTPUT->box_end();
echo $OUTPUT->spacer(array('height'=>30, 'width'=>30, 'br'=>true)); // should be done with CSS instead
echo $OUTPUT->spacer(array('height' => 30, 'width' => 30, 'br' => true)); // Should be done with CSS instead.
// Print the menu across the top.
/// Print the menu across the top
$virtualscales = false;
$virtualscales = false;
switch ($action) {
switch ($action) {
case "summary":
case "summary":
echo $OUTPUT->heading($strsummary, 3);
if (survey_count_responses($survey->id, $currentgroup, $groupingid)) {
@@ -193,15 +197,15 @@
survey_print_graph("id=$id&amp;group=$currentgroup&amp;type=overall.png");
echo "</a></div>";
} else {
echo $OUTPUT->notification(get_string("nobodyyet","survey"));
echo $OUTPUT->notification(get_string("nobodyyet", "survey"));
}
break;
case "scales":
case "scales":
echo $OUTPUT->heading($strscales, 3);
if (! $results = survey_get_responses($survey->id, $currentgroup, $groupingid) ) {
echo $OUTPUT->notification(get_string("nobodyyet","survey"));
if (!$results = survey_get_responses($survey->id, $currentgroup, $groupingid)) {
echo $OUTPUT->notification(get_string("nobodyyet", "survey"));
} else {
@@ -219,7 +223,7 @@
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->multi) {
if (!empty($virtualscales) && $question->type > 0) { // Don't show non-virtual scales if virtual
if (!empty($virtualscales) && $question->type > 0) { // Don't show non-virtual scales if virtual.
continue;
}
echo "<p class=\"centerpara\"><a title=\"$strseemoredetail\" href=\"report.php?action=questions&amp;id=$id&amp;qid=$question->multi\">";
@@ -231,28 +235,28 @@
break;
case "questions":
case "questions":
if ($qid) { // just get one multi-question
if ($qid) { // Just get one multi-question.
$questions = $DB->get_records_select("survey_questions", "id in ($qid)");
$questionorder = explode(",", $qid);
if ($scale = $DB->get_records("survey_questions", array("multi"=>$qid))) {
if ($scale = $DB->get_records("survey_questions", array("multi" => $qid))) {
$scale = array_pop($scale);
echo $OUTPUT->heading("$scale->text - $strselectedquestions", 3);
} else {
echo $OUTPUT->heading($strselectedquestions, 3);
}
} else { // get all top-level questions
$questions = $DB->get_records_list("survey_questions", "id", explode(',',$survey->questions));
} else { // Get all top-level questions.
$questions = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));
$questionorder = explode(",", $survey->questions);
echo $OUTPUT->heading($strallquestions, 3);
echo $OUTPUT->heading($strquestions, 3);
}
if (! $results = survey_get_responses($survey->id, $currentgroup, $groupingid) ) {
echo $OUTPUT->notification(get_string("nobodyyet","survey"));
if (!$results = survey_get_responses($survey->id, $currentgroup, $groupingid)) {
echo $OUTPUT->notification(get_string("nobodyyet", "survey"));
} else {
@@ -284,7 +288,7 @@
echo "</a></p>";
}
}
} else if ($question->type > 0 ) {
} else if ($question->type > 0) {
echo "<p class=\"centerpara\">";
echo "<a title=\"$strseemoredetail\" href=\"report.php?action=question&amp;id=$id&amp;qid=$question->id\">";
survey_print_graph("id=$id&amp;qid=$question->id&amp;group=$currentgroup&amp;type=question.png");
@@ -293,15 +297,15 @@
} else {
$table = new html_table();
$table->head = array($question->text);
$table->align = array ("left");
$table->align = array("left");
$contents = '<table cellpadding="15" width="100%">';
if ($aaa = survey_get_user_answers($survey->id, $question->id, $currentgroup, "sa.time ASC")) {
foreach ($aaa as $a) {
$contents .= "<tr>";
$contents .= '<td class="fullnamecell">'.fullname($a).'</td>';
$contents .= '<td valign="top">'.s($a->answer1).'</td>';
$contents .= '<td class="fullnamecell">' . fullname($a) . '</td>';
$contents .= '<td valign="top">' . s($a->answer1) . '</td>';
$contents .= "</tr>";
}
}
@@ -311,24 +315,23 @@
echo html_writer::table($table);
echo $OUTPUT->spacer(array('height'=>30)); // should be done with CSS instead
echo $OUTPUT->spacer(array('height' => 30)); // Should be done with CSS instead.
}
}
}
break;
case "question":
if (!$question = $DB->get_record("survey_questions", array("id"=>$qid))) {
print_error('cannotfindquestion', 'survey');
case "question":
if (!$question = $DB->get_record("survey_questions", array("id" => $qid))) {
throw new moodle_exception('cannotfindquestion', 'survey');
}
$question->text = get_string($question->text, "survey");
$answers = explode(",", get_string($question->options, "survey"));
$answers = explode(",", get_string($question->options, "survey"));
echo $OUTPUT->heading("$strquestion: $question->text", 3);
$strname = get_string("name", "survey");
$strtime = get_string("time", "survey");
$stractual = get_string("actual", "survey");
@@ -337,26 +340,26 @@
$table = new html_table();
$table->head = array("", $strname, $strtime, $stractual, $strpreferred);
$table->align = array ("left", "left", "left", "left", "right");
$table->size = array (35, "", "", "", "");
$table->align = array("left", "left", "left", "left", "right");
$table->size = array(35, "", "", "", "");
if ($aaa = survey_get_user_answers($survey->id, $question->id, $currentgroup)) {
foreach ($aaa as $a) {
if ($a->answer1) {
$answer1 = "$a->answer1 - ".$answers[$a->answer1 - 1];
$answer1 = "$a->answer1 - " . $answers[$a->answer1 - 1];
} else {
$answer1 = "&nbsp;";
$answer1 = "&nbsp;";
}
if ($a->answer2) {
$answer2 = "$a->answer2 - ".$answers[$a->answer2 - 1];
$answer2 = "$a->answer2 - " . $answers[$a->answer2 - 1];
} else {
$answer2 = "&nbsp;";
}
$table->data[] = array(
$OUTPUT->user_picture($a, array('courseid'=>$course->id)),
"<a href=\"report.php?id=$id&amp;action=student&amp;student=$a->userid\">".fullname($a)."</a>",
userdate($a->time),
s($answer1), s($answer2));
$OUTPUT->user_picture($a, array('courseid' => $course->id)),
"<a href=\"report.php?id=$id&amp;action=student&amp;student=$a->userid\">" . fullname($a) . "</a>",
userdate($a->time),
s($answer1), s($answer2));
}
}
@@ -365,87 +368,87 @@
break;
case "students":
case "students":
echo $OUTPUT->heading(get_string("analysisof", "survey", get_string('participants')), 3);
echo $OUTPUT->heading(get_string("analysisof", "survey", get_string('participants')), 3);
if (! $results = survey_get_responses($survey->id, $currentgroup, $groupingid) ) {
echo $OUTPUT->notification(get_string("nobodyyet","survey"));
} else {
survey_print_all_responses($cm->id, $results, $course->id);
}
if (!$results = survey_get_responses($survey->id, $currentgroup, $groupingid)) {
echo $OUTPUT->notification(get_string("nobodyyet", "survey"));
} else {
survey_print_all_responses($cm->id, $results, $course->id);
}
break;
case "student":
if (!$user = $DB->get_record("user", array("id"=>$student))) {
print_error('invaliduserid');
}
case "student":
if (!$user = $DB->get_record("user", array("id" => $student))) {
throw new moodle_exception('invaliduserid');
}
echo $OUTPUT->heading(get_string("analysisof", "survey", fullname($user)), 3);
echo $OUTPUT->heading(get_string("analysisof", "survey", fullname($user)), 3);
if ($notes != '' and confirm_sesskey()) {
if (survey_get_analysis($survey->id, $user->id)) {
if (! survey_update_analysis($survey->id, $user->id, $notes)) {
echo $OUTPUT->notification(get_string("errorunabletosavenotes", "survey"), "notifyproblem");
} else {
echo $OUTPUT->notification(get_string("savednotes", "survey"), "notifysuccess");
}
} else {
if (! survey_add_analysis($survey->id, $user->id, $notes)) {
echo $OUTPUT->notification(get_string("errorunabletosavenotes", "survey"), "notifyproblem");
} else {
echo $OUTPUT->notification(get_string("savednotes", "survey"), "notifysuccess");
}
}
}
if ($notes != '' and confirm_sesskey()) {
if (survey_get_analysis($survey->id, $user->id)) {
if (!survey_update_analysis($survey->id, $user->id, $notes)) {
echo $OUTPUT->notification(get_string("errorunabletosavenotes", "survey"), "notifyproblem");
} else {
echo $OUTPUT->notification(get_string("savednotes", "survey"), "notifysuccess");
}
} else {
if (!survey_add_analysis($survey->id, $user->id, $notes)) {
echo $OUTPUT->notification(get_string("errorunabletosavenotes", "survey"), "notifyproblem");
} else {
echo $OUTPUT->notification(get_string("savednotes", "survey"), "notifysuccess");
}
}
}
echo "<p class=\"centerpara\">";
echo $OUTPUT->user_picture($user, array('courseid'=>$course->id));
echo "</p>";
echo "<p class=\"centerpara\">";
echo $OUTPUT->user_picture($user, array('courseid' => $course->id));
echo "</p>";
$questions = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));
$questionorder = explode(",", $survey->questions);
$questions = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions));
$questionorder = explode(",", $survey->questions);
if ($showscales) {
// Print overall summary
if ($showscales) {
// Print overall summary.
echo "<p class=\"centerpara\">";
survey_print_graph("id=$id&amp;sid=$student&amp;type=student.png");
echo "</p>";
survey_print_graph("id=$id&amp;sid=$student&amp;type=student.png");
echo "</p>";
// Print scales
// Print scales.
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->type < 0) { // We have some virtual scales. Just show them.
$virtualscales = true;
break;
}
}
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->type < 0) { // We have some virtual scales. Just show them.
$virtualscales = true;
break;
}
}
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->multi) {
if ($virtualscales && $question->type > 0) { // Don't show non-virtual scales if virtual
continue;
}
echo "<p class=\"centerpara\">";
echo "<a title=\"$strseemoredetail\" href=\"report.php?action=questions&amp;id=$id&amp;qid=$question->multi\">";
survey_print_graph("id=$id&amp;qid=$question->id&amp;sid=$student&amp;type=studentmultiquestion.png");
echo "</a></p><br />";
}
}
}
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->multi) {
if ($virtualscales && $question->type > 0) { // Don't show non-virtual scales if virtual.
continue;
}
echo "<p class=\"centerpara\">";
echo "<a title=\"$strseemoredetail\" href=\"report.php?action=questions&amp;id=$id&amp;qid=$question->multi\">";
survey_print_graph("id=$id&amp;qid=$question->id&amp;sid=$student&amp;type=studentmultiquestion.png");
echo "</a></p><br />";
}
}
}
// Print non-scale questions
// Print non-scale questions.
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->type == 0 or $question->type == 1) {
if ($answer = survey_get_user_answer($survey->id, $question->id, $user->id)) {
foreach ($questionorder as $key => $val) {
$question = $questions[$val];
if ($question->type == 0 or $question->type == 1) {
if ($answer = survey_get_user_answer($survey->id, $question->id, $user->id)) {
$table = new html_table();
$table->head = array(get_string($question->text, "survey"));
$table->align = array ("left");
$table->head = array(get_string($question->text, "survey"));
$table->align = array("left");
if (!empty($question->options) && $answer->answer1 > 0) {
$answers = explode(',', get_string($question->options, 'survey'));
if ($answer->answer1 <= count($answers)) {
@@ -454,40 +457,39 @@
$table->data[] = array(s($answer->answer1)); // No html here, just plain text.
}
} else {
$table->data[] = array(s($answer->answer1)); // No html here, just plain text.
$table->data[] = array(s($answer->answer1)); // No html here, just plain text.
}
echo html_writer::table($table);
echo $OUTPUT->spacer(array('height'=>30));
}
}
}
echo html_writer::table($table);
echo $OUTPUT->spacer(array('height' => 30));
}
}
}
if ($rs = survey_get_analysis($survey->id, $user->id)) {
if ($rs = survey_get_analysis($survey->id, $user->id)) {
$notes = $rs->notes;
} else {
} else {
$notes = "";
}
echo "<hr noshade=\"noshade\" size=\"1\" />";
echo "<div class='studentreport'>";
echo "<form action=\"report.php\" method=\"post\">";
echo "<h3>$strnotes:</h3>";
echo "<blockquote>";
echo "<textarea class=\"form-control\" name=\"notes\" rows=\"10\" cols=\"60\">";
p($notes);
echo "</textarea><br />";
echo "<input type=\"hidden\" name=\"action\" value=\"student\" />";
echo "<input type=\"hidden\" name=\"sesskey\" value=\"".sesskey()."\" />";
echo "<input type=\"hidden\" name=\"student\" value=\"$student\" />";
echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />";
echo "<input type=\"submit\" class=\"btn btn-primary\" value=\"".get_string("savechanges")."\" />";
echo "</blockquote>";
echo "</form>";
echo "</div>";
}
echo "<hr noshade=\"noshade\" size=\"1\" />";
echo "<div class='studentreport'>";
echo "<form action=\"report.php\" method=\"post\">";
echo "<h3>$strnotes:</h3>";
echo "<blockquote>";
echo "<textarea class=\"form-control\" name=\"notes\" rows=\"10\" cols=\"60\">";
p($notes);
echo "</textarea><br />";
echo "<input type=\"hidden\" name=\"action\" value=\"student\" />";
echo "<input type=\"hidden\" name=\"sesskey\" value=\"" . sesskey() . "\" />";
echo "<input type=\"hidden\" name=\"student\" value=\"$student\" />";
echo "<input type=\"hidden\" name=\"id\" value=\"$cm->id\" />";
echo "<input type=\"submit\" class=\"btn btn-primary\" value=\"" . get_string("savechanges") . "\" />";
echo "</blockquote>";
echo "</form>";
echo "</div>";
break;
break;
case "download":
case "download":
echo $OUTPUT->heading($strdownload, 3);
require_capability('mod/survey:download', $context);
@@ -512,11 +514,13 @@
echo $OUTPUT->container_end();
} else {
echo html_writer::tag('p', get_string("nobodyyet", "survey"), array('class' => 'centerpara'));
echo html_writer::tag('p', get_string("nobodyyet", "survey"), array('class' => 'centerpara'));
}
break;
}
echo $OUTPUT->footer();
default:
throw new moodle_exception('cannotviewreport');
}
echo $OUTPUT->footer();
@@ -0,0 +1,53 @@
@mod @mod_survey @javascript
Feature: A teacher navigates to response reports of students
If survey activity is configured for critical students
Only questions and particiats pages should be visible under response reports
Background:
Given the following "users" exist:
| username | firstname | lastname | email |
| teacher1 | Teacher | 1 | teacher1@example.com |
| student1 | Student | 1 | student1@example.com |
| student2 | Student | 1 | student2@example.com |
And the following "courses" exist:
| fullname | shortname | category | enablecompletion |
| Course 1 | C1 | 0 | 1 |
And the following "course enrolments" exist:
| user | course | role |
| teacher1 | C1 | editingteacher |
| student1 | C1 | student |
| student2 | C1 | student |
And the following "activities" exist:
| activity | name | intro | course | idnumber | section |
| survey | Test survey name | Test survey description | C1 | survey1 | 1 |
Scenario: Only questions and participants page should be available under response reports as teacher
Given I am on the "Test survey name" "survey activity" page logged in as teacher1
And I navigate to "Edit settings" in current page administration
And I set the following fields to these values:
| Survey type | Critical incidents |
And I press "Save and return to course"
And I log out
And I am on the "Test survey name" "survey activity" page logged in as student1
And I set the field "At what moment in class were you most engaged as a learner?" to "most engaged as student1"
And I set the field "At what moment in class were you most distanced as a learner?" to "most distanced as student1"
And I set the field "What action from anyone in the forums did you find most affirming or helpful?" to "most helpful student1"
And I set the field "What action from anyone in the forums did you find most puzzling or confusing?" to "most confusing student1"
And I set the field "What event surprised you most?" to "most surprised student1"
And I press "Click here to continue"
And I press "Continue"
And I log out
And I am on the "Test survey name" "survey activity" page logged in as student2
And I set the field "At what moment in class were you most engaged as a learner?" to "most engaged as student2"
And I set the field "At what moment in class were you most distanced as a learner?" to "most distanced as student2"
And I set the field "What action from anyone in the forums did you find most affirming or helpful?" to "most helpful student2"
And I set the field "What action from anyone in the forums did you find most puzzling or confusing?" to "most confusing student2"
And I set the field "What event surprised you most?" to "most surprised student1"
And I press "Click here to continue"
And I press "Continue"
And I log out
When I am on the "Test survey name" "survey activity" page logged in as teacher1
And "Summary" "link" should not exist in current page administration
And "Scales" "link" should not exist in current page administration
And "Response reports > Question" "link" should exist in current page administration
And "Response reports > Participants" "link" should exist in current page administration