MDL-69054 core_badges: allow editing OBv1.0 backpacks
[moodle.git] / badges / classes / output / external_backpacks_page.php
CommitLineData
aae219ac
DW
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 * 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 */
24
25namespace core_badges\output;
26
27defined('MOODLE_INTERNAL') || die();
28
29require_once($CFG->libdir . '/badgeslib.php');
30
31use core_badges\external\backpack_exporter;
32
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 */
40class external_backpacks_page implements \renderable {
41
42 /**
43 * Constructor.
44 * @param \moodle_url $url
45 */
46 public function __construct(\moodle_url $url) {
47 $this->url = $url;
48
49 $this->backpacks = badges_get_site_backpacks();
50 }
51
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) {
a80541ea
SA
59 global $CFG, $PAGE;
60
61 $PAGE->requires->js_call_amd('core_badges/backpackactions', 'init');
62
aae219ac
DW
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);
92219c8f 70 $backpack->cantest = ($backpack->apiversion == OPEN_BADGES_V2);
a80541ea
SA
71 $backpack->iscurrent = ($backpack->id == $CFG->badges_site_backpack);
72
aae219ac
DW
73 $data->backpacks[] = $backpack;
74 }
75
76 return $data;
77 }
78}