diff --git a/docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.md b/docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.md new file mode 100644 index 0000000000..24ef0b756f --- /dev/null +++ b/docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.md @@ -0,0 +1,4 @@ + +Most quiz settings can be overridden on a per user and/or group level and you can extend this ability to your rule as well. To make your rule overridable, you must extend the `access_override_rule_base` class in your rule class definition. + +Please refer to the inline phpdocs of the [mod_quiz::access_override_rule_base](https://github.com/moodle/moodle/blob/main/mod/quiz/classes/local/access_override_rule_base.php) class for detailed descriptions of the functions and meaning. diff --git a/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.php b/docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.php similarity index 62% rename from docs/apis/plugintypes/quizaccess/_examples/rule_overridable.php rename to docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.php index 58c57ed5df..ee43629935 100644 --- a/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.php +++ b/docs/apis/plugintypes/quizaccess/_examples/access_override_rule_base.php @@ -1,15 +1,10 @@ use mod_quiz\form\edit_override_form; -use mod_quiz\local\access_rule_base; -use mod_quiz\local\rule_overridable; +use mod_quiz\local\access_override_rule_base; use MoodleQuickForm; -class quizaccess_pluginname extends access_rule_base implements rule_overridable { +class quizaccess_pluginname extends access_override_rule_base { - /** - * All of the below rule_overridable interface functions will need to be implemented. - */ - - public static function add_override_form_fields(edit_override_form $quizform, MoodleQuickForm $mform): void { + public static function add_form_fields(edit_override_form $quizform, MoodleQuickForm $mform): void { // Use the $mform to add the rule override fields... $mform->addElement( 'select', @@ -26,25 +21,13 @@ public static function add_override_form_fields(edit_override_form $quizform, Mo ); } - public static function get_override_form_section_header(): array { - // Return the label and content of the section header in an array. - return ['name' => 'pluginname', 'title' => get_string('pluginname', 'quizaccess_pluginname')]; - } - - public static function get_override_form_section_expand(edit_override_form $quizform): bool { - // Determine if rule section in override form should load expanded. - // Should typically return true if the quiz has existing rule settings. - global $DB; - return $DB->record_exists('quizaccess_pluginname', ['quiz' => $quizform->get_quiz()->id]); - } - - public static function validate_override_form_fields(array $errors, + public static function validate_form_fields(array $errors, array $data, array $files, edit_override_form $quizform): array { // Check and push to $errors array... return $errors; } - public static function save_override_settings(array $override): void { + public static function save_settings(array $override): void { // Save $override data to plugin settings table... global $DB; @@ -62,7 +45,7 @@ public static function save_override_settings(array $override): void { } } - public static function delete_override_settings($quizid, $overrides): void { + public static function delete_settings($quizid, $overrides): void { // Remove $overrides from $quiz. global $DB; $ids = array_column($overrides, 'id'); @@ -70,17 +53,17 @@ public static function delete_override_settings($quizid, $overrides): void { $DB->delete_records_select('quizaccess_pluginname_overrides', "id $insql", $inparams); } - public static function get_override_setting_keys(): array { + public static function get_settings(): array { // Return string array of all override form setting keys. return ['plgnm_setting1', 'plgnm_setting2']; } - public static function get_override_required_setting_keys(): array { + public static function get_required_settings(): array { // Return string array of override form setting keys that are required. return ['plgnm_setting1']; } - public static function get_override_settings_sql($overridetablename): array { + public static function get_settings_sql($overridetablename): array { // Return an array of selects, joins and parameters to be used to query relevant rule overrides... return [ "plgnm.setting1 plgnm_setting1, plgnm.setting2 plgnm_setting2", @@ -89,7 +72,7 @@ public static function get_override_settings_sql($overridetablename): array { ]; } - public static function add_override_table_fields($override, $fields, $values, $context): array { + public static function add_table_fields($override, $fields, $values, $context): array { // Extend the override table view by adding fields and values that display the rule's overrides. if (!empty($override->plgnm_setting1)) { $fields[] = get_string('pluginname', 'quizaccess_pluginname'); @@ -97,4 +80,12 @@ public static function add_override_table_fields($override, $fields, $values, $c } return [$fields, $values]; } + + public static function clean_form_data(array $formdata): array { + // Clean and normalise submitted values for the rule. + if (isset($formdata['plugin_enabled']) && $formdata['plugin_enabled'] === '0') { + $formdata['plugin_enabled'] = null; + } + return $formdata; + } } diff --git a/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.md b/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.md deleted file mode 100644 index 51d8c2b7f7..0000000000 --- a/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.md +++ /dev/null @@ -1,4 +0,0 @@ - -Most quiz settings can be overridden on a per user and/or group level and you can extend this ability to your rule as well. To make your rule overridable, you must implement the `rule_overridable` interface in your rule class definition. - -Please refer to the inline phpdocs of the [mod_quiz::rule_overridable interface](https://github.com/moodle/moodle/blob/main/mod/quiz/classes/local/rule_overridable.php) for detailed descriptions of the functions and meaning. diff --git a/docs/apis/plugintypes/quizaccess/index.md b/docs/apis/plugintypes/quizaccess/index.md index 8c9b33f1b1..71a8adc820 100644 --- a/docs/apis/plugintypes/quizaccess/index.md +++ b/docs/apis/plugintypes/quizaccess/index.md @@ -67,8 +67,8 @@ import RuleDescription from './_examples/rule.md'; description={RuleDescription} /> -import RuleOverridableFile from '!!raw-loader!./_examples/rule_overridable.php'; -import RuleOverridableDescription from './_examples/rule_overridable.md'; +import RuleOverridableFile from '!!raw-loader!./_examples/access_override_rule_base.php'; +import RuleOverridableDescription from './_examples/access_override_rule_base.md';