Skip to content
Snippets Groups Projects
Commit c003768e authored by Alexander Bias's avatar Alexander Bias
Browse files

Implement Privacy API

parent 1c8bc778
Branches
Tags v3.7-r1
No related merge requests found
......@@ -4,6 +4,10 @@ moodle-block_course_overview_campus
Changes
-------
### Unreleased
* 2018-05-16 - Implement Privacy API.
### v3.4-r1
* 2018-03-30 - Check compatibility for Moodle 3.4, no functionality change.
......
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Block "course overview (campus)" - Privacy provider
*
* @package block_course_overview_campus
* @copyright 2018 Alexander Bias, Ulm University <alexander.bias@uni-ulm.de>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
namespace block_course_overview_campus\privacy;
use \core_privacy\local\request\writer;
use \core_privacy\local\metadata\collection;
use \core_privacy\local\request\transform;
defined('MOODLE_INTERNAL') || die();
/**
* Privacy Subsystem implementing provider.
*
* @package block_course_overview_campus
* @copyright 2018 Alexander Bias, Ulm University <alexander.bias@uni-ulm.de>
* @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 item 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('block_course_overview_campus-selectedterm',
'privacy:metadata:preference:selectedterm');
$collection->add_user_preference('block_course_overview_campus-selectedteacher',
'privacy:metadata:preference:selectedteacher');
$collection->add_user_preference('block_course_overview_campus-selectedcategory',
'privacy:metadata:preference:selectedcategory');
$collection->add_user_preference('block_course_overview_campus-selectedtoplevelcategory',
'privacy:metadata:preference:selectedtoplevelcategory');
$collection->add_user_preference('block_course_overview_campus-hidecourse-',
'privacy:metadata:preference:hidecourse');
$collection->add_user_preference('block_course_overview_campus-hidenews-',
'privacy:metadata:preference:hidenews');
$collection->add_user_preference('local_boostcoc-notshowncourses',
'privacy:metadata:preference:local_boostcoc-notshowncourses');
$collection->add_user_preference('local_boostcoc-activefilters',
'privacy:metadata:preference:local_boostcoc-activefilters');
return $collection;
}
/**
* 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) {
$preferences = get_user_preferences();
foreach ($preferences as $name => $value) {
$descriptionidentifier = null;
// User preferences for filters.
if (strpos($name, 'block_course_overview_campus-selected') === 0) {
if ($name == 'block_course_overview_campus-selectedterm') {
$descriptionidentifier = 'privacy:request:preference:selectedterm';
} else if ($name == 'block_course_overview_campus-selectedteacher') {
$descriptionidentifier = 'privacy:request:preference:selectedteacher';
} else if ($name == 'block_course_overview_campus-selectedcategory') {
$descriptionidentifier = 'privacy:request:preference:selectedcategory';
} else if ($name == 'block_course_overview_campus-selectedtoplevelcategory') {
$descriptionidentifier = 'privacy:request:preference:selectedtoplevelcategory';
}
if ($descriptionidentifier !== null) {
writer::export_user_preference(
'block_course_overview_campus',
$name,
$value,
get_string($descriptionidentifier, 'block_course_overview_campus', (object) [
'value' => $value,
])
);
}
// User preferences for hiding stuff.
} else if (strpos($name, 'block_course_overview_campus-hide') === 0) {
if (strpos($name, 'block_course_overview_campus-hidecourse-') === 0) {
$descriptionidentifier = 'privacy:request:preference:hidecourse';
$item = substr($name, strlen('block_course_overview_campus-hidecourse-'));
} else if (strpos($name, 'block_course_overview_campus-hidenews-') === 0) {
$descriptionidentifier = 'privacy:request:preference:hidenews';
$item = substr($name, strlen('block_course_overview_campus-hidecourse-'));
}
if ($descriptionidentifier !== null) {
writer::export_user_preference(
'block_course_overview_campus',
$name,
$value,
get_string($descriptionidentifier, 'block_course_overview_campus', (object) [
'item' => $item,
'value' => $value,
])
);
}
// User preferences for local_boostcoc.
} else if (strpos($name, 'local_boostcoc-') === 0) {
if ($name == 'local_boostcoc-notshowncourses') {
$descriptionidentifier = 'privacy:request:preference:local_boostcoc-notshowncourses';
} else if ($name == 'local_boostcoc-activefilters') {
$descriptionidentifier = 'privacy:request:preference:local_boostcoc-activefilters';
}
if ($descriptionidentifier !== null) {
writer::export_user_preference(
'block_course_overview_campus',
$name,
$value,
get_string($descriptionidentifier, 'block_course_overview_campus', (object) [
'value' => $value,
])
);
}
}
}
}
}
......@@ -68,6 +68,22 @@ $string['other'] = 'Other';
$string['pluginname'] = 'Course overview on campus';
$string['prioritizemyteachedcourses'] = 'Prioritize courses in which I teach';
$string['prioritizemyteachedcourses_desc'] = 'Courses in which the user has a teacher role are listed first in course overview list';
$string['privacy:metadata:preference:selectedterm'] = 'The current selection of the term filter.';
$string['privacy:metadata:preference:selectedteacher'] = 'The current selection of the teacher filter.';
$string['privacy:metadata:preference:selectedcategory'] = 'The current selection of the parent category filter.';
$string['privacy:metadata:preference:selectedtoplevelcategory'] = 'The current selection of the top level category filter.';
$string['privacy:metadata:preference:hidecourse'] = 'The show/hide status of a course in the course overview list.';
$string['privacy:metadata:preference:hidenews'] = 'The show/hide status of a course\'s course news in the course overview list.';
$string['privacy:metadata:preference:local_boostcoc-notshowncourses'] = 'The list of currently not shown courses to be used in the companion plugin \'Boost course overview campus\'.';
$string['privacy:metadata:preference:local_boostcoc-activefilters'] = 'The list of currently active filters to be used in the companion plugin \'Boost course overview campus\'.';
$string['privacy:request:preference:selectedterm'] = 'The current selection of the term filter is: {$a->value}.';
$string['privacy:request:preference:selectedteacher'] = 'The current selection of the teacher filter is: {$a->value}.';
$string['privacy:request:preference:selectedcategory'] = 'The current selection of the parent category filter is: {$a->value}.';
$string['privacy:request:preference:selectedtoplevelcategory'] = 'The current selection of the top level category filter is: {$a->value}.';
$string['privacy:request:preference:hidecourse'] = 'The show/hide status of the course {$a->item} in the course overview list is: {$a->value}.';
$string['privacy:request:preference:hidenews'] = 'The show/hide status of course {$a->item}\'s course news in the course overview list is: {$a->value}.';
$string['privacy:request:preference:local_boostcoc-notshowncourses'] = 'The list of currently not shown courses to be used in the companion plugin \'Boost course overview campus\' is: {$a->value}.';
$string['privacy:request:preference:local_boostcoc-activefilters'] = 'The list of currently active filters to be used in the companion plugin \'Boost course overview campus\' is: {$a->value}.';
$string['secondrowhideonphones'] = 'Second row: Hide on phones';
$string['secondrowhideonphones_desc'] = 'Hide the second row on mobile phones to save space';
$string['secondrowshowcategoryname'] = 'Second row: Show parent category name';
......
......@@ -25,7 +25,7 @@
defined('MOODLE_INTERNAL') || die();
$plugin->component = 'block_course_overview_campus';
$plugin->version = 2018033000;
$plugin->version = 2018051600;
$plugin->release = 'v3.4-r1';
$plugin->requires = 2017111300;
$plugin->maturity = MATURITY_STABLE;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment