From fa9eba7d8476aa35a455b0d43d55fd39270f76e0 Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Sat, 7 Apr 2018 14:02:38 +0800 Subject: [PATCH] MDL-61407 question: Add null_writer for all behaviours Behaviours do not store any personal data. Any contrib behaviour which does store personal data should utilise the standard export interfaces as this subsystem will not call them directly. --- .../adaptive/classes/privacy/provider.php | 46 +++++++++++++++++++ .../adaptive/lang/en/qbehaviour_adaptive.php | 1 + .../classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_adaptivenopenalty.php | 1 + .../deferredcbm/classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_deferredcbm.php | 1 + .../classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_deferredfeedback.php | 1 + .../immediatecbm/classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_immediatecbm.php | 1 + .../classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_immediatefeedback.php | 1 + .../classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_informationitem.php | 3 +- .../interactive/classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_interactive.php | 1 + .../classes/privacy/provider.php | 46 +++++++++++++++++++ .../en/qbehaviour_interactivecountback.php | 1 + .../manualgraded/classes/privacy/provider.php | 46 +++++++++++++++++++ .../lang/en/qbehaviour_manualgraded.php | 1 + .../missing/classes/privacy/provider.php | 46 +++++++++++++++++++ .../missing/lang/en/qbehaviour_missing.php | 1 + 22 files changed, 518 insertions(+), 1 deletion(-) create mode 100644 question/behaviour/adaptive/classes/privacy/provider.php create mode 100644 question/behaviour/adaptivenopenalty/classes/privacy/provider.php create mode 100644 question/behaviour/deferredcbm/classes/privacy/provider.php create mode 100644 question/behaviour/deferredfeedback/classes/privacy/provider.php create mode 100644 question/behaviour/immediatecbm/classes/privacy/provider.php create mode 100644 question/behaviour/immediatefeedback/classes/privacy/provider.php create mode 100644 question/behaviour/informationitem/classes/privacy/provider.php create mode 100644 question/behaviour/interactive/classes/privacy/provider.php create mode 100644 question/behaviour/interactivecountback/classes/privacy/provider.php create mode 100644 question/behaviour/manualgraded/classes/privacy/provider.php create mode 100644 question/behaviour/missing/classes/privacy/provider.php diff --git a/question/behaviour/adaptive/classes/privacy/provider.php b/question/behaviour/adaptive/classes/privacy/provider.php new file mode 100644 index 00000000000..8153fb5af93 --- /dev/null +++ b/question/behaviour/adaptive/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_adaptive. + * + * @package qbehaviour_adaptive + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_adaptive\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_adaptive implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/adaptive/lang/en/qbehaviour_adaptive.php b/question/behaviour/adaptive/lang/en/qbehaviour_adaptive.php index 2dc2e53bc66..fa92c04e96c 100644 --- a/question/behaviour/adaptive/lang/en/qbehaviour_adaptive.php +++ b/question/behaviour/adaptive/lang/en/qbehaviour_adaptive.php @@ -32,6 +32,7 @@ $string['gradingdetailswithpenalty'] = 'Marks for this submission: {$a->raw}/{$a $string['gradingdetailswithtotalpenalty'] = 'Marks for this submission: {$a->raw}/{$a->max}. This submission attracted a penalty of {$a->penalty}. Total penalties so far: {$a->totalpenalty}.'; $string['notcomplete'] = 'Not complete'; $string['pluginname'] = 'Adaptive mode'; +$string['privacy:metadata'] = 'The Adaptive mode question behaviour plugin does not store any personal data.'; // Old strings these are currently only used in the unit tests, to verify that the new // strings give the same results as the old strings. diff --git a/question/behaviour/adaptivenopenalty/classes/privacy/provider.php b/question/behaviour/adaptivenopenalty/classes/privacy/provider.php new file mode 100644 index 00000000000..d12c6b86604 --- /dev/null +++ b/question/behaviour/adaptivenopenalty/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_adaptivenopenalty. + * + * @package qbehaviour_adaptivenopenalty + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_adaptivenopenalty\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_adaptivenopenalty implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/adaptivenopenalty/lang/en/qbehaviour_adaptivenopenalty.php b/question/behaviour/adaptivenopenalty/lang/en/qbehaviour_adaptivenopenalty.php index d15c66830e5..733ddbcfa02 100644 --- a/question/behaviour/adaptivenopenalty/lang/en/qbehaviour_adaptivenopenalty.php +++ b/question/behaviour/adaptivenopenalty/lang/en/qbehaviour_adaptivenopenalty.php @@ -24,3 +24,4 @@ */ $string['pluginname'] = 'Adaptive mode (no penalties)'; +$string['privacy:metadata'] = 'The Adaptive mode (no penalties) question behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/deferredcbm/classes/privacy/provider.php b/question/behaviour/deferredcbm/classes/privacy/provider.php new file mode 100644 index 00000000000..e5f58726703 --- /dev/null +++ b/question/behaviour/deferredcbm/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_deferredcbm. + * + * @package qbehaviour_deferredcbm + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_deferredcbm\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_deferredcbm implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/deferredcbm/lang/en/qbehaviour_deferredcbm.php b/question/behaviour/deferredcbm/lang/en/qbehaviour_deferredcbm.php index 47a4a9760d6..a2d691f157d 100644 --- a/question/behaviour/deferredcbm/lang/en/qbehaviour_deferredcbm.php +++ b/question/behaviour/deferredcbm/lang/en/qbehaviour_deferredcbm.php @@ -66,6 +66,7 @@ $string['howcertainareyou'] = 'Certainty{$a->help}: {$a->choices}'; $string['noquestions'] = 'No responses'; $string['overconfident'] = 'over-confident'; $string['pluginname'] = 'Deferred feedback with CBM'; +$string['privacy:metadata'] = 'The Deferred feedback with CBM question behaviour plugin does not store any personal data.'; $string['slightlyoverconfident'] = 'a bit over-confident'; $string['slightlyunderconfident'] = 'a bit under-confident'; $string['underconfident'] = 'under-confident'; diff --git a/question/behaviour/deferredfeedback/classes/privacy/provider.php b/question/behaviour/deferredfeedback/classes/privacy/provider.php new file mode 100644 index 00000000000..2e0ae870b53 --- /dev/null +++ b/question/behaviour/deferredfeedback/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_deferredfeedback. + * + * @package qbehaviour_deferredfeedback + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_deferredfeedback\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_deferredfeedback implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/deferredfeedback/lang/en/qbehaviour_deferredfeedback.php b/question/behaviour/deferredfeedback/lang/en/qbehaviour_deferredfeedback.php index 61be24286d3..266cd8b62c0 100644 --- a/question/behaviour/deferredfeedback/lang/en/qbehaviour_deferredfeedback.php +++ b/question/behaviour/deferredfeedback/lang/en/qbehaviour_deferredfeedback.php @@ -24,3 +24,4 @@ */ $string['pluginname'] = 'Deferred feedback'; +$string['privacy:metadata'] = 'The Deferred feedback behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/immediatecbm/classes/privacy/provider.php b/question/behaviour/immediatecbm/classes/privacy/provider.php new file mode 100644 index 00000000000..7373ed5971a --- /dev/null +++ b/question/behaviour/immediatecbm/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_immediatecbm. + * + * @package qbehaviour_immediatecbm + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_immediatecbm\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_immediatecbm implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/immediatecbm/lang/en/qbehaviour_immediatecbm.php b/question/behaviour/immediatecbm/lang/en/qbehaviour_immediatecbm.php index cc0fe79fccf..f09a1d2595d 100644 --- a/question/behaviour/immediatecbm/lang/en/qbehaviour_immediatecbm.php +++ b/question/behaviour/immediatecbm/lang/en/qbehaviour_immediatecbm.php @@ -25,3 +25,4 @@ $string['pleaseselectacertainty'] = 'Please select a certainty.'; $string['pluginname'] = 'Immediate feedback with CBM'; +$string['privacy:metadata'] = 'The Immediate feedback with CBM question behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/immediatefeedback/classes/privacy/provider.php b/question/behaviour/immediatefeedback/classes/privacy/provider.php new file mode 100644 index 00000000000..fdf380bb632 --- /dev/null +++ b/question/behaviour/immediatefeedback/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_immediatefeedback. + * + * @package qbehaviour_immediatefeedback + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_immediatefeedback\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_immediatefeedback implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/immediatefeedback/lang/en/qbehaviour_immediatefeedback.php b/question/behaviour/immediatefeedback/lang/en/qbehaviour_immediatefeedback.php index 84e36886f91..55abc46819b 100644 --- a/question/behaviour/immediatefeedback/lang/en/qbehaviour_immediatefeedback.php +++ b/question/behaviour/immediatefeedback/lang/en/qbehaviour_immediatefeedback.php @@ -25,3 +25,4 @@ $string['notcomplete'] = 'Not complete'; $string['pluginname'] = 'Immediate feedback'; +$string['privacy:metadata'] = 'The Immediate feedback question behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/informationitem/classes/privacy/provider.php b/question/behaviour/informationitem/classes/privacy/provider.php new file mode 100644 index 00000000000..97f9c10c59c --- /dev/null +++ b/question/behaviour/informationitem/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_informationitem. + * + * @package qbehaviour_informationitem + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_informationitem\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_informationitem implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/informationitem/lang/en/qbehaviour_informationitem.php b/question/behaviour/informationitem/lang/en/qbehaviour_informationitem.php index f0869b86c50..df79792f184 100644 --- a/question/behaviour/informationitem/lang/en/qbehaviour_informationitem.php +++ b/question/behaviour/informationitem/lang/en/qbehaviour_informationitem.php @@ -24,4 +24,5 @@ */ $string['pluginname'] = 'Behaviour for information items'; -$string['seen'] = 'Seen'; \ No newline at end of file +$string['privacy:metadata'] = 'The Information items question behaviour plugin does not store any personal data.'; +$string['seen'] = 'Seen'; diff --git a/question/behaviour/interactive/classes/privacy/provider.php b/question/behaviour/interactive/classes/privacy/provider.php new file mode 100644 index 00000000000..7608ec5e575 --- /dev/null +++ b/question/behaviour/interactive/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_interactive. + * + * @package qbehaviour_interactive + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_interactive\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_interactive implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/interactive/lang/en/qbehaviour_interactive.php b/question/behaviour/interactive/lang/en/qbehaviour_interactive.php index 8a4ebf63246..be53c41798d 100644 --- a/question/behaviour/interactive/lang/en/qbehaviour_interactive.php +++ b/question/behaviour/interactive/lang/en/qbehaviour_interactive.php @@ -24,5 +24,6 @@ */ $string['pluginname'] = 'Interactive with multiple tries'; +$string['privacy:metadata'] = 'The Interactive with multiple tries question behaviour plugin does not store any personal data.'; $string['triesremaining'] = 'Tries remaining: {$a}'; $string['tryagain'] = 'Try again'; diff --git a/question/behaviour/interactivecountback/classes/privacy/provider.php b/question/behaviour/interactivecountback/classes/privacy/provider.php new file mode 100644 index 00000000000..698d048dcc6 --- /dev/null +++ b/question/behaviour/interactivecountback/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_interactivecountback. + * + * @package qbehaviour_interactivecountback + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_interactivecountback\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_interactivecountback implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/interactivecountback/lang/en/qbehaviour_interactivecountback.php b/question/behaviour/interactivecountback/lang/en/qbehaviour_interactivecountback.php index c02023e17bf..35cd3eef046 100644 --- a/question/behaviour/interactivecountback/lang/en/qbehaviour_interactivecountback.php +++ b/question/behaviour/interactivecountback/lang/en/qbehaviour_interactivecountback.php @@ -24,3 +24,4 @@ */ $string['pluginname'] = 'Interactive with multiple tries (credit for earlier tries)'; +$string['privacy:metadata'] = 'The Interactive with multiple tries (credit for earlier tries) question behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/manualgraded/classes/privacy/provider.php b/question/behaviour/manualgraded/classes/privacy/provider.php new file mode 100644 index 00000000000..dfcaf51d5d4 --- /dev/null +++ b/question/behaviour/manualgraded/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_manualgraded. + * + * @package qbehaviour_manualgraded + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_manualgraded\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_manualgraded implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/manualgraded/lang/en/qbehaviour_manualgraded.php b/question/behaviour/manualgraded/lang/en/qbehaviour_manualgraded.php index 5ff907a5927..c9bc6b2eeb9 100644 --- a/question/behaviour/manualgraded/lang/en/qbehaviour_manualgraded.php +++ b/question/behaviour/manualgraded/lang/en/qbehaviour_manualgraded.php @@ -24,3 +24,4 @@ */ $string['pluginname'] = 'Manually graded'; +$string['privacy:metadata'] = 'The Manually graded question behaviour plugin does not store any personal data.'; diff --git a/question/behaviour/missing/classes/privacy/provider.php b/question/behaviour/missing/classes/privacy/provider.php new file mode 100644 index 00000000000..d58f8304730 --- /dev/null +++ b/question/behaviour/missing/classes/privacy/provider.php @@ -0,0 +1,46 @@ +. + +/** + * Privacy Subsystem implementation for qbehaviour_missing. + * + * @package qbehaviour_missing + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace qbehaviour_missing\privacy; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for qbehaviour_missing implementing null_provider. + * + * @copyright 2018 Andrew Nicols + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements \core_privacy\local\metadata\null_provider { + + /** + * Get the language string identifier with the component's language + * file to explain why this plugin stores no data. + * + * @return string + */ + public static function get_reason() : string { + return 'privacy:metadata'; + } +} diff --git a/question/behaviour/missing/lang/en/qbehaviour_missing.php b/question/behaviour/missing/lang/en/qbehaviour_missing.php index a7795b0dfdf..bca723f726e 100644 --- a/question/behaviour/missing/lang/en/qbehaviour_missing.php +++ b/question/behaviour/missing/lang/en/qbehaviour_missing.php @@ -25,3 +25,4 @@ $string['pluginname'] = 'Missing behaviour'; $string['questionusedunknownmodel'] = 'This question was attempted with a behaviour that is not currently available. The question is being displayed as well as possible, but some parts may be missing or wrong.'; +$string['privacy:metadata'] = 'The Missing question behaviour plugin does not store any personal data.';