/** * Returns user's results for a specific choice * and a list of those users that did not answered yet. * * @param int $choiceid the choice instance id * @return array of responses details * @since Moodle 3.0 */ public static function get_choice_results($choiceid) { global $USER, $PAGE; $params = self::validate_parameters(self::get_choice_results_parameters(), array('choiceid' => $choiceid)); if (!($choice = choice_get_choice($params['choiceid']))) { throw new moodle_exception("invalidcoursemodule", "error"); } list($course, $cm) = get_course_and_cm_from_instance($choice, 'choice'); $context = context_module::instance($cm->id); self::validate_context($context); $groupmode = groups_get_activity_groupmode($cm); // Check if we have to include responses from inactive users. $onlyactive = $choice->includeinactive ? false : true; $users = choice_get_response_data($choice, $cm, $groupmode, $onlyactive); // Show those who haven't answered the question. if (!empty($choice->showunanswered)) { $choice->option[0] = get_string('notanswered', 'choice'); $choice->maxanswers[0] = 0; } $results = prepare_choice_show_results($choice, $course, $cm, $users); $options = array(); $fullnamecap = has_capability('moodle/site:viewfullnames', $context); foreach ($results->options as $optionid => $option) { $userresponses = array(); $numberofuser = 0; $percentageamount = 0; if (property_exists($option, 'user') and (has_capability('mod/choice:readresponses', $context) or choice_can_view_results($choice))) { $numberofuser = count($option->user); $percentageamount = (double) $numberofuser / (double) $results->numberofuser * 100.0; if ($choice->publish) { foreach ($option->user as $userresponse) { $response = array(); $response['userid'] = $userresponse->id; $response['fullname'] = fullname($userresponse, $fullnamecap); $userpicture = new user_picture($userresponse); $userpicture->size = 1; // Size f1. $response['profileimageurl'] = $userpicture->get_url($PAGE)->out(false); // Add optional properties. foreach (array('answerid', 'timemodified') as $field) { if (property_exists($userresponse, 'answerid')) { $response[$field] = $userresponse->{$field}; } } $userresponses[] = $response; } } } $options[] = array('id' => $optionid, 'text' => external_format_string($option->text, $context->id), 'maxanswer' => $option->maxanswer, 'userresponses' => $userresponses, 'numberofuser' => $numberofuser, 'percentageamount' => $percentageamount); } $warnings = array(); return array('options' => $options, 'warnings' => $warnings); }
} else { if (!is_enrolled($context)) { // Only people enrolled can make a choice $SESSION->wantsurl = qualified_me(); $SESSION->enrolcancel = get_local_referer(false); $coursecontext = context_course::instance($course->id); $courseshortname = format_string($course->shortname, true, array('context' => $coursecontext)); echo $OUTPUT->box_start('generalbox', 'notice'); echo '<p align="center">' . get_string('notenrolledchoose', 'choice') . '</p>'; echo $OUTPUT->container_start('continuebutton'); echo $OUTPUT->single_button(new moodle_url('/enrol/index.php?', array('id' => $course->id)), get_string('enrolme', 'core_enrol', $courseshortname)); echo $OUTPUT->container_end(); echo $OUTPUT->box_end(); } } } // print the results at the bottom of the screen if (choice_can_view_results($choice, $current, $choiceopen)) { if (!empty($choice->showunanswered)) { $choice->option[0] = get_string('notanswered', 'choice'); $choice->maxanswers[0] = 0; } $results = prepare_choice_show_results($choice, $course, $cm, $allresponses); $renderer = $PAGE->get_renderer('mod_choice'); echo $renderer->display_result($results); } else { if (!$choiceformshown) { echo $OUTPUT->box(get_string('noresultsviewable', 'choice')); } } echo $OUTPUT->footer();
echo $ug2 . "\t"; if (isset($option_text)) { echo format_string($option_text, true); } echo "\n"; } } } exit; } // Show those who haven't answered the question. if (!empty($choice->showunanswered)) { $choice->option[0] = get_string('notanswered', 'choice'); $choice->maxanswers[0] = 0; } $results = prepare_choice_show_results($choice, $course, $cm, $users); $renderer = $PAGE->get_renderer('mod_choice'); echo $renderer->display_result($results, has_capability('mod/choice:readresponses', $context)); //now give links for downloading spreadsheets. if (!empty($users) && has_capability('mod/choice:downloadresponses', $context)) { $downloadoptions = array(); $options = array(); $options["id"] = "{$cm->id}"; $options["download"] = "ods"; $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadods")); $downloadoptions[] = html_writer::tag('li', $button, array('class' => 'reportoption')); $options["download"] = "xls"; $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadexcel")); $downloadoptions[] = html_writer::tag('li', $button, array('class' => 'reportoption')); $options["download"] = "txt"; $button = $OUTPUT->single_button(new moodle_url("report.php", $options), get_string("downloadtext"));