Skip to content

Commit 441a227

Browse files
fulldecentRaza403
authored andcommitted
Add events for adding and deleting certificates (#675)
1 parent ff2fae7 commit 441a227

File tree

4 files changed

+152
-0
lines changed

4 files changed

+152
-0
lines changed
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
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+
* Event triggered when a certificate issue is deleted.
19+
*
20+
* @package mod_customcert
21+
* @copyright 2025 William Entriken <@fulldecent>
22+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23+
*/
24+
25+
namespace mod_customcert\event;
26+
27+
/**
28+
* Event triggered when a certificate issue is deleted.
29+
*
30+
* @package mod_customcert
31+
* @copyright 2025 William Entriken <@fulldecent>
32+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
33+
*/
34+
class certificate_deleted extends \core\event\base {
35+
36+
/**
37+
* Initialises the event.
38+
*
39+
*/
40+
protected function init() {
41+
$this->data['crud'] = 'd'; // A 'delete' operation.
42+
$this->data['edulevel'] = self::LEVEL_OTHER; // Not teaching, participation, etc.
43+
$this->data['objecttable'] = 'customcert_issues'; // The DB table this event pertains to.
44+
}
45+
46+
/**
47+
* Returns the localized name of the event.
48+
*
49+
* @return string
50+
*/
51+
public static function get_name() {
52+
return get_string('eventcertificatedeleted', 'mod_customcert');
53+
}
54+
55+
/**
56+
* Returns a description of the event for logging/debugging.
57+
*
58+
* @return string
59+
*/
60+
public function get_description() {
61+
return "The certificate issue with id '{$this->objectid}' was deleted, from user with id '{$this->relateduserid}'.";
62+
}
63+
64+
/**
65+
* Returns a relevant URL for viewing more information about the event.
66+
*
67+
* @return \moodle_url
68+
*/
69+
public function get_url() {
70+
return new \moodle_url('/mod/customcert/view.php', ['id' => $this->contextinstanceid]);
71+
}
72+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
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+
* Event class for when a custom certificate is issued to a user.
19+
*
20+
* @package mod_customcert
21+
* @copyright 2025 William Entriken <@fulldecent>
22+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23+
*/
24+
25+
namespace mod_customcert\event;
26+
27+
/**
28+
* Event class for when a custom certificate is issued to a user.
29+
*
30+
* @package mod_customcert
31+
* @copyright 2025 William Entriken <@fulldecent>
32+
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
33+
*/
34+
class certificate_issued extends \core\event\base {
35+
36+
/**
37+
* Initialises the event.
38+
*/
39+
protected function init() {
40+
$this->data['crud'] = 'c'; // A 'create' operation.
41+
$this->data['edulevel'] = self::LEVEL_OTHER; // Not teaching, participation, etc.
42+
$this->data['objecttable'] = 'customcert_issues'; // The DB table this event pertains to.
43+
}
44+
45+
/**
46+
* Returns the localized event name.
47+
*
48+
* @return string The name of the event.
49+
*/
50+
public static function get_name() {
51+
return get_string('eventcertificateissued', 'mod_customcert');
52+
}
53+
54+
/**
55+
* Returns a description of what happened.
56+
*
57+
* @return string A detailed description of the event.
58+
*/
59+
public function get_description() {
60+
return "The user with id '{$this->userid}' was issued a custom certificate with issue id '{$this->objectid}'.";
61+
}
62+
63+
/**
64+
* Returns the URL relevant to the event.
65+
*
66+
* @return \moodle_url A URL to view the certificate or related activity.
67+
*/
68+
public function get_url() {
69+
return new \moodle_url('/mod/customcert/view.php', ['id' => $this->contextinstanceid]);
70+
}
71+
}

lang/en/customcert.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,8 @@
124124
$string['eventtemplatecreated'] = 'Custom certificate template created';
125125
$string['eventtemplatedeleted'] = 'Custom certificate template deleted';
126126
$string['eventtemplateupdated'] = 'Custom certificate template updated';
127+
$string['eventcertificateupdated'] = 'Certificate updated';
128+
$string['eventcertificatedeleted'] = 'Certificate deleted';
127129
$string['exampledatawarning'] = 'Some of these values may just be an example to ensure positioning of the elements is possible.';
128130
$string['font'] = 'Font';
129131
$string['font_help'] = 'The font used when generating this element.';

lib.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,10 +89,17 @@ function customcert_delete_instance($id) {
8989

9090
$context = context_module::instance($cm->id);
9191

92+
<<<<<<< HEAD
9293
// Trigger issue_deleted events for each issue.
9394
$issues = $DB->get_records('customcert_issues', ['customcertid' => $id]);
9495
foreach ($issues as $issue) {
9596
$event = \mod_customcert\event\issue_deleted::create([
97+
=======
98+
// Trigger certificate_deleted events for each issue.
99+
$issues = $DB->get_records('customcert_issues', ['customcertid' => $id]);
100+
foreach ($issues as $issue) {
101+
$event = \mod_customcert\event\certificate_deleted::create([
102+
>>>>>>> e9c072e (Add events for adding and deleting certificates (#675))
96103
'objectid' => $issue->id,
97104
'context' => $context,
98105
'relateduserid' => $issue->userid,

0 commit comments

Comments
 (0)