Refactoring the event handler

Event processing is asynchronous.  For asynchronous processing, events
are added to the job queue.

Signed-off-by: Valentin Popov <info@valentineus.link>
This commit is contained in:
Valentin Popov 2018-09-09 03:23:12 +04:00
parent 5884a58f54
commit 2194bc4a01
Signed by: Valentin Popov
GPG Key ID: 269A00ACA90A8EA3
2 changed files with 19 additions and 29 deletions

View File

@ -15,41 +15,34 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* The event handler.
* Handlers of observers for events.
*
* @package local_webhooks
* @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @copyright 2018 'Valentin Popov' <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @package local_webhooks
*/
namespace local_webhooks;
defined("MOODLE_INTERNAL") || die();
require_once(__DIR__ . "/../lib.php");
defined( "MOODLE_INTERNAL" ) || die();
/**
* Defines event handlers.
*
* @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @copyright 2018 'Valentin Popov' <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
* @package local_webhooks
*/
class handler {
class event_observer {
/**
* External handler.
* Handler of all the events.
* Each event is put into the job queue.
*
* @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);
}
}
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 );
}
}

View File

@ -15,21 +15,18 @@
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Interception of all events in the system.
* Registration of observers for events.
*
* @package local_webhooks
* @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @copyright 2018 'Valentin Popov' <info@valentineus.link>
* @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" => "*"
)
);