mirror of
https://github.com/moodle/moodle.git
synced 2025-08-05 00:46:50 +02:00
MDL-63058 block_myoverview: starring and storing preferences
This commit is contained in:
parent
b81722e22f
commit
3cfff88516
39 changed files with 1403 additions and 101 deletions
|
@ -28,7 +28,7 @@ use renderable;
|
|||
use renderer_base;
|
||||
use templatable;
|
||||
|
||||
require_once($CFG->libdir . '/completionlib.php');
|
||||
require_once($CFG->dirroot . '/blocks/myoverview/lib.php');
|
||||
|
||||
/**
|
||||
* Class containing data for my overview block.
|
||||
|
@ -37,18 +37,75 @@ require_once($CFG->libdir . '/completionlib.php');
|
|||
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
|
||||
*/
|
||||
class main implements renderable, templatable {
|
||||
|
||||
/**
|
||||
* Store the grouping preference
|
||||
*
|
||||
* @var string String matching the grouping constants defined in myoverview/lib.php
|
||||
*/
|
||||
private $grouping;
|
||||
|
||||
/**
|
||||
* Store the sort preference
|
||||
*
|
||||
* @var string String matching the sort constants defined in myoverview/lib.php
|
||||
*/
|
||||
private $sort;
|
||||
|
||||
/**
|
||||
* Store the view preference
|
||||
*
|
||||
* @var string String matching the view/display constants defined in myoverview/lib.php
|
||||
*/
|
||||
private $view;
|
||||
|
||||
/**
|
||||
* main constructor.
|
||||
* Initialize the user preferences
|
||||
*
|
||||
* @param string $grouping Grouping user preference
|
||||
* @param string $sort Sort user preference
|
||||
* @param string $view Display user preference
|
||||
*/
|
||||
public function __construct($grouping, $sort, $view) {
|
||||
$this->grouping = $grouping ? $grouping : BLOCK_MYOVERVIEW_GROUPING_ALL;
|
||||
$this->sort = $sort ? $sort : BLOCK_MYOVERVIEW_SORTING_TITLE;
|
||||
$this->view = $view ? $view : BLOCK_MYOVERVIEW_VIEW_CARD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user preferences as an array to figure out what has been selected
|
||||
*
|
||||
* @return array $preferences Array with the pref as key and value set to true
|
||||
*/
|
||||
public function get_preferences_as_booleans() {
|
||||
$preferences = [];
|
||||
$preferences[$this->view] = true;
|
||||
$preferences[$this->sort] = true;
|
||||
$preferences[$this->grouping] = true;
|
||||
|
||||
return $preferences;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export this data so it can be used as the context for a mustache template.
|
||||
*
|
||||
* @param \renderer_base $output
|
||||
* @return stdClass
|
||||
* @return array Context variables for the template
|
||||
*/
|
||||
public function export_for_template(renderer_base $output) {
|
||||
|
||||
$nocoursesurl = $output->image_url('courses', 'block_myoverview')->out();
|
||||
|
||||
return (object) [
|
||||
'nocoursesimg' => $nocoursesurl
|
||||
$defaultvariables = [
|
||||
'nocoursesimg' => $nocoursesurl,
|
||||
'grouping' => $this->grouping,
|
||||
'sort' => $this->sort == BLOCK_MYOVERVIEW_SORTING_TITLE ? 'fullname' : 'ul.timeaccess desc',
|
||||
'view' => $this->view
|
||||
];
|
||||
|
||||
$preferences = $this->get_preferences_as_booleans();
|
||||
return array_merge($defaultvariables, $preferences);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -24,6 +24,9 @@
|
|||
|
||||
namespace block_myoverview\privacy;
|
||||
|
||||
use core_privacy\local\request\user_preference_provider;
|
||||
use core_privacy\local\metadata\collection;
|
||||
|
||||
defined('MOODLE_INTERNAL') || die();
|
||||
|
||||
/**
|
||||
|
@ -32,15 +35,48 @@ defined('MOODLE_INTERNAL') || die();
|
|||
* @copyright 2018 Zig Tan <zig@moodle.com>
|
||||
* @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 \core_privacy\local\metadata\provider, user_preference_provider {
|
||||
|
||||
/**
|
||||
* Get the language string identifier with the component's language
|
||||
* file to explain why this plugin stores no data.
|
||||
* Returns meta-data information about the myoverview block.
|
||||
*
|
||||
* @return string
|
||||
* @param \core_privacy\local\metadata\collection $collection A collection of meta-data.
|
||||
* @return \core_privacy\local\metadata\collection Return the collection of meta-data.
|
||||
*/
|
||||
public static function get_reason() : string {
|
||||
return 'privacy:metadata';
|
||||
public static function get_metadata(collection $collection) : collection {
|
||||
$collection->add_user_preference('block_myoverview_user_sort_preference', 'privacy:metadata:overviewsortpreference');
|
||||
$collection->add_user_preference('block_myoverview_user_view_preference', 'privacy:metadata:overviewviewpreference');
|
||||
$collection->add_user_preference('block_myoverview_user_grouping_preference',
|
||||
'privacy:metadata:overviewgroupingpreference');
|
||||
return $collection;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Export all user preferences for the myoverview block
|
||||
*
|
||||
* @param int $userid The userid of the user whose data is to be exported.
|
||||
*/
|
||||
public static function export_user_preferences(int $userid) {
|
||||
$preference = get_user_preferences('block_myoverview_user_sort_preference', null, $userid);
|
||||
if (isset($preference)) {
|
||||
\core_privacy\local\request\writer::export_user_preference('block_myoverview',
|
||||
'block_myoverview_user_sort_preference', get_string($preference, 'block_myoverview'),
|
||||
get_string('privacy:metadata:overviewsortpreference', 'block_myoverview'));
|
||||
}
|
||||
|
||||
$preference = get_user_preferences('block_myoverview_user_view_preference', null, $userid);
|
||||
if (isset($preference)) {
|
||||
\core_privacy\local\request\writer::export_user_preference('block_myoverview',
|
||||
'block_myoverview_user_view_preference',
|
||||
get_string($preference, 'block_myoverview'),
|
||||
get_string('privacy:metadata:overviewviewpreference', 'block_myoverview'));
|
||||
}
|
||||
|
||||
$preference = get_user_preferences('block_myoverview_user_grouping_preference', null, $userid);
|
||||
if (isset($preference)) {
|
||||
\core_privacy\local\request\writer::export_user_preference('block_myoverview',
|
||||
'block_myoverview_user_grouping_preference',
|
||||
get_string($preference, 'block_myoverview'),
|
||||
get_string('privacy:metadata:overviewgroupingpreference', 'block_myoverview'));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue