Skip to content

Commit b69ae0e

Browse files
fulldecentRaza403
authored andcommitted
Add events for adding and deleting certificates (#675)
1 parent 9b57760 commit b69ae0e

File tree

4 files changed

+146
-1
lines changed

4 files changed

+146
-1
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
@@ -122,6 +122,8 @@
122122
$string['eventtemplatecreated'] = 'Custom certificate template created';
123123
$string['eventtemplatedeleted'] = 'Custom certificate template deleted';
124124
$string['eventtemplateupdated'] = 'Custom certificate template updated';
125+
$string['eventcertificateupdated'] = 'Certificate updated';
126+
$string['eventcertificatedeleted'] = 'Certificate deleted';
125127
$string['exampledatawarning'] = 'Some of these values may just be an example to ensure positioning of the elements is possible.';
126128
$string['font'] = 'Font';
127129
$string['font_help'] = 'The font used when generating this element.';

lib.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ function generate_public_url_for_certificate(string $cert_code): string {
467467
* It prevents unauthorized access by ensuring that only valid certificates can
468468
* be accessed through a generated URL.
469469
*
470-
* The signature is generated using the HMAC (Hash-based Message Authentication Code)
470+
* The signature is generated using the HMAC (Hash-based Message Authentication Code)
471471
* method with SHA-256, ensuring strong security. It uses Moodle's `siteidentifier`
472472
* as the secret key, making it unique to each Moodle installation.
473473
*

0 commit comments

Comments
 (0)