. /** * 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"); require_once(__DIR__ . "/../locallib.php"); require_once($CFG->libdir . "/filelib.php"); /** * Defines how to work with events. * * @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) { $data = $event->get_data(); if ($callbacks = local_webhooks_get_list_records()) { foreach ($callbacks as $callback) { self::handler_callback($data, $callback); } } } /** * Processes each callback. * * @param array $data * @param object $callback */ private static function handler_callback($data, $callback) { global $CFG; if (boolval($callback->enable)) { if (!empty($callback->events[$data["eventname"]])) { $urlparse = parse_url($CFG->wwwroot); $data["host"] = $urlparse['host']; $data["token"] = $callback->token; $data["extra"] = $callback->other; self::send($data, $callback); } } } /** * Sending data to the node. * * @param array $data * @param object $callback */ private static function send($data, $callback) { $curl = new \curl(); $curl->setHeader(array("Content-Type: application/" . $callback->type)); $curl->post($callback->url, json_encode($data)); $response = $curl->getResponse(); \local_webhooks_events::response_answer($callback->id, $response); return $response; } }