MDL-69054 core_badges: allow editing OBv1.0 backpacks
[moodle.git] / badges / classes / output / external_backpacks_page.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  * Manage enabled backpacks for the site.
19  *
20  * @package    core_badges
21  * @copyright  2019 Damyon Wiese
22  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 namespace core_badges\output;
27 defined('MOODLE_INTERNAL') || die();
29 require_once($CFG->libdir . '/badgeslib.php');
31 use core_badges\external\backpack_exporter;
33 /**
34  * Manage enabled backpacks renderable.
35  *
36  * @package    core_badges
37  * @copyright  2019 Damyon Wiese
38  * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
39  */
40 class external_backpacks_page implements \renderable {
42     /**
43      * Constructor.
44      * @param \moodle_url $url
45      */
46     public function __construct(\moodle_url $url) {
47         $this->url = $url;
49         $this->backpacks = badges_get_site_backpacks();
50     }
52     /**
53      * Export this data so it can be used as the context for a mustache template.
54      *
55      * @param renderer_base $output Renderer base.
56      * @return stdClass
57      */
58     public function export_for_template(\renderer_base $output) {
59         global $CFG, $PAGE;
61         $PAGE->requires->js_call_amd('core_badges/backpackactions', 'init');
63         $data = new \stdClass();
64         $data->baseurl = $this->url;
65         $data->backpacks = array();
66         $data->sesskey = sesskey();
67         foreach ($this->backpacks as $backpack) {
68             $exporter = new backpack_exporter($backpack);
69             $backpack = $exporter->export($output);
70             $backpack->cantest = ($backpack->apiversion == OPEN_BADGES_V2);
71             $backpack->iscurrent = ($backpack->id == $CFG->badges_site_backpack);
73             $data->backpacks[] = $backpack;
74         }
76         return $data;
77     }
78 }