From 9a4404e0711cc6c71f8e0b96179adc9e6ff688b9 Mon Sep 17 00:00:00 2001 From: Zig Tan Date: Sat, 21 Apr 2018 12:45:28 +0800 Subject: [PATCH] MDL-61995 tool_assignmentupgrade: Implemented privacy providers --- .../classes/privacy/provider.php | 73 ++++++++++++++++++ .../lang/en/tool_assignmentupgrade.php | 1 + .../assignmentupgrade/tests/privacy_test.php | 75 +++++++++++++++++++ 3 files changed, 149 insertions(+) create mode 100644 admin/tool/assignmentupgrade/classes/privacy/provider.php create mode 100644 admin/tool/assignmentupgrade/tests/privacy_test.php diff --git a/admin/tool/assignmentupgrade/classes/privacy/provider.php b/admin/tool/assignmentupgrade/classes/privacy/provider.php new file mode 100644 index 0000000000000..452cc1540b741 --- /dev/null +++ b/admin/tool/assignmentupgrade/classes/privacy/provider.php @@ -0,0 +1,73 @@ +. + +/** + * Privacy Subsystem implementation for tool_assignmentupgrade. + * + * @package tool_assignmentupgrade + * @copyright 2018 Zig Tan + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +namespace tool_assignmentupgrade\privacy; + +use core_privacy\local\metadata\collection; +use core_privacy\local\request\writer; + +defined('MOODLE_INTERNAL') || die(); + +/** + * Privacy Subsystem for tool_assignmentupgrade implementing metadata, plugin, and user_preference providers. + * + * @copyright 2018 Zig Tan + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class provider implements + \core_privacy\local\metadata\provider, + \core_privacy\local\request\user_preference_provider { + + /** + * Returns meta data about this system. + * + * @param collection $collection The initialised collection to add items to. + * @return collection A listing of user data stored through this system. + */ + public static function get_metadata(collection $collection) : collection { + $collection->add_user_preference( + 'tool_assignmentupgrade_perpage', + 'privacy:metadata:preference:perpage' + ); + return $collection; + } + + /** + * Export all user preferences for the plugin. + * + * @param int $userid The userid of the user whose data is to be exported. + */ + public static function export_user_preferences(int $userid) { + $perpage = get_user_preferences('tool_assignmentupgrade_perpage', null, $userid); + if ($perpage !== null) { + writer::export_user_preference( + 'tool_assignmentupgrade', + 'perpage', + $perpage, + get_string('privacy:metadata:preference:perpage', 'tool_assignmentupgrade') + ); + } + } + +} diff --git a/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php b/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php index 9dc8c6ece9fca..c7e7d26aadeae 100644 --- a/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php +++ b/admin/tool/assignmentupgrade/lang/en/tool_assignmentupgrade.php @@ -58,3 +58,4 @@ $string['upgradeprogress'] = 'Upgrade assignment {$a->current} of {$a->total}'; $string['upgradesingle'] = 'Upgrade single assignment'; $string['viewcourse'] = 'View the course with the converted assignment'; +$string['privacy:metadata:preference:perpage'] = 'The assignment upgrade records per page preference set for the user.'; diff --git a/admin/tool/assignmentupgrade/tests/privacy_test.php b/admin/tool/assignmentupgrade/tests/privacy_test.php new file mode 100644 index 0000000000000..d22770c8235c5 --- /dev/null +++ b/admin/tool/assignmentupgrade/tests/privacy_test.php @@ -0,0 +1,75 @@ +. + +/** + * Privacy tests for tool_assignmentupgrade. + * + * @package tool_assignmentupgrade + * @category test + * @copyright 2018 Zig Tan + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +use \core_privacy\tests\provider_testcase; +use \core_privacy\local\request\writer; +use \tool_assignmentupgrade\privacy\provider; + +/** + * Unit tests for tool_assignmentupgrade/classes/privacy/policy + * + * @copyright 2018 Zig Tan + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class tool_assignmentupgrade_privacy_testcase extends provider_testcase { + + /** + * Overriding setUp() function to always reset after tests. + */ + public function setUp() { + $this->resetAfterTest(true); + } + + /** + * Test for provider::test_export_user_preferences(). + */ + public function test_export_user_preferences() { + // Test setup. + $user = $this->getDataGenerator()->create_user(); + $this->setUser($user); + + // Add a user home page preference for the User. + set_user_preference('tool_assignmentupgrade_perpage', '100', $user); + + // Test the user preference exists. + $params = [ + 'userid' => $user->id, + 'name' => 'tool_assignmentupgrade_perpage' + ]; + + // Test the user preferences export contains 1 user preference record for the User. + provider::export_user_preferences($user->id); + $contextuser = context_user::instance($user->id); + $writer = writer::with_context($contextuser); + $this->assertTrue($writer->has_any_data()); + + $exportedpreferences = $writer->get_user_preferences('tool_assignmentupgrade'); + $this->assertCount(1, (array) $exportedpreferences); + $this->assertEquals('100', $exportedpreferences->perpage->value); + } + +}