Commit | Line | Data |
---|---|---|
27806552 YB |
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 | * Display details of an issued badge with criteria and evidence | |
19 | * | |
20 | * @package core | |
21 | * @subpackage badges | |
22 | * @copyright 2012 onwards Totara Learning Solutions Ltd {@link http://www.totaralms.com/} | |
23 | * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later | |
24 | * @author Yuliya Bozhko <yuliya.bozhko@totaralms.com> | |
25 | */ | |
26 | ||
1fcf0ca8 | 27 | require_once(__DIR__ . '/../config.php'); |
27806552 | 28 | require_once($CFG->libdir . '/badgeslib.php'); |
62fef3cf | 29 | require_once($CFG->libdir . '/filelib.php'); |
27806552 YB |
30 | |
31 | $id = required_param('hash', PARAM_ALPHANUM); | |
32 | $bake = optional_param('bake', 0, PARAM_BOOL); | |
33 | ||
34 | $PAGE->set_context(context_system::instance()); | |
35 | $output = $PAGE->get_renderer('core', 'badges'); | |
36 | ||
27806552 YB |
37 | $PAGE->set_url('/badges/badge.php', array('hash' => $id)); |
38 | $PAGE->set_pagelayout('base'); | |
39 | $PAGE->set_title(get_string('issuedbadge', 'badges')); | |
40 | ||
aae219ac | 41 | $badge = new \core_badges\output\issued_badge($id); |
b7374fac MD |
42 | if (!empty($badge->recipient->id)) { |
43 | if ($bake && ($badge->recipient->id == $USER->id)) { | |
44 | $name = str_replace(' ', '_', $badge->badgeclass['name']) . '.png'; | |
d77a6026 | 45 | $name = clean_param($name, PARAM_FILE); |
b7374fac MD |
46 | $filehash = badges_bake($id, $badge->badgeid, $USER->id, true); |
47 | $fs = get_file_storage(); | |
48 | $file = $fs->get_file_by_hash($filehash); | |
49 | send_stored_file($file, 0, 0, true, array('filename' => $name)); | |
50 | } | |
51 | ||
52 | if (isloggedin()) { | |
53 | $PAGE->set_heading($badge->badgeclass['name']); | |
54 | $PAGE->navbar->add($badge->badgeclass['name']); | |
55 | if ($badge->recipient->id == $USER->id) { | |
56 | $url = new moodle_url('/badges/mybadges.php'); | |
57 | } else { | |
58 | $url = new moodle_url($CFG->wwwroot); | |
59 | } | |
60 | navigation_node::override_active_url($url); | |
d9fe7dbe | 61 | } else { |
b7374fac MD |
62 | $PAGE->set_heading($badge->badgeclass['name']); |
63 | $PAGE->navbar->add($badge->badgeclass['name']); | |
d9fe7dbe | 64 | $url = new moodle_url($CFG->wwwroot); |
b7374fac | 65 | navigation_node::override_active_url($url); |
d9fe7dbe | 66 | } |
27806552 | 67 | |
b7374fac MD |
68 | // Include JS files for backpack support. |
69 | badges_setup_backpack_js(); | |
27806552 | 70 | |
b7374fac | 71 | echo $OUTPUT->header(); |
27806552 | 72 | |
b7374fac MD |
73 | echo $output->render($badge); |
74 | } else { | |
75 | echo $OUTPUT->header(); | |
76 | ||
77 | echo $OUTPUT->container($OUTPUT->error_text(get_string('error:badgeawardnotfound', 'badges')) . | |
78 | html_writer::tag('p', $OUTPUT->close_window_button()), 'important', 'notice'); | |
79 | } | |
27806552 | 80 | |
2ce8cf62 SB |
81 | // Trigger event, badge viewed. |
82 | $other = array('badgeid' => $badge->badgeid, 'badgehash' => $id); | |
83 | $eventparams = array('context' => $PAGE->context, 'other' => $other); | |
84 | ||
85 | // If the badge does not belong to this user, log it appropriately. | |
86 | if (($badge->recipient->id != $USER->id)) { | |
87 | $eventparams['relateduserid'] = $badge->recipient->id; | |
88 | } | |
89 | ||
90 | $event = \core\event\badge_viewed::create($eventparams); | |
91 | $event->trigger(); | |
92 | ||
27806552 | 93 | echo $OUTPUT->footer(); |