@@ -59,13 +59,29 @@ class events {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if ($callbacks->valid()) {
 | 
					        if ($callbacks->valid()) {
 | 
				
			||||||
            foreach ($callbacks as $callback) {
 | 
					            foreach ($callbacks as $callback) {
 | 
				
			||||||
                self::send($data, $callback);
 | 
					                self::handler_callback($data, $callback);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $callbacks->close();
 | 
					        $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"]])) {
 | 
				
			||||||
 | 
					                self::send($data, $callback);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Sending data to the node.
 | 
					     * Sending data to the node.
 | 
				
			||||||
     *
 | 
					     *
 | 
				
			||||||
@@ -73,11 +89,9 @@ class events {
 | 
				
			|||||||
     * @param object $callback
 | 
					     * @param object $callback
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    private static function send($data, $callback) {
 | 
					    private static function send($data, $callback) {
 | 
				
			||||||
        if ($callback->enable) {
 | 
					        $curl = new curl();
 | 
				
			||||||
            $curl = new curl();
 | 
					        $package = self::packup($data);
 | 
				
			||||||
            $package = self::packup($data);
 | 
					        $curl::request($callback->url, $package);
 | 
				
			||||||
            $curl::request($callback->url, $package);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@ defined("MOODLE_INTERNAL") || die();
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
require_once($CFG->libdir . "/formslib.php");
 | 
					require_once($CFG->libdir . "/formslib.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use report_eventlist_list_generator;
 | 
				
			||||||
use lang_string;
 | 
					use lang_string;
 | 
				
			||||||
use moodleform;
 | 
					use moodleform;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -45,6 +46,16 @@ class service_edit_form extends moodleform {
 | 
				
			|||||||
        parent::__construct($baseurl);
 | 
					        parent::__construct($baseurl);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Unpacks data for display.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param object $record
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function set_data($record) {
 | 
				
			||||||
 | 
					        $record->events = unserialize(gzuncompress(base64_decode($record->events)));
 | 
				
			||||||
 | 
					        return parent::set_data($record);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * Defines the standard structure of the form.
 | 
					     * Defines the standard structure of the form.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
@@ -76,6 +87,25 @@ class service_edit_form extends moodleform {
 | 
				
			|||||||
        $mform->setDefault("enable", 1);
 | 
					        $mform->setDefault("enable", 1);
 | 
				
			||||||
        $mform->setAdvanced("enable");
 | 
					        $mform->setAdvanced("enable");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Form heading */
 | 
				
			||||||
 | 
					        $mform->addElement("header", "editserviceheaderevent",
 | 
				
			||||||
 | 
					            new lang_string("edulevel", "moodle"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* List of events */
 | 
				
			||||||
 | 
					        $eventlist = report_eventlist_list_generator::get_all_events_list(true);
 | 
				
			||||||
 | 
					        $events = array();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Formation of the list of elements */
 | 
				
			||||||
 | 
					        foreach ($eventlist as $event) {
 | 
				
			||||||
 | 
					            $events[$event["component"]][] =&
 | 
				
			||||||
 | 
					                $mform->createElement("advcheckbox", $event["eventname"], $event["eventname"]);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Displays groups of items */
 | 
				
			||||||
 | 
					        foreach ($events as $key => $event) {
 | 
				
			||||||
 | 
					            $mform->addGroup($event, "events", $key, "<br />", true);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* Control Panel */
 | 
					        /* Control Panel */
 | 
				
			||||||
        $this->add_action_buttons(true);
 | 
					        $this->add_action_buttons(true);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" ?>
 | 
					<?xml version="1.0" encoding="UTF-8" ?>
 | 
				
			||||||
<XMLDB PATH="blocks/local_webhooks/db" VERSION="20171022" COMMENT="XMLDB file for Moodle" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd">
 | 
					<XMLDB PATH="blocks/local_webhooks/db" VERSION="20171025" COMMENT="XMLDB file for Moodle" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd">
 | 
				
			||||||
    <TABLES>
 | 
					    <TABLES>
 | 
				
			||||||
        <TABLE NAME="local_webhooks_service" COMMENT="A table for storing callback services.">
 | 
					        <TABLE NAME="local_webhooks_service" COMMENT="A table for storing callback services.">
 | 
				
			||||||
            <FIELDS>
 | 
					            <FIELDS>
 | 
				
			||||||
@@ -7,6 +7,7 @@
 | 
				
			|||||||
                <FIELD NAME="enable" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" />
 | 
					                <FIELD NAME="enable" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" />
 | 
				
			||||||
                <FIELD NAME="title" TYPE="text" NOTNULL="true" SEQUENCE="false" />
 | 
					                <FIELD NAME="title" TYPE="text" NOTNULL="true" SEQUENCE="false" />
 | 
				
			||||||
                <FIELD NAME="url" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" />
 | 
					                <FIELD NAME="url" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" />
 | 
				
			||||||
 | 
					                <FIELD NAME="events" TYPE="text" NOTNULL="true" SEQUENCE="false" />
 | 
				
			||||||
            </FIELDS>
 | 
					            </FIELDS>
 | 
				
			||||||
            <KEYS>
 | 
					            <KEYS>
 | 
				
			||||||
                <KEY NAME="primary" TYPE="primary" FIELDS="id" />
 | 
					                <KEY NAME="primary" TYPE="primary" FIELDS="id" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,6 +63,9 @@ if ($data = $mform->get_data()) {
 | 
				
			|||||||
        $data->enable = 0;
 | 
					        $data->enable = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Packing of data */
 | 
				
			||||||
 | 
					    $data->events = base64_encode(gzcompress(serialize($data->events), 9));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($idediting) {
 | 
					    if ($idediting) {
 | 
				
			||||||
        $data->id = $idservice;
 | 
					        $data->id = $idservice;
 | 
				
			||||||
        $DB->update_record("local_webhooks_service", $data);
 | 
					        $DB->update_record("local_webhooks_service", $data);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user