aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/task/process_events_task.php62
1 files changed, 62 insertions, 0 deletions
diff --git a/classes/task/process_events_task.php b/classes/task/process_events_task.php
new file mode 100644
index 0000000..d2d1ca9
--- /dev/null
+++ b/classes/task/process_events_task.php
@@ -0,0 +1,62 @@
+<?php
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+
+/**
+ * Defining task handlers.
+ *
+ * @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\task;
+
+defined( "MOODLE_INTERNAL" ) || die();
+
+/**
+ * Class process_events_task
+ *
+ * @copyright 2018 'Valentin Popov' <info@valentineus.link>
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @package local_webhooks\task
+ */
+class process_events_task extends \core\task\adhoc_task {
+ /**
+ * Task handler.
+ */
+ public function execute() {
+ global $CFG;
+
+ require_once( $CFG->dirroot . "/local/webhooks/lib.php" );
+
+ $services = \local_webhooks_api::get_services_by_event( $this->get_custom_data()->eventname );
+
+ foreach ( $services as $service ) {
+ if ( !empty( $service->status ) ) {
+ $curl = new \curl();
+
+ $event = (array) $this->get_custom_data();
+ $event[ "token" ] = $service->token;
+
+ $curl->setHeader( array( "Content-Type: " . $service->header ) );
+ $curl->post( $service->point, json_encode( $event ) );
+
+ // TODO: Mark the log
+ $curl->getResponse();
+ }
+ }
+ }
+} \ No newline at end of file