MDL-62474 theme_boost: Update to provider and unit test.
[moodle.git] / theme / boost / classes / privacy / provider.php
CommitLineData
0984abda
AN
1<?php
2// This file is part of Moodle - http://moodle.org/
3//
4// Moodle is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// Moodle is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
16
17/**
18 * Privacy Subsystem implementation for theme_boost.
19 *
20 * @package theme_boost
21 * @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23 */
24
25namespace theme_boost\privacy;
26
dfcbcfc3
WM
27use \core_privacy\local\metadata\collection;
28
0984abda
AN
29defined('MOODLE_INTERNAL') || die();
30
31/**
dfcbcfc3 32 * The boost theme stores a user preference data.
0984abda
AN
33 *
34 * @copyright 2018 Andrew Nicols <andrew@nicols.co.uk>
35 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
36 */
dfcbcfc3
WM
37class provider implements
38 // This plugin has data.
39 \core_privacy\local\metadata\provider,
dfcbcfc3 40 // This plugin has some sitewide user preferences to export.
f43ed74c 41 \core_privacy\local\request\user_preference_provider {
dfcbcfc3 42
f43ed74c 43 /** The user preference for the navigation drawer. */
dfcbcfc3 44 const DRAWER_OPEN_NAV = 'drawer-open-nav';
0984abda
AN
45
46 /**
dfcbcfc3 47 * Returns meta data about this system.
0984abda 48 *
f43ed74c
AG
49 * @param collection $items The initialised item collection to add items to.
50 * @return collection A listing of user data stored through this system.
0984abda 51 */
dfcbcfc3
WM
52 public static function get_metadata(collection $items) : collection {
53 $items->add_user_preference(self::DRAWER_OPEN_NAV, 'privacy:metadata:preference:draweropennav');
dfcbcfc3
WM
54 return $items;
55 }
56
57 /**
58 * Store all user preferences for the plugin.
59 *
60 * @param int $userid The userid of the user whose data is to be exported.
61 */
62 public static function export_user_preferences(int $userid) {
63 $draweropennavpref = get_user_preferences(self::DRAWER_OPEN_NAV, null, $userid);
64
65 if (isset($draweropennavpref)) {
f43ed74c
AG
66 $preferencestring = get_string('privacy:drawernavclosed', 'theme_boost');
67 if ($draweropennavpref == 'true') {
68 $preferencestring = get_string('privacy:drawernavopen', 'theme_boost');
69 }
70 \core_privacy\local\request\writer::export_user_preference(
dfcbcfc3
WM
71 'theme_boost',
72 self::DRAWER_OPEN_NAV,
73 $draweropennavpref,
f43ed74c 74 $preferencestring
dfcbcfc3
WM
75 );
76 }
0984abda
AN
77 }
78}