Differences Between: [Versions 310 and 402] [Versions 310 and 403]
Base class for rules that restrict the ability to attempt a quiz.
Copyright: | 2011 The Open University |
License: | http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
File Size: | 336 lines (13 kb) |
Included or required: | 0 times |
Referenced: | 6 times |
Includes or requires: | 0 files |
quiz_access_rule_base:: (24 methods):
__construct()
make()
prevent_new_attempt()
prevent_access()
is_preflight_check_required()
add_preflight_check_form_fields()
validate_preflight_check()
notify_preflight_check_passed()
current_attempt_finished()
description()
is_finished()
end_time()
time_left_display()
attempt_must_be_in_popup()
get_popup_options()
setup_attempt_page()
get_superceded_rules()
add_settings_form_fields()
validate_settings_form_fields()
get_browser_security_choices()
save_settings()
delete_settings()
get_settings_sql()
get_extra_settings()
Class: quiz_access_rule_base - X-Ref
A base class that defines the interface for the various quiz access rules.__construct($quizobj, $timenow) X-Ref |
Create an instance of this rule for a particular quiz. param: quiz $quizobj information about the quiz in question. param: int $timenow the time that should be considered as 'now'. |
make(quiz $quizobj, $timenow, $canignoretimelimits) X-Ref |
Return an appropriately configured instance of this rule, if it is applicable to the given quiz, otherwise return null. param: quiz $quizobj information about the quiz in question. param: int $timenow the time that should be considered as 'now'. param: bool $canignoretimelimits whether the current user is exempt from return: quiz_access_rule_base|null the rule, if applicable, else null. |
prevent_new_attempt($numprevattempts, $lastattempt) X-Ref |
Whether or not a user should be allowed to start a new attempt at this quiz now. param: int $numattempts the number of previous attempts this user has made. param: object $lastattempt information about the user's last completed attempt. return: string false if access should be allowed, a message explaining the |
prevent_access() X-Ref |
Whether the user should be blocked from starting a new attempt or continuing an attempt now. return: string false if access should be allowed, a message explaining the |
is_preflight_check_required($attemptid) X-Ref |
param: int|null $attemptid the id of the current attempt, if there is one, return: bool whether a check is required before the user starts/continues |
add_preflight_check_form_fields(mod_quiz_preflight_check_form $quizform,MoodleQuickForm $mform, $attemptid) X-Ref |
Add any field you want to pre-flight check form. You should only do something here if {@link is_preflight_check_required()} returned true. param: mod_quiz_preflight_check_form $quizform the form being built. param: MoodleQuickForm $mform The wrapped MoodleQuickForm. param: int|null $attemptid the id of the current attempt, if there is one, |
validate_preflight_check($data, $files, $errors, $attemptid) X-Ref |
Validate the pre-flight check form submission. You should only do something here if {@link is_preflight_check_required()} returned true. If the form validates, the user will be allowed to continue. param: array $data the submitted form data. param: array $files any files in the submission. param: array $errors the list of validation errors that is being built up. param: int|null $attemptid the id of the current attempt, if there is one, return: array the update $errors array; |
notify_preflight_check_passed($attemptid) X-Ref |
The pre-flight check has passed. This is a chance to record that fact in some way. param: int|null $attemptid the id of the current attempt, if there is one, |
current_attempt_finished() X-Ref |
This is called when the current attempt at the quiz is finished. This is used, for example by the password rule, to clear the flag in the session. |
description() X-Ref |
Information, such as might be shown on the quiz view page, relating to this restriction. There is no obligation to return anything. If it is not appropriate to tell students about this rule, then just return ''. return: mixed a message, or array of messages, explaining the restriction |
is_finished($numprevattempts, $lastattempt) X-Ref |
If this rule can determine that this user will never be allowed another attempt at this quiz, then return true. This is used so we can know whether to display a final grade on the view page. This will only be called if there is not a currently active attempt for this user. param: int $numattempts the number of previous attempts this user has made. param: object $lastattempt information about the user's last completed attempt. return: bool true if this rule means that this user will never be allowed another |
end_time($attempt) X-Ref |
If, because of this rule, the user has to finish their attempt by a certain time, you should override this method to return the attempt end time. param: object $attempt the current attempt return: mixed the attempt close time, or false if there is no close time. |
time_left_display($attempt, $timenow) X-Ref |
If the user should be shown a different amount of time than $timenow - $this->end_time(), then override this method. This is useful if the time remaining is large enough to be omitted. param: object $attempt the current attempt param: int $timenow the time now. We don't use $this->timenow, so we can return: mixed the time left in seconds (can be negative) or false if there is no limit. |
attempt_must_be_in_popup() X-Ref |
return: boolean whether this rule requires that the attemp (and review) |
get_popup_options() X-Ref |
return: array any options that are required for showing the attempt page |
setup_attempt_page($page) X-Ref |
Sets up the attempt (review or summary) page with any special extra properties required by this rule. securewindow rule is an example of where this is used. param: moodle_page $page the page object to initialise. |
get_superceded_rules() X-Ref |
It is possible for one rule to override other rules. The aim is that third-party rules should be able to replace sandard rules if they want. See, for example MDL-13592. return: array plugin names of other rules that this one replaces. |
add_settings_form_fields(mod_quiz_mod_form $quizform, MoodleQuickForm $mform) X-Ref |
Add any fields that this rule requires to the quiz settings form. This method is called from {@link mod_quiz_mod_form::definition()}, while the security seciton is being built. param: mod_quiz_mod_form $quizform the quiz settings form that is being built. param: MoodleQuickForm $mform the wrapped MoodleQuickForm. |
validate_settings_form_fields(array $errors,array $data, $files, mod_quiz_mod_form $quizform) X-Ref |
Validate the data from any form fields added using {@link add_settings_form_fields()}. param: array $errors the errors found so far. param: array $data the submitted form data. param: array $files information about any uploaded files. param: mod_quiz_mod_form $quizform the quiz form object. return: array $errors the updated $errors array. |
get_browser_security_choices() X-Ref |
return: array key => lang string any choices to add to the quiz Browser |
save_settings($quiz) X-Ref |
Save any submitted settings when the quiz settings form is submitted. This is called from {@link quiz_after_add_or_update()} in lib.php. param: object $quiz the data from the quiz form, including $quiz->id |
delete_settings($quiz) X-Ref |
Delete any rule-specific settings when the quiz is deleted. This is called from {@link quiz_delete_instance()} in lib.php. param: object $quiz the data from the database, including $quiz->id |
get_settings_sql($quizid) X-Ref |
Return the bits of SQL needed to load all the settings from all the access plugins in one DB query. The easiest way to understand what you need to do here is probalby to read the code of {@link quiz_access_manager::load_settings()}. If you have some settings that cannot be loaded in this way, then you can use the {@link get_extra_settings()} method instead, but that has performance implications. param: int $quizid the id of the quiz we are loading settings for. This return: array with three elements: |
get_extra_settings($quizid) X-Ref |
You can use this method to load any extra settings your plugin has that cannot be loaded efficiently with get_settings_sql(). param: int $quizid the quiz id. return: array setting value name => value. The value names should all |