. /** * 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(); /** * Defines how to work with events. * * @copyright 2017 "Valentin Popov" * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class events { /** * External handler. * * @param object $event */ public static function handler($event) { $enable = get_config("local_webhooks", "enable"); if (boolval($enable)) { $data = $event->get_data(); self::transmitter($data); } } /** * Transmitter, processing event and services. * * @param array $data */ private static function transmitter($data) { global $DB; $callbacks = $DB->get_recordset("local_webhooks_service"); if ($callbacks->valid()) { foreach ($callbacks as $callback) { self::handler_callback($data, $callback); } } $callbacks->close(); } /** * Processes each callback. * * @param array $data * @param object $callback */ private static function handler_callback($data, $callback) { if ($callback->enable) { $events = unserialize(gzuncompress(base64_decode($callback->events))); if (boolval($events[$data["eventname"]])) { /* Adding to the data token */ if (boolval($callback->token)) { $data["token"] = $callback->token; } self::send($data, $callback); } } } /** * Sending data to the node. * * @param array $data * @param object $callback */ private static function send($data, $callback) { $curl = new curl(); $package = self::packup($data); $curl::request($callback->url, $package); } /** * Packs the data for transmission. * * @param array $data */ private static function packup($data) { return json_encode($data); } }