function survey_user_complete($course, $user, $mod, $survey) { global $CFG; if (survey_already_done($survey->id, $user->id)) { if ($survey->template == SURVEY_CIQ) { // print out answers for critical incidents $table = NULL; $table->align = array("left", "left"); $questions = get_records_list("survey_questions", "id", $survey->questions); $questionorder = explode(",", $survey->questions); foreach ($questionorder as $key => $val) { $question = $questions[$val]; $questiontext = get_string($question->shorttext, "survey"); if ($answer = survey_get_user_answer($survey->id, $question->id, $user->id)) { $answertext = "{$answer->answer1}"; } else { $answertext = "No answer"; } $table->data[] = array("<b>{$questiontext}</b>", $answertext); } print_table($table); } else { survey_print_graph("id={$mod->id}&sid={$user->id}&type=student.png"); } } else { print_string("notdone", "survey"); } }
} if ($course->format == "weeks") { $table->head = array($strweek, $strname, $strstatus); $table->align = array("CENTER", "LEFT", "LEFT"); } else { if ($course->format == "topics") { $table->head = array($strtopic, $strname, $strstatus); $table->align = array("CENTER", "LEFT", "LEFT"); } else { $table->head = array($strname, $strstatus); $table->align = array("LEFT", "LEFT"); } } $currentsection = ''; foreach ($surveys as $survey) { if (!empty($USER->id) and survey_already_done($survey->id, $USER->id)) { $ss = $strdone; } else { $ss = $strnotdone; } $printsection = ""; if ($survey->section !== $currentsection) { if ($survey->section) { $printsection = $survey->section; } if ($currentsection !== "") { $table->data[] = 'hr'; } $currentsection = $survey->section; } //Calculate the href
$context = context_module::instance($cm->id); require_capability('mod/survey:participate', $context); if (!($survey = $DB->get_record("survey", array("id" => $cm->instance)))) { print_error('invalidsurveyid', 'survey'); } $trimmedintro = trim($survey->intro); if (empty($trimmedintro)) { $tempo = $DB->get_field("survey", "intro", array("id" => $survey->template)); $survey->intro = get_string($tempo, "survey"); } if (!($template = $DB->get_record("survey", array("id" => $survey->template)))) { print_error('invalidtmptid', 'survey'); } $showscales = $template->name != 'ciqname'; // Check the survey hasn't already been filled out. $surveyalreadydone = survey_already_done($survey->id, $USER->id); if ($surveyalreadydone) { // Trigger course_module_viewed event and completion. survey_view($survey, $course, $cm, $context, 'graph'); } else { survey_view($survey, $course, $cm, $context, 'form'); } $strsurvey = get_string("modulename", "survey"); $PAGE->set_title($survey->name); $PAGE->set_heading($course->fullname); echo $OUTPUT->header(); echo $OUTPUT->heading($survey->name); // Check to see if groups are being used in this survey. if ($groupmode = groups_get_activity_groupmode($cm)) { // Groups are being used. $currentgroup = groups_get_activity_group($cm);
error("Course Module ID was incorrect"); } if (!($course = get_record("course", "id", $cm->course))) { error("Course is misconfigured"); } require_login($course->id, false, $cm); $context = get_context_instance(CONTEXT_MODULE, $cm->id); require_capability('mod/survey:participate', $context); if (!($survey = get_record("survey", "id", $cm->instance))) { error("Survey ID was incorrect"); } add_to_log($course->id, "survey", "submit", "view.php?id={$cm->id}", "{$survey->id}", "{$cm->id}"); $strsurveysaved = get_string('surveysaved', 'survey'); $navigation = build_navigation('', $cm); print_header_simple("{$strsurveysaved}", "", $navigation, ""); if (survey_already_done($survey->id, $USER->id)) { notice(get_string("alreadysubmitted", "survey"), $_SERVER["HTTP_REFERER"]); exit; } // Sort through the data and arrange it // This is necessary because some of the questions // may have two answers, eg Question 1 -> 1 and P1 $answers = array(); foreach ($formdata as $key => $val) { if ($key != "userid" && $key != "id") { if (substr($key, 0, 1) == "q") { $key = clean_param(substr($key, 1), PARAM_ALPHANUM); // keep everything but the 'q', number or Pnumber } if (substr($key, 0, 1) == "P") { $realkey = (int) substr($key, 1);
$sections = get_all_sections($course->id); } $table = new html_table(); $table->width = '100%'; if ($usesections) { $table->head = array ($strsectionname, $strname, $strstatus); } else { $table->head = array ($strname, $strstatus); } $currentsection = ''; foreach ($surveys as $survey) { if (isloggedin() and survey_already_done($survey->id, $USER->id)) { $ss = $strdone; } else { $ss = $strnotdone; } $printsection = ""; if ($usesections) { if ($survey->section !== $currentsection) { if ($survey->section) { $printsection = get_section_name($course, $sections[$survey->section]); } if ($currentsection !== "") { $table->data[] = 'hr'; } $currentsection = $survey->section; }
/** * @global stdObject * @global object * @uses SURVEY_CIQ * @param object $course * @param object $user * @param object $mod * @param object $survey */ function survey_user_complete($course, $user, $mod, $survey) { global $CFG, $DB, $OUTPUT; if (survey_already_done($survey->id, $user->id)) { if ($survey->template == SURVEY_CIQ) { // print out answers for critical incidents $table = new html_table(); $table->align = array("left", "left"); $questions = $DB->get_records_list("survey_questions", "id", explode(',', $survey->questions)); $questionorder = explode(",", $survey->questions); foreach ($questionorder as $key=>$val) { $question = $questions[$val]; $questiontext = get_string($question->shorttext, "survey"); if ($answer = survey_get_user_answer($survey->id, $question->id, $user->id)) { $answertext = "$answer->answer1"; } else { $answertext = "No answer"; } $table->data[] = array("<b>$questiontext</b>", s($answertext)); } echo html_writer::table($table); } else { survey_print_graph("id=$mod->id&sid=$user->id&type=student.png"); } } else { print_string("notdone", "survey"); } }
/** * Submit the answers for a given survey. * * @param int $surveyid the survey instance id * @param array $answers the survey answers * @return array of warnings and status result * @since Moodle 3.0 * @throws moodle_exception */ public static function submit_answers($surveyid, $answers) { global $DB, $USER; $params = self::validate_parameters(self::submit_answers_parameters(), array('surveyid' => $surveyid, 'answers' => $answers)); $warnings = array(); // Request and permission validation. $survey = $DB->get_record('survey', array('id' => $params['surveyid']), '*', MUST_EXIST); list($course, $cm) = get_course_and_cm_from_instance($survey, 'survey'); $context = context_module::instance($cm->id); self::validate_context($context); require_capability('mod/survey:participate', $context); if (survey_already_done($survey->id, $USER->id)) { throw new moodle_exception("alreadysubmitted", "survey"); } // Build the answers array. Data is cleaned inside the survey_save_answers function. $answers = array(); foreach ($params['answers'] as $answer) { $key = $answer['key']; $answers[$key] = $answer['value']; } survey_save_answers($survey, $answers, $course, $context); $result = array(); $result['status'] = true; $result['warnings'] = $warnings; return $result; }