From dfcbcfc3199284b2c960a433e71cfbe0bd953c05 Mon Sep 17 00:00:00 2001 From: Willian Mano Date: Thu, 7 Jun 2018 08:36:19 -0300 Subject: [PATCH] MDL-62474 theme_boost: Fix Boost privacy provider --- theme/boost/classes/privacy/provider.php | 47 ++++++++++++++++++++---- theme/boost/lang/en/theme_boost.php | 2 + 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/theme/boost/classes/privacy/provider.php b/theme/boost/classes/privacy/provider.php index bf755b73fa0..b17ade2803a 100644 --- a/theme/boost/classes/privacy/provider.php +++ b/theme/boost/classes/privacy/provider.php @@ -24,23 +24,56 @@ namespace theme_boost\privacy; +use \core_privacy\local\request\writer; +use \core_privacy\local\metadata\collection; + defined('MOODLE_INTERNAL') || die(); /** - * The boost theme does not store any data. + * The boost theme stores a user preference data. * * @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 { +class provider implements + // This plugin has data. + \core_privacy\local\metadata\provider, + + \core_privacy\local\request\data_provider, + + // This plugin has some sitewide user preferences to export. + \core_privacy\local\request\user_preference_provider +{ + + const DRAWER_OPEN_NAV = 'drawer-open-nav'; /** - * Get the language string identifier with the component's language - * file to explain why this plugin stores no data. + * Returns meta data about this system. * - * @return string + * @param collection $itemcollection The initialised item collection to add items to. + * @return collection A listing of user data stored through this system. */ - public static function get_reason() : string { - return 'privacy:metadata'; + public static function get_metadata(collection $items) : collection { + $items->add_user_preference(self::DRAWER_OPEN_NAV, 'privacy:metadata:preference:draweropennav'); + + return $items; + } + + /** + * Store 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) { + $draweropennavpref = get_user_preferences(self::DRAWER_OPEN_NAV, null, $userid); + + if (isset($draweropennavpref)) { + writer::export_user_preference( + 'theme_boost', + self::DRAWER_OPEN_NAV, + $draweropennavpref, + get_string('privacy:request:preference:draweropennav', 'theme_boost') + ); + } } } diff --git a/theme/boost/lang/en/theme_boost.php b/theme/boost/lang/en/theme_boost.php index 2f3b9906e69..c5e6ac93097 100644 --- a/theme/boost/lang/en/theme_boost.php +++ b/theme/boost/lang/en/theme_boost.php @@ -49,3 +49,5 @@ $string['rawscss_desc'] = 'Use this field to provide SCSS or CSS code which will $string['rawscsspre'] = 'Raw initial SCSS'; $string['rawscsspre_desc'] = 'In this field you can provide initialising SCSS code, it will be injected before everything else. Most of the time you will use this setting to define variables.'; $string['region-side-pre'] = 'Right'; +$string['privacy:metadata:preference:draweropennav'] = 'Hide or show the left drawer menu nav.'; +$string['privacy:request:preference:draweropennav'] = 'Your preference for hide or show the left drawer menu nav';