MDL-48142 core_badge: final polishing on badge award event
[moodle.git] / lib / classes / event / badge_awarded.php
CommitLineData
483cfd76
JB
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 * Badge awarded event.
19 *
4ae5ecbe
SL
20 * @property-read array $other {
21 * Extra information about event.
22 *
23 * - int expiredate: Badge expire timestamp.
24 * - int badgeissuedid: Badge issued ID.
25 * }
26 *
483cfd76 27 * @package core
4ae5ecbe 28 * @copyright 2015 James Ballard
483cfd76
JB
29 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
30 */
31
32namespace core\event;
33defined('MOODLE_INTERNAL') || die();
34
35/**
36 * Event triggered after a badge is awarded to a user.
37 *
38 * @package core
4ae5ecbe
SL
39 * @since Moodle 2.9
40 * @copyright 2015 James Ballard
483cfd76
JB
41 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
42 */
43class badge_awarded extends base {
44
45 /**
46 * Set basic properties for the event.
47 */
48 protected function init() {
4ae5ecbe 49 $this->data['objecttable'] = 'badge';
483cfd76 50 $this->data['crud'] = 'c';
4ae5ecbe 51 $this->data['edulevel'] = self::LEVEL_TEACHING;
483cfd76
JB
52 }
53
54 /**
55 * Returns localised general event name.
56 *
57 * @return string
58 */
59 public static function get_name() {
60 return get_string('eventbadgeawarded', 'badges');
61 }
62
63 /**
64 * Returns non-localised event description with id's for admin use only.
65 *
66 * @return string
67 */
68 public function get_description() {
2ec274f5 69 return "The user with id '$this->relateduserid' has been awarded the badge with id '".$this->objectid."'.";
483cfd76
JB
70 }
71
72 /**
73 * Returns relevant URL.
74 * @return \moodle_url
75 */
76 public function get_url() {
4ae5ecbe
SL
77 return new \moodle_url('/badges/overview.php', array('id' => $this->objectid));
78 }
79
80 /**
81 * Custom validations.
82 *
83 * @throws \coding_exception
84 * @return void
85 */
86 protected function validate_data() {
87 parent::validate_data();
88
89 if (!isset($this->relateduserid)) {
90 throw new \coding_exception('The \'relateduserid\' must be set.');
91 }
92
93 if (!isset($this->objectid)) {
94 throw new \coding_exception('The \'objectid\' must be set.');
95 }
483cfd76
JB
96 }
97}