diff --git a/data/main/components.json b/data/main/components.json
index 5506a6688..0d9917b7e 100644
--- a/data/main/components.json
+++ b/data/main/components.json
@@ -34,6 +34,7 @@
"qbank": "public/question/bank",
"qbehaviour": "public/question/behaviour",
"qformat": "public/question/format",
+ "quizaccess": "public/mod/quiz/access",
"plagiarism": "public/plagiarism",
"tool": "public/admin/tool",
"cachestore": "public/cache/stores",
diff --git a/docs/apis/plugintypes/quizaccess/_examples/override_rule.md b/docs/apis/plugintypes/quizaccess/_examples/override_rule.md
new file mode 100644
index 000000000..d3db99224
--- /dev/null
+++ b/docs/apis/plugintypes/quizaccess/_examples/override_rule.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 create the `override_rule` class extending `mod_quiz\local\access_override_rule_base`.
+
+Please refer to the inline phpdocs of the [mod_quiz::access_override_rule_base class](https://github.com/moodle/moodle/blob/main/mod/quiz/classes/local/access_override_rule_base.php) for detailed descriptions of the functions and meaning.
diff --git a/docs/apis/plugintypes/quizaccess/_examples/override_rule.php b/docs/apis/plugintypes/quizaccess/_examples/override_rule.php
new file mode 100644
index 000000000..6711fc91c
--- /dev/null
+++ b/docs/apis/plugintypes/quizaccess/_examples/override_rule.php
@@ -0,0 +1,48 @@
+use mod_quiz\local\access_override_rule_base;
+use MoodleQuickForm;
+use context_module;
+use context;
+
+class override_rule extends access_override_rule_base {
+
+ /**
+ * All of the below access_override_rule_base functions to be implemented.
+ */
+
+ public static function add_form_fields(context_module $context, int $overrideid, object $quiz, MoodleQuickForm $mform): void {
+ // Do nothing.
+ }
+
+ public static function validate_form_fields(array $errors,
+ array $data, array $files, context_module $context): array {
+ return [];
+ }
+
+ public static function save_settings(array $override): void {
+ // Do nothing.
+ }
+
+ public static function delete_settings(int $quizid, array $overrides): void {
+ // Do nothing.
+ }
+
+ public static function get_settings(): array {
+ return [];
+ }
+
+ public static function get_required_settings(): array {
+ return [];
+ }
+
+ public static function get_settings_sql(string $overridetablename): array {
+ return [];
+ }
+
+ public static function add_table_fields(object $override, array $fields, array $values, context $context): array {
+ return [];
+ }
+
+ public static function clean_form_data(array $formdata): array {
+ return $formdata;
+ }
+}
diff --git a/docs/apis/plugintypes/quizaccess/_examples/rule.php b/docs/apis/plugintypes/quizaccess/_examples/rule.php
index 3732aac8f..c4016b51a 100644
--- a/docs/apis/plugintypes/quizaccess/_examples/rule.php
+++ b/docs/apis/plugintypes/quizaccess/_examples/rule.php
@@ -1,4 +1,3 @@
-use mod_quiz\form\edit_override_form;
use mod_quiz\form\preflight_check_form;
use mod_quiz\quiz_settings;
use mod_quiz\local\access_rule_base;
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 51d8c2b7f..000000000
--- 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/_examples/rule_overridable.php b/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.php
deleted file mode 100644
index 58c57ed5d..000000000
--- a/docs/apis/plugintypes/quizaccess/_examples/rule_overridable.php
+++ /dev/null
@@ -1,100 +0,0 @@
-use mod_quiz\form\edit_override_form;
-use mod_quiz\local\access_rule_base;
-use mod_quiz\local\rule_overridable;
-use MoodleQuickForm;
-
-class quizaccess_pluginname extends access_rule_base implements rule_overridable {
-
- /**
- * 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 {
- // Use the $mform to add the rule override fields...
- $mform->addElement(
- 'select',
- 'plgn_setting1',
- get_string('plgn_setting1', 'quizaccess_pluginname'),
- ['A', 'B', 'C'],
- );
-
- $mform->addElement(
- 'select',
- 'plgn_setting2',
- get_string('plgn_setting2', 'quizaccess_pluginname'),
- ['1', '2', '3'],
- );
- }
-
- 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,
- 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 {
- // Save $override data to plugin settings table...
- global $DB;
-
- $plgnoverride = (object)[
- 'overrideid' => $override['overrideid'],
- 'setting1' => $override['plgnm_setting1'],
- 'setting2' => $override['plgnm_setting2'],
- ];
-
- if ($plgnoverrideid = $DB->get_field('quizaccess_pluginname_overrides', 'id', ['overrideid' => $override['overrideid']])) {
- $plgnoverride->id = $plgnoverrideid;
- $DB->update_record('quizaccess_pluginname_overrides', $plgnoverride);
- } else {
- $DB->insert_record('quizaccess_pluginname_overrides', $plgnoverride);
- }
- }
-
- public static function delete_override_settings($quizid, $overrides): void {
- // Remove $overrides from $quiz.
- global $DB;
- $ids = array_column($overrides, 'id');
- list($insql, $inparams) = $DB->get_in_or_equal($ids);
- $DB->delete_records_select('quizaccess_pluginname_overrides', "id $insql", $inparams);
- }
-
- public static function get_override_setting_keys(): array {
- // Return string array of all override form setting keys.
- return ['plgnm_setting1', 'plgnm_setting2'];
- }
-
- public static function get_override_required_setting_keys(): array {
- // Return string array of override form setting keys that are required.
- return ['plgnm_setting1'];
- }
-
- public static function get_override_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",
- "LEFT JOIN {quizaccess_pluginname_overrides} plgnm ON plgnm.overrideid = {$overridetablename}.id",
- [],
- ];
- }
-
- public static function add_override_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');
- $values[] = "{$override->plgnm_setting1}, {$override->plgnm_setting2}";
- }
- return [$fields, $values];
- }
-}
diff --git a/docs/apis/plugintypes/quizaccess/index.md b/docs/apis/plugintypes/quizaccess/index.md
index 8c9b33f1b..74e5bd60b 100644
--- a/docs/apis/plugintypes/quizaccess/index.md
+++ b/docs/apis/plugintypes/quizaccess/index.md
@@ -1,5 +1,5 @@
---
-title: Quiz access rule sub-plugins
+title: Quiz access rules
tags:
- Quiz
- Access
@@ -11,7 +11,7 @@ tags:
import { ComponentFileSummary } from '../../../_utils';
-Quiz access rule sub-plugins extend the ability to add conditions a user must meet to attempt a given quiz.
+Quiz access rules give the ability to add conditions a user must meet to attempt a given quiz.
The following rules are readily available as part of Moodle core:
@@ -67,20 +67,22 @@ import RuleDescription from './_examples/rule.md';
description={RuleDescription}
/>
-import RuleOverridableFile from '!!raw-loader!./_examples/rule_overridable.php';
-import RuleOverridableDescription from './_examples/rule_overridable.md';
+### classes/override_rule.php
+
+import OverrideRuleFile from '!!raw-loader!./_examples/override_rule.php';
+import OverrideRuleDescription from './_examples/override_rule.md';
:::info
-Implementing `rule_overridable` is not required but can enhance the usability of the rule.
+Implementing `override_rule` is not required but can enhance the usability of the access rule.
:::
diff --git a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.md b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.md
new file mode 100644
index 000000000..d3db99224
--- /dev/null
+++ b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.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 create the `override_rule` class extending `mod_quiz\local\access_override_rule_base`.
+
+Please refer to the inline phpdocs of the [mod_quiz::access_override_rule_base class](https://github.com/moodle/moodle/blob/main/mod/quiz/classes/local/access_override_rule_base.php) for detailed descriptions of the functions and meaning.
diff --git a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.php b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.php
new file mode 100644
index 000000000..cb8c5f716
--- /dev/null
+++ b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/override_rule.php
@@ -0,0 +1,49 @@
+use mod_quiz\form\edit_override_form;
+use mod_quiz\local\access_override_rule_base;
+use MoodleQuickForm;
+use context_module;
+use context;
+
+class override_rule extends access_override_rule_base {
+
+ /**
+ * All of the below access_override_rule_base be implemented below.
+ */
+
+ public static function add_form_fields(context_module $context, int $overrideid, object $quiz, MoodleQuickForm $mform): void {
+ // Do nothing.
+ }
+
+ public static function validate_form_fields(array $errors,
+ array $data, array $files, edit_override_form $quizform): array {
+ return [];
+ }
+
+ public static function save_settings(array $override): void {
+ // Do nothing.
+ }
+
+ public static function delete_settings(int $quizid, array $overrides): void {
+ // Do nothing.
+ }
+
+ public static function get_settings(): array {
+ return [];
+ }
+
+ public static function get_required_settings(): array {
+ return [];
+ }
+
+ public static function get_settings_sql(string $overridetablename): array {
+ return [];
+ }
+
+ public static function add_table_fields(object $override, array $fields, array $values, context $context): array {
+ return [];
+ }
+
+ public static function clean_form_data(array $formdata): array {
+ return $formdata;
+ }
+}
diff --git a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule.php b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule.php
index 3732aac8f..c4016b51a 100644
--- a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule.php
+++ b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule.php
@@ -1,4 +1,3 @@
-use mod_quiz\form\edit_override_form;
use mod_quiz\form\preflight_check_form;
use mod_quiz\quiz_settings;
use mod_quiz\local\access_rule_base;
diff --git a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule_overridable.md b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule_overridable.md
deleted file mode 100644
index 51d8c2b7f..000000000
--- a/versioned_docs/version-5.0/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/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule_overridable.php b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule_overridable.php
deleted file mode 100644
index 58c57ed5d..000000000
--- a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/_examples/rule_overridable.php
+++ /dev/null
@@ -1,100 +0,0 @@
-use mod_quiz\form\edit_override_form;
-use mod_quiz\local\access_rule_base;
-use mod_quiz\local\rule_overridable;
-use MoodleQuickForm;
-
-class quizaccess_pluginname extends access_rule_base implements rule_overridable {
-
- /**
- * 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 {
- // Use the $mform to add the rule override fields...
- $mform->addElement(
- 'select',
- 'plgn_setting1',
- get_string('plgn_setting1', 'quizaccess_pluginname'),
- ['A', 'B', 'C'],
- );
-
- $mform->addElement(
- 'select',
- 'plgn_setting2',
- get_string('plgn_setting2', 'quizaccess_pluginname'),
- ['1', '2', '3'],
- );
- }
-
- 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,
- 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 {
- // Save $override data to plugin settings table...
- global $DB;
-
- $plgnoverride = (object)[
- 'overrideid' => $override['overrideid'],
- 'setting1' => $override['plgnm_setting1'],
- 'setting2' => $override['plgnm_setting2'],
- ];
-
- if ($plgnoverrideid = $DB->get_field('quizaccess_pluginname_overrides', 'id', ['overrideid' => $override['overrideid']])) {
- $plgnoverride->id = $plgnoverrideid;
- $DB->update_record('quizaccess_pluginname_overrides', $plgnoverride);
- } else {
- $DB->insert_record('quizaccess_pluginname_overrides', $plgnoverride);
- }
- }
-
- public static function delete_override_settings($quizid, $overrides): void {
- // Remove $overrides from $quiz.
- global $DB;
- $ids = array_column($overrides, 'id');
- list($insql, $inparams) = $DB->get_in_or_equal($ids);
- $DB->delete_records_select('quizaccess_pluginname_overrides', "id $insql", $inparams);
- }
-
- public static function get_override_setting_keys(): array {
- // Return string array of all override form setting keys.
- return ['plgnm_setting1', 'plgnm_setting2'];
- }
-
- public static function get_override_required_setting_keys(): array {
- // Return string array of override form setting keys that are required.
- return ['plgnm_setting1'];
- }
-
- public static function get_override_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",
- "LEFT JOIN {quizaccess_pluginname_overrides} plgnm ON plgnm.overrideid = {$overridetablename}.id",
- [],
- ];
- }
-
- public static function add_override_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');
- $values[] = "{$override->plgnm_setting1}, {$override->plgnm_setting2}";
- }
- return [$fields, $values];
- }
-}
diff --git a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/index.md b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/index.md
index 8c9b33f1b..74e5bd60b 100644
--- a/versioned_docs/version-5.0/apis/plugintypes/quizaccess/index.md
+++ b/versioned_docs/version-5.0/apis/plugintypes/quizaccess/index.md
@@ -1,5 +1,5 @@
---
-title: Quiz access rule sub-plugins
+title: Quiz access rules
tags:
- Quiz
- Access
@@ -11,7 +11,7 @@ tags:
import { ComponentFileSummary } from '../../../_utils';
-Quiz access rule sub-plugins extend the ability to add conditions a user must meet to attempt a given quiz.
+Quiz access rules give the ability to add conditions a user must meet to attempt a given quiz.
The following rules are readily available as part of Moodle core:
@@ -67,20 +67,22 @@ import RuleDescription from './_examples/rule.md';
description={RuleDescription}
/>
-import RuleOverridableFile from '!!raw-loader!./_examples/rule_overridable.php';
-import RuleOverridableDescription from './_examples/rule_overridable.md';
+### classes/override_rule.php
+
+import OverrideRuleFile from '!!raw-loader!./_examples/override_rule.php';
+import OverrideRuleDescription from './_examples/override_rule.md';
:::info
-Implementing `rule_overridable` is not required but can enhance the usability of the rule.
+Implementing `override_rule` is not required but can enhance the usability of the access rule.
:::