From 2194bc4a019fcc1de191c76ab8a905b04b029292 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sun, 9 Sep 2018 03:23:12 +0400 Subject: Refactoring the event handler Event processing is asynchronous. For asynchronous processing, events are added to the job queue. Signed-off-by: Valentin Popov --- classes/event_observer.php | 48 ++++++++++++++++++++++++++++++++++++++++ classes/handler.php | 55 ---------------------------------------------- db/events.php | 15 +++++-------- 3 files changed, 54 insertions(+), 64 deletions(-) create mode 100644 classes/event_observer.php delete mode 100644 classes/handler.php diff --git a/classes/event_observer.php b/classes/event_observer.php new file mode 100644 index 0000000..9ab4a35 --- /dev/null +++ b/classes/event_observer.php @@ -0,0 +1,48 @@ +. + +/** + * Handlers of observers for events. + * + * @copyright 2018 'Valentin Popov' + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks + */ + +namespace local_webhooks; + +defined( "MOODLE_INTERNAL" ) || die(); + +/** + * Defines event handlers. + * + * @copyright 2018 'Valentin Popov' + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks + */ +class event_observer { + /** + * Handler of all the events. + * Each event is put into the job queue. + * + * @param object $event + */ + public static function observe_all( $event ) { + $task = new \local_webhooks\task\process_events_task(); + $task->set_custom_data( $event->get_data() ); + \core\task\manager::queue_adhoc_task( $task ); + } +} \ No newline at end of file diff --git a/classes/handler.php b/classes/handler.php deleted file mode 100644 index 3bc69cf..0000000 --- a/classes/handler.php +++ /dev/null @@ -1,55 +0,0 @@ -. - -/** - * The event handler. - * - * @package local_webhooks - * @copyright 2017 "Valentin Popov" - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ - -namespace local_webhooks; - -defined("MOODLE_INTERNAL") || die(); - -require_once(__DIR__ . "/../lib.php"); - -/** - * Defines event handlers. - * - * @copyright 2017 "Valentin Popov" - * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later - */ -class handler { - /** - * External handler. - * - * @param object $event - */ - public static function events($event) { - /* Gets the information about the event */ - $data = $event->get_data(); - - /* Gets a list of involved services */ - if (!empty($records = local_webhooks_get_list_records_by_event($data["eventname"]))) { - foreach ($records as $record) { - /* Sends an alert */ - local_webhooks_send_request($data, $record); - } - } - } -} \ No newline at end of file diff --git a/db/events.php b/db/events.php index a2313c2..9fdf7d4 100644 --- a/db/events.php +++ b/db/events.php @@ -15,21 +15,18 @@ // along with Moodle. If not, see . /** - * Interception of all events in the system. + * Registration of observers for events. * - * @package local_webhooks - * @copyright 2017 "Valentin Popov" + * @copyright 2018 'Valentin Popov' * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package local_webhooks */ -defined("MOODLE_INTERNAL") || die(); +defined( "MOODLE_INTERNAL" ) || die(); $observers = array( array( - "callback" => "\local_webhooks\\handler::events", - "eventname" => "*", - "includefile" => null, - "internal" => true, - "priority" => 200 + "callback" => "\local_webhooks\\event_observer::observe_all", + "eventname" => "*" ) ); \ No newline at end of file -- cgit v1.2.3