7cd6d1e0c9abdc3bc3d155ec7243af8b53aaff1e
[moodle.git] / blocks / myoverview / classes / output / main.php
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/>.
17 /**
18  * Class containing data for my overview block.
19  *
20  * @package    block_myoverview
21  * @copyright  2017 Ryan Wyllie <ryan@moodle.com>
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
24 namespace block_myoverview\output;
25 defined('MOODLE_INTERNAL') || die();
27 use renderable;
28 use renderer_base;
29 use templatable;
31 require_once($CFG->dirroot . '/blocks/myoverview/lib.php');
33 /**
34  * Class containing data for my overview block.
35  *
36  * @copyright  2018 Bas Brands <bas@moodle.com>
37  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
38  */
39 class main implements renderable, templatable {
41     /**
42      * Store the grouping preference
43      *
44      * @var string String matching the grouping constants defined in myoverview/lib.php
45      */
46     private $grouping;
48     /**
49      * Store the sort preference
50      *
51      * @var string String matching the sort constants defined in myoverview/lib.php
52      */
53     private $sort;
55     /**
56      * Store the view preference
57      *
58      * @var string String matching the view/display constants defined in myoverview/lib.php
59      */
60     private $view;
62     /**
63      * main constructor.
64      * Initialize the user preferences
65      *
66      * @param string $grouping Grouping user preference
67      * @param string $sort Sort user preference
68      * @param string $view Display user preference
69      */
70     public function __construct($grouping, $sort, $view) {
71         $this->grouping = $grouping ? $grouping : BLOCK_MYOVERVIEW_GROUPING_ALL;
72         $this->sort = $sort ? $sort : BLOCK_MYOVERVIEW_SORTING_TITLE;
73         $this->view = $view ? $view : BLOCK_MYOVERVIEW_VIEW_CARD;
74     }
76     /**
77      * Get the user preferences as an array to figure out what has been selected
78      *
79      * @return array $preferences Array with the pref as key and value set to true
80      */
81     public function get_preferences_as_booleans() {
82         $preferences = [];
83         $preferences[$this->view] = true;
84         $preferences[$this->sort] = true;
85         $preferences[$this->grouping] = true;
87         return $preferences;
88     }
90     /**
91      * Export this data so it can be used as the context for a mustache template.
92      *
93      * @param \renderer_base $output
94      * @return array Context variables for the template
95      */
96     public function export_for_template(renderer_base $output) {
98         $nocoursesurl = $output->image_url('courses', 'block_myoverview')->out();
100         $defaultvariables = [
101             'nocoursesimg' => $nocoursesurl,
102             'grouping' => $this->grouping,
103             'sort' => $this->sort == BLOCK_MYOVERVIEW_SORTING_TITLE ? 'fullname' : 'ul.timeaccess desc',
104             'view' => $this->view
105         ];
107         $preferences = $this->get_preferences_as_booleans();
108         return array_merge($defaultvariables, $preferences);
110     }