/** * Return access information for a given quiz. * * @param int $quizid quiz instance id * @return array of warnings and the access information * @since Moodle 3.1 * @throws moodle_quiz_exception */ public static function get_quiz_access_information($quizid) { global $DB, $USER; $warnings = array(); $params = array('quizid' => $quizid); $params = self::validate_parameters(self::get_quiz_access_information_parameters(), $params); list($quiz, $course, $cm, $context) = self::validate_quiz($params['quizid']); $result = array(); // Capabilities first. $result['canattempt'] = has_capability('mod/quiz:attempt', $context); $result['canmanage'] = has_capability('mod/quiz:manage', $context); $result['canpreview'] = has_capability('mod/quiz:preview', $context); $result['canreviewmyattempts'] = has_capability('mod/quiz:reviewmyattempts', $context); $result['canviewreports'] = has_capability('mod/quiz:viewreports', $context); // Access manager now. $quizobj = quiz::create($cm->instance, $USER->id); $ignoretimelimits = has_capability('mod/quiz:ignoretimelimits', $context, null, false); $timenow = time(); $accessmanager = new quiz_access_manager($quizobj, $timenow, $ignoretimelimits); $result['accessrules'] = $accessmanager->describe_rules(); $result['activerulenames'] = $accessmanager->get_active_rule_names(); $result['preventaccessreasons'] = $accessmanager->prevent_access(); $result['warnings'] = $warnings; return $result; }
if ($PAGE->user_allowed_editing() && !empty($CFG->showblocksonmodpages)) { $buttons .= '<td><form ' . $CFG->frametarget . ' method="get" action="view.php"><div>' . '<input type="hidden" name="id" value="' . $cm->id . '" />' . '<input type="hidden" name="edit" value="' . ($PAGE->user_is_editing() ? 'off' : 'on') . '" />' . '<input type="submit" value="' . get_string($PAGE->user_is_editing() ? 'blockseditoff' : 'blocksediton') . '" /></div></form></td>'; } $buttons .= '</tr></table>'; $navigation = build_navigation(array(), $cm); print_header($title, $course->fullname, $navigation, '', '', true, $buttons, navmenu($course, $cm), false, $bodytags); /// Print heading and tabs (if there is more than one). $currenttab = 'info'; include 'tabs.php'; /// Print quiz name and description echo $OUTPUT->heading(format_string($quiz->name)); if (trim(strip_tags($quiz->intro))) { echo $OUTPUT->box(format_module_intro('quiz', $quiz, $cm->id), 'generalbox', 'intro'); } /// Display information about this quiz. $messages = $accessmanager->describe_rules(); if ($quiz->attempts != 1) { $messages[] = get_string('gradingmethod', 'quiz', quiz_get_grading_option_name($quiz->grademethod)); } echo $OUTPUT->box_start('quizinfo'); $accessmanager->print_messages($messages); echo $OUTPUT->box_end(); /// Show number of attempts summary to those who can view reports. if (has_capability('mod/quiz:viewreports', $context)) { if ($strattemptnum = quiz_num_attempt_summary($quiz, $cm)) { echo '<div class="quizattemptcounts"><a href="report.php?mode=overview&id=' . $cm->id . '">' . $strattemptnum . "</a></div>\n"; } } /// Guests can't do a quiz, so offer them a choice of logging in or going back. if (isguestuser()) { echo $OUTPUT->confirm('<p>' . get_string('guestsno', 'quiz') . "</p>\n\n<p>" . get_string('liketologin') . "</p>\n", get_login_url(), get_referer(false));