Formatting code and eliminating possible errors

Signed-off-by: Valentin Popov <info@valentineus.link>
This commit is contained in:
Valentin Popov 2018-11-02 00:36:09 +04:00
parent f9772b1fb9
commit d8f3a9f3ed
Signed by: Valentin Popov
GPG Key ID: 269A00ACA90A8EA3
18 changed files with 378 additions and 254 deletions

View File

@ -26,40 +26,50 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class backup_performed extends \core\event\base { class backup_performed extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "c";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("create", "moodle"); return new lang_string('create', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*
* @throws \coding_exception
*/ */
public function get_description() { public function get_description() {
return new \lang_string("backup", "moodle"); return new lang_string('backup', 'moodle');
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/index.php"); return new moodle_url('/local/webhooks/index.php');
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'c';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,40 +26,50 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class backup_restored extends \core\event\base { class backup_restored extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "u";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("update", "moodle"); return new lang_string('update', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*
* @throws \coding_exception
*/ */
public function get_description() { public function get_description() {
return new \lang_string("backupfinished", "moodle"); return new lang_string('backupfinished', 'moodle');
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/index.php"); return new moodle_url('/local/webhooks/index.php');
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'u';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,40 +26,48 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class response_answer extends \core\event\base { class response_answer extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "r";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("answer", "moodle"); return new lang_string('answer', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*/ */
public function get_description() { public function get_description() {
return $this->other["status"]; return $this->other['status'];
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/editservice.php", array("serviceid" => $this->objectid)); return new moodle_url('/local/webhooks/editservice.php', array('serviceid' => $this->objectid));
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'r';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,40 +26,50 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class service_added extends \core\event\base { class service_added extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "c";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("create", "moodle"); return new lang_string('create', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*
* @throws \coding_exception
*/ */
public function get_description() { public function get_description() {
return new \lang_string("eventwebserviceservicecreated", "webservice"); return new lang_string('eventwebserviceservicecreated', 'webservice');
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/editservice.php", array("serviceid" => $this->objectid)); return new moodle_url('/local/webhooks/editservice.php', array('serviceid' => $this->objectid));
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'c';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,40 +26,50 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class service_deleted extends \core\event\base { class service_deleted extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "d";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("deleted", "moodle"); return new lang_string('deleted', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*
* @throws \coding_exception
*/ */
public function get_description() { public function get_description() {
return new \lang_string("eventwebserviceservicedeleted", "webservice"); return new lang_string('eventwebserviceservicedeleted', 'webservice');
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/index.php"); return new moodle_url('/local/webhooks/index.php');
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'd';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,40 +26,50 @@ namespace local_webhooks\event;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
use core\event\base;
use lang_string;
use moodle_url;
/** /**
* Defines how to work with events. * Defines how to work with events.
* *
* @copyright 2017 "Valentin Popov" <info@valentineus.link> * @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
class service_updated extends \core\event\base { class service_updated extends base {
/**
* Init method.
*/
protected function init() {
$this->data["crud"] = "u";
$this->data["edulevel"] = self::LEVEL_OTHER;
$this->data["objecttable"] = "local_webhooks_service";
}
/** /**
* Return localised event name. * Return localised event name.
*
* @throws \coding_exception
*/ */
public static function get_name() { public static function get_name() {
return new \lang_string("update", "moodle"); return new lang_string('update', 'moodle');
} }
/** /**
* Returns description of what happened. * Returns description of what happened.
*
* @throws \coding_exception
*/ */
public function get_description() { public function get_description() {
return new \lang_string("eventwebserviceserviceupdated", "webservice"); return new lang_string('eventwebserviceserviceupdated', 'webservice');
} }
/** /**
* Get URL related to the action. * Get URL related to the action.
*
* @throws \moodle_exception
*/ */
public function get_url() { public function get_url() {
return new \moodle_url("/local/webhooks/editservice.php", array("serviceid" => $this->objectid)); return new moodle_url('/local/webhooks/editservice.php', array('serviceid' => $this->objectid));
}
/**
* Init method.
*/
protected function init() {
$this->data['crud'] = 'u';
$this->data['edulevel'] = self::LEVEL_OTHER;
$this->data['objecttable'] = 'local_webhooks_service';
} }
} }

View File

@ -26,10 +26,15 @@ namespace local_webhooks;
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . "/../lib.php"); global $CFG;
require_once(__DIR__ . "/../locallib.php");
require_once($CFG->libdir . "/filelib.php"); require_once(__DIR__ . '/../lib.php');
require_once(__DIR__ . '/../locallib.php');
require_once($CFG->libdir . '/filelib.php');
use curl;
use local_webhooks_events;
/** /**
* Defines how to work with events. * Defines how to work with events.
@ -42,6 +47,9 @@ class handler {
* External handler. * External handler.
* *
* @param object $event * @param object $event
*
* @throws \dml_exception
* @throws \coding_exception
*/ */
public static function events($event) { public static function events($event) {
$data = $event->get_data(); $data = $event->get_data();
@ -58,36 +66,42 @@ class handler {
* *
* @param array $data * @param array $data
* @param object $callback * @param object $callback
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
private static function handler_callback($data, $callback) { private static function handler_callback($data, $callback) {
global $CFG; global $CFG;
if (boolval($callback->enable)) { if ((bool) $callback->enable && !empty($callback->events[$data['eventname']])) {
if (!empty($callback->events[$data["eventname"]])) {
$urlparse = parse_url($CFG->wwwroot); $urlparse = parse_url($CFG->wwwroot);
$data["host"] = $urlparse['host']; $data['host'] = $urlparse['host'];
$data["token"] = $callback->token; $data['token'] = $callback->token;
$data["extra"] = $callback->other; $data['extra'] = $callback->other;
self::send($data, $callback); self::send($data, $callback);
} }
} }
}
/** /**
* Sending data to the node. * Sending data to the node.
* *
* @param array $data * @param array $data
* @param object $callback * @param object $callback
*
* @return array
* @throws \coding_exception
* @throws \dml_exception
*/ */
private static function send($data, $callback) { private static function send($data, $callback) {
$curl = new \curl(); $curl = new curl();
$curl->setHeader(array("Content-Type: application/" . $callback->type)); $curl->setHeader(array('Content-Type: application/' . $callback->type));
$curl->post($callback->url, json_encode($data)); $curl->post($callback->url, json_encode($data));
$response = $curl->getResponse(); $response = $curl->getResponse();
\local_webhooks_events::response_answer($callback->id, $response); local_webhooks_events::response_answer($callback->id, $response);
return $response; return $response;
} }
} }

View File

@ -24,7 +24,7 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
require_once($CFG->libdir . "/formslib.php"); require_once($CFG->libdir . '/formslib.php');
/** /**
* Description editing form definition. * Description editing form definition.
@ -42,63 +42,65 @@ class service_edit_form extends moodleform {
/** /**
* Defines the standard structure of the form. * Defines the standard structure of the form.
*
* @throws \coding_exception
*/ */
protected function definition() { protected function definition() {
$mform =& $this->_form; $mform =& $this->_form;
$size = array("size" => 60); $size = array('size' => 60);
/* Form heading */ /* Form heading */
$mform->addElement("header", "editserviceheader", new lang_string("service", "webservice")); $mform->addElement('header', 'editserviceheader', new lang_string('service', 'webservice'));
/* Name of the service */ /* Name of the service */
$mform->addElement("text", "title", new lang_string("name", "moodle"), $size); $mform->addElement('text', 'title', new lang_string('name', 'moodle'), $size);
$mform->addRule("title", null, "required"); $mform->addRule('title', null, 'required');
$mform->setType("title", PARAM_NOTAGS); $mform->setType('title', PARAM_NOTAGS);
/* Callback address */ /* Callback address */
$mform->addElement("text", "url", new lang_string("url", "moodle"), $size); $mform->addElement('text', 'url', new lang_string('url', 'moodle'), $size);
$mform->addRule("url", null, "required"); $mform->addRule('url', null, 'required');
$mform->setType("url", PARAM_URL); $mform->setType('url', PARAM_URL);
/* Enabling the service */ /* Enabling the service */
$mform->addElement("advcheckbox", "enable", new lang_string("enable", "moodle")); $mform->addElement('advcheckbox', 'enable', new lang_string('enable', 'moodle'));
$mform->setType("enable", PARAM_BOOL); $mform->setType('enable', PARAM_BOOL);
$mform->setDefault("enable", 1); $mform->setDefault('enable', 1);
$mform->setAdvanced("enable"); $mform->setAdvanced('enable');
/* Token */ /* Token */
$mform->addElement("text", "token", new lang_string("token", "webservice"), $size); $mform->addElement('text', 'token', new lang_string('token', 'webservice'), $size);
$mform->setType("token", PARAM_NOTAGS); $mform->setType('token', PARAM_NOTAGS);
/* Additional information */ /* Additional information */
$mform->addElement("text", "other", new lang_string("sourceext", "plugin"), $size); $mform->addElement('text', 'other', new lang_string('sourceext', 'plugin'), $size);
$mform->setType("other", PARAM_NOTAGS); $mform->setType('other', PARAM_NOTAGS);
$mform->setAdvanced("other"); $mform->setAdvanced('other');
/* Content type */ /* Content type */
$contenttype = array("json" => "application/json", "x-www-form-urlencoded" => "application/x-www-form-urlencoded"); $contenttype = array('json' => 'application/json', 'x-www-form-urlencoded' => 'application/x-www-form-urlencoded');
$mform->addElement("select", "type", "Content type", $contenttype); $mform->addElement('select', 'type', 'Content type', $contenttype);
$mform->setAdvanced("type"); $mform->setAdvanced('type');
/* Form heading */ /* Form heading */
$mform->addElement("header", "editserviceheaderevent", new lang_string("edulevel", "moodle")); $mform->addElement('header', 'editserviceheaderevent', new lang_string('edulevel', 'moodle'));
/* List of events */ /* List of events */
$eventlist = report_eventlist_list_generator::get_all_events_list(true); $eventlist = report_eventlist_list_generator::get_all_events_list();
$events = array(); $events = array();
/* Formation of the list of elements */ /* Formation of the list of elements */
foreach ($eventlist as $event) { foreach ($eventlist as $event) {
$events[$event["component"]][] =& $mform->createElement("checkbox", $event["eventname"], $event["eventname"]); $events[$event['component']][] =& $mform->createElement('checkbox', $event['eventname'], $event['eventname']);
} }
/* Displays groups of items */ /* Displays groups of items */
foreach ($events as $key => $event) { foreach ($events as $key => $event) {
$mform->addGroup($event, "events", $key, "<br />", true); $mform->addGroup($event, 'events', $key, '<br />');
} }
/* Control Panel */ /* Control Panel */
$this->add_action_buttons(true); $this->add_action_buttons();
} }
} }
@ -118,18 +120,20 @@ class service_backup_form extends moodleform {
/** /**
* Defines the standard structure of the form. * Defines the standard structure of the form.
*
* @throws \coding_exception
*/ */
protected function definition() { protected function definition() {
$mform =& $this->_form; $mform =& $this->_form;
/* Form heading */ /* Form heading */
$mform->addElement("header", "editserviceheader", new lang_string("restore", "moodle")); $mform->addElement('header', 'editserviceheader', new lang_string('restore', 'moodle'));
/* Download the file */ /* Download the file */
$mform->addElement("filepicker", "backupfile", new lang_string("file", "moodle")); $mform->addElement('filepicker', 'backupfile', new lang_string('file', 'moodle'));
$mform->addRule("backupfile", null, "required"); $mform->addRule('backupfile', null, 'required');
/* Control Panel */ /* Control Panel */
$this->add_action_buttons(true, new lang_string("restore", "moodle")); $this->add_action_buttons(true, new lang_string('restore', 'moodle'));
} }
} }

View File

@ -26,10 +26,10 @@ defined('MOODLE_INTERNAL') || die();
$observers = array( $observers = array(
array( array(
"callback" => "\local_webhooks\\handler::events", 'callback' => '\local_webhooks\handler::events',
"eventname" => "*", 'eventname' => '*',
"includefile" => null, 'includefile' => null,
"internal" => true, 'internal' => true,
"priority" => 200 'priority' => 200,
) ),
); );

View File

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<XMLDB PATH="local/webhooks/db" VERSION="2018061900" COMMENT="XMLDB file for Moodle" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd"> <XMLDB PATH="local/webhooks/db" VERSION="2018061900" 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>

View File

@ -22,22 +22,22 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
require_once(__DIR__ . "/../../config.php"); require_once(__DIR__ . '/../../config.php');
require_once(__DIR__ . "/classes/service_form.php"); require_once(__DIR__ . '/classes/service_form.php');
require_once(__DIR__ . "/lib.php"); require_once(__DIR__ . '/lib.php');
require_once($CFG->libdir . "/adminlib.php"); require_once($CFG->libdir . '/adminlib.php');
/* Optional parameters */ /* Optional parameters */
$serviceid = optional_param("serviceid", 0, PARAM_INT); $serviceid = optional_param('serviceid', 0, PARAM_INT);
/* Link generation */ /* Link generation */
$urlparameters = array("serviceid" => $serviceid); $urlparameters = array('serviceid' => $serviceid);
$baseurl = new moodle_url("/local/webhooks/editservice.php", $urlparameters); $baseurl = new moodle_url('/local/webhooks/editservice.php', $urlparameters);
$managerservice = new moodle_url("/local/webhooks/index.php"); $managerservice = new moodle_url('/local/webhooks/index.php');
/* Configure the context of the page */ /* Configure the context of the page */
admin_externalpage_setup("local_webhooks", "", null, $baseurl, array()); admin_externalpage_setup('local_webhooks', '', null, $baseurl);
$context = context_system::instance(); $context = context_system::instance();
/* Create an editing form */ /* Create an editing form */
@ -50,7 +50,7 @@ if ($mform->is_cancelled()) {
/* Getting the data */ /* Getting the data */
$servicerecord = new stdClass(); $servicerecord = new stdClass();
if ($editing = boolval($serviceid)) { if ($editing = (bool) $serviceid) {
$servicerecord = local_webhooks_get_record($serviceid); $servicerecord = local_webhooks_get_record($serviceid);
$mform->set_data($servicerecord); $mform->set_data($servicerecord);
} }
@ -60,15 +60,15 @@ if ($data = $mform->get_data()) {
if ($editing) { if ($editing) {
$data->id = $serviceid; $data->id = $serviceid;
local_webhooks_update_record($data, false); local_webhooks_update_record($data, false);
redirect($managerservice, new lang_string("eventwebserviceserviceupdated", "webservice")); redirect($managerservice, new lang_string('eventwebserviceserviceupdated', 'webservice'));
} else { } else {
local_webhooks_update_record($data, true); local_webhooks_update_record($data);
redirect($managerservice, new lang_string("eventwebserviceservicecreated", "webservice")); redirect($managerservice, new lang_string('eventwebserviceservicecreated', 'webservice'));
} }
} }
/* The page title */ /* The page title */
$titlepage = new lang_string("externalservice", "webservice"); $titlepage = new lang_string('externalservice', 'webservice');
$PAGE->navbar->add($titlepage); $PAGE->navbar->add($titlepage);
$PAGE->set_heading($titlepage); $PAGE->set_heading($titlepage);
$PAGE->set_title($titlepage); $PAGE->set_title($titlepage);

View File

@ -22,93 +22,107 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
require_once(__DIR__ . "/../../config.php"); require_once(__DIR__ . '/../../config.php');
require_once(__DIR__ . "/lib.php"); require_once(__DIR__ . '/lib.php');
require_once($CFG->libdir . "/adminlib.php"); require_once($CFG->libdir . '/adminlib.php');
require_once($CFG->libdir . "/tablelib.php"); require_once($CFG->libdir . '/tablelib.php');
/* Optional parameters */ /* Optional parameters */
$backupservices = optional_param("getbackup", 0, PARAM_BOOL); $backupservices = optional_param('getbackup', 0, PARAM_BOOL);
$deleteid = optional_param("deleteid", 0, PARAM_INT); $deleteid = optional_param('deleteid', 0, PARAM_INT);
$hideshowid = optional_param("hideshowid", 0, PARAM_INT); $hideshowid = optional_param('hideshowid', 0, PARAM_INT);
/* Link generation */ /* Link generation */
$editservice = "/local/webhooks/editservice.php"; $editservice = '/local/webhooks/editservice.php';
$managerservice = "/local/webhooks/index.php"; $managerservice = '/local/webhooks/index.php';
$restorebackup = "/local/webhooks/restorebackup.php"; $restorebackup = '/local/webhooks/restorebackup.php';
$baseurl = new moodle_url($managerservice); $baseurl = new moodle_url($managerservice);
/* Configure the context of the page */ /* Configure the context of the page */
admin_externalpage_setup("local_webhooks", "", null, $baseurl, array()); admin_externalpage_setup('local_webhooks', '', null, $baseurl);
$context = context_system::instance(); $context = context_system::instance();
/* Delete the service */ /* Delete the service */
if (boolval($deleteid)) { if ((bool) $deleteid) {
local_webhooks_remove_record($deleteid); local_webhooks_remove_record($deleteid);
redirect($PAGE->url, new lang_string("eventwebserviceservicedeleted", "webservice")); redirect($PAGE->url, new lang_string('eventwebserviceservicedeleted', 'webservice'));
} }
/* Retrieving a list of services */ /* Retrieving a list of services */
$callbacks = local_webhooks_get_list_records(); $callbacks = local_webhooks_get_list_records();
/* Upload settings as a file */ /* Upload settings as a file */
if (boolval($backupservices)) { if ((bool) $backupservices) {
$filecontent = local_webhooks_create_backup(); $filecontent = local_webhooks_create_backup();
$filename = "webhooks_" . date("U") . ".backup"; $filename = 'webhooks_' . date('U') . '.backup';
send_file($filecontent, $filename, 0, 0, true, true); send_file($filecontent, $filename, 0, 0, true, true);
} }
/* Switching the status of the service */ /* Switching the status of the service */
if (boolval($hideshowid)) { if ((bool) $hideshowid) {
$callback = $callbacks[$hideshowid]; $callback = $callbacks[$hideshowid];
if (!empty($callback)) { if (!empty($callback)) {
$callback->enable = !boolval($callback->enable); $callback->enable = !(bool) $callback->enable;
local_webhooks_update_record($callback, false); local_webhooks_update_record($callback, false);
redirect($PAGE->url, new lang_string("eventwebserviceserviceupdated", "webservice")); redirect($PAGE->url, new lang_string('eventwebserviceserviceupdated', 'webservice'));
} }
} }
/* The page title */ /* The page title */
$titlepage = new lang_string("pluginname", "local_webhooks"); $titlepage = new lang_string('pluginname', 'local_webhooks');
$PAGE->set_heading($titlepage); $PAGE->set_heading($titlepage);
$PAGE->set_title($titlepage); $PAGE->set_title($titlepage);
echo $OUTPUT->header(); echo $OUTPUT->header();
/* Table declaration */ /* Table declaration */
$table = new flexible_table("webhooks-service-table"); $table = new flexible_table('webhooks-service-table');
/* Customize the table */ /* Customize the table */
$table->define_columns(array("title", "url", "actions")); $table->define_columns(
$table->define_headers(array(new lang_string("name", "moodle"), new lang_string("url", "moodle"), new lang_string("actions", "moodle"))); array(
'title',
'url',
'actions',
)
);
$table->define_headers(
array(
new lang_string('name', 'moodle'),
new lang_string('url', 'moodle'),
new lang_string('actions', 'moodle'),
)
);
$table->define_baseurl($baseurl); $table->define_baseurl($baseurl);
$table->setup(); $table->setup();
foreach ($callbacks as $callback) { foreach ($callbacks as $callback) {
/* Filling of information columns */ /* Filling of information columns */
$titlecallback = html_writer::div($callback->title, "title"); $titlecallback = html_writer::div($callback->title, 'title');
$urlcallback = html_writer::div($callback->url, "url"); $urlcallback = html_writer::div($callback->url, 'url');
/* Defining service status */ /* Defining service status */
$hideshowicon = "t/show"; $hideshowicon = 't/show';
$hideshowstring = new lang_string("enable", "moodle"); $hideshowstring = new lang_string('enable', 'moodle');
if (boolval($callback->enable)) { if ((bool) $callback->enable) {
$hideshowicon = "t/hide"; $hideshowicon = 't/hide';
$hideshowstring = new lang_string("disable", "moodle"); $hideshowstring = new lang_string('disable', 'moodle');
} }
/* Link to enable / disable the service */ /* Link to enable / disable the service */
$hideshowlink = new moodle_url($managerservice, array("hideshowid" => $callback->id)); $hideshowlink = new moodle_url($managerservice, array('hideshowid' => $callback->id));
$hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($hideshowicon, $hideshowstring)); $hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($hideshowicon, $hideshowstring));
/* Link for editing */ /* Link for editing */
$editlink = new moodle_url($editservice, array("serviceid" => $callback->id)); $editlink = new moodle_url($editservice, array('serviceid' => $callback->id));
$edititem = $OUTPUT->action_icon($editlink, new pix_icon("t/edit", new lang_string("edit", "moodle"))); $edititem = $OUTPUT->action_icon($editlink, new pix_icon('t/edit', new lang_string('edit', 'moodle')));
/* Link to remove */ /* Link to remove */
$deletelink = new moodle_url($managerservice, array("deleteid" => $callback->id)); $deletelink = new moodle_url($managerservice, array('deleteid' => $callback->id));
$deleteitem = $OUTPUT->action_icon($deletelink, new pix_icon("t/delete", new lang_string("delete", "moodle"))); $deleteitem = $OUTPUT->action_icon($deletelink, new pix_icon('t/delete', new lang_string('delete', 'moodle')));
/* Adding data to the table */ /* Adding data to the table */
$table->add_data(array($titlecallback, $urlcallback, $hideshowitem . $edititem . $deleteitem)); $table->add_data(array($titlecallback, $urlcallback, $hideshowitem . $edititem . $deleteitem));
@ -119,14 +133,14 @@ $table->print_html();
/* Add service button */ /* Add service button */
$addserviceurl = new moodle_url($editservice); $addserviceurl = new moodle_url($editservice);
echo $OUTPUT->single_button($addserviceurl, new lang_string("addaservice", "webservice"), "get"); echo $OUTPUT->single_button($addserviceurl, new lang_string('addaservice', 'webservice'), 'get');
/* Button to get a backup */ /* Button to get a backup */
$backupurl = new moodle_url($managerservice, array("getbackup" => true)); $backupurl = new moodle_url($managerservice, array('getbackup' => true));
echo $OUTPUT->single_button($backupurl, new lang_string("backup", "moodle"), "get"); echo $OUTPUT->single_button($backupurl, new lang_string('backup', 'moodle'), 'get');
/* Button for restoring settings */ /* Button for restoring settings */
$restorebackupurl = new moodle_url($restorebackup); $restorebackupurl = new moodle_url($restorebackup);
echo $OUTPUT->single_button($restorebackupurl, new lang_string("restore", "moodle"), "get"); echo $OUTPUT->single_button($restorebackupurl, new lang_string('restore', 'moodle'), 'get');
echo $OUTPUT->footer(); echo $OUTPUT->footer();

View File

@ -22,4 +22,4 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
$string["pluginname"] = "WebHooks"; $string['pluginname'] = 'WebHooks';

62
lib.php
View File

@ -24,19 +24,21 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
require_once(__DIR__ . "/locallib.php"); require_once(__DIR__ . '/locallib.php');
/** /**
* Getting a list of all services. * Getting a list of all services.
* *
* @param number $limitfrom * @param int $limitfrom
* @param number $limitnum * @param int $limitnum
*
* @return array * @return array
* @throws \dml_exception
*/ */
function local_webhooks_get_list_records($limitfrom = 0, $limitnum = 0) { function local_webhooks_get_list_records($limitfrom = 0, $limitnum = 0) {
global $DB; global $DB;
$listservices = $DB->get_records("local_webhooks_service", null, "id", "*", $limitfrom, $limitnum); $listservices = $DB->get_records('local_webhooks_service', null, 'id', '*', $limitfrom, $limitnum);
foreach ($listservices as $servicerecord) { foreach ($listservices as $servicerecord) {
if (!empty($servicerecord->events)) { if (!empty($servicerecord->events)) {
@ -50,13 +52,15 @@ function local_webhooks_get_list_records($limitfrom = 0, $limitnum = 0) {
/** /**
* Getting information about the service. * Getting information about the service.
* *
* @param number $serviceid * @param int $serviceid
*
* @return object * @return object
* @throws \dml_exception
*/ */
function local_webhooks_get_record($serviceid = 0) { function local_webhooks_get_record($serviceid = 0) {
global $DB; global $DB;
$servicerecord = $DB->get_record("local_webhooks_service", array("id" => $serviceid), "*", MUST_EXIST); $servicerecord = $DB->get_record('local_webhooks_service', array('id' => $serviceid), '*', MUST_EXIST);
if (!empty($servicerecord->events)) { if (!empty($servicerecord->events)) {
$servicerecord->events = local_webhooks_unarchive_data($servicerecord->events); $servicerecord->events = local_webhooks_unarchive_data($servicerecord->events);
@ -67,22 +71,27 @@ function local_webhooks_get_record($serviceid = 0) {
/** /**
* Clear the database table. * Clear the database table.
*
* @throws \dml_exception
*/ */
function local_webhooks_remove_list_records() { function local_webhooks_remove_list_records() {
global $DB; global $DB;
$DB->delete_records("local_webhooks_service", null); $DB->delete_records('local_webhooks_service');
} }
/** /**
* Delete the record. * Delete the record.
* *
* @param number $serviceid * @param int $serviceid
*
* @throws \dml_exception
* @throws \coding_exception
*/ */
function local_webhooks_remove_record($serviceid = 0) { function local_webhooks_remove_record($serviceid = 0) {
global $DB; global $DB;
$DB->delete_records("local_webhooks_service", array("id" => $serviceid)); $DB->delete_records('local_webhooks_service', array('id' => $serviceid));
local_webhooks_events::service_deleted($serviceid); local_webhooks_events::service_deleted($serviceid);
} }
@ -91,7 +100,10 @@ function local_webhooks_remove_record($serviceid = 0) {
* *
* @param object $data * @param object $data
* @param boolean $insert * @param boolean $insert
*
* @return boolean * @return boolean
* @throws \dml_exception
* @throws \coding_exception
*/ */
function local_webhooks_update_record($data, $insert = true) { function local_webhooks_update_record($data, $insert = true) {
global $DB; global $DB;
@ -102,41 +114,47 @@ function local_webhooks_update_record($data, $insert = true) {
$data->events = local_webhooks_archiving_data($data->events); $data->events = local_webhooks_archiving_data($data->events);
if (boolval($insert)) { if ((bool) $insert) {
$result = $DB->insert_record("local_webhooks_service", $data, true, false); $result = $DB->insert_record('local_webhooks_service', $data);
local_webhooks_events::service_added($result); local_webhooks_events::service_added($result);
} else { } else {
$result = $DB->update_record("local_webhooks_service", $data, false); $result = $DB->update_record('local_webhooks_service', $data);
local_webhooks_events::service_updated($data->id); local_webhooks_events::service_updated($data->id);
} }
return boolval($result); return (bool) $result;
} }
/** /**
* Make a backup copy of all the services. * Make a backup copy of all the services.
* *
* @return string * @return string
* @throws \dml_exception
* @throws \coding_exception
*/ */
function local_webhooks_create_backup() { function local_webhooks_create_backup() {
$listservices = local_webhooks_get_list_records(); $listservices = local_webhooks_get_list_records();
$listservices = local_webhooks_archiving_data($listservices); $listservices = local_webhooks_archiving_data($listservices);
local_webhooks_events::backup_performed(); local_webhooks_events::backup_performed();
return $listservices; return $listservices;
} }
/** /**
* Restore the data from the backup. * Restore the data from the backup.
* *
* @param string $data * @param string $listservices
*
* @throws \dml_exception
* @throws \coding_exception
*/ */
function local_webhooks_restore_backup($listservices = "") { function local_webhooks_restore_backup($listservices = '') {
$listservices = local_webhooks_unarchive_data($listservices); $listservices = local_webhooks_unarchive_data($listservices);
local_webhooks_remove_list_records(); local_webhooks_remove_list_records();
foreach ($listservices as $servicerecord) { foreach ($listservices as $servicerecord) {
local_webhooks_update_record($servicerecord, true); local_webhooks_update_record($servicerecord);
} }
local_webhooks_events::backup_restored(); local_webhooks_events::backup_restored();
@ -146,20 +164,20 @@ function local_webhooks_restore_backup($listservices = "") {
* Compress an array into a string. * Compress an array into a string.
* *
* @param array $data * @param array $data
*
* @return string * @return string
*/ */
function local_webhooks_archiving_data($data = array()) { function local_webhooks_archiving_data(array $data = array()) {
$result = base64_encode(gzcompress(serialize($data), 3)); return base64_encode(gzcompress(serialize($data), 3));
return $result;
} }
/** /**
* Gets an array from a compressed string. * Gets an array from a compressed string.
* *
* @param string $data * @param string $data
*
* @return array * @return array
*/ */
function local_webhooks_unarchive_data($data = "") { function local_webhooks_unarchive_data($data = '') {
$result = unserialize(gzuncompress(base64_decode($data))); return unserialize(gzuncompress(base64_decode($data)));
return $result;
} }

View File

@ -33,14 +33,17 @@ defined('MOODLE_INTERNAL') || die();
class local_webhooks_events { class local_webhooks_events {
/** /**
* Call the event when creating a backup. * Call the event when creating a backup.
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function backup_performed() { public static function backup_performed() {
$context = context_system::instance(); $context = context_system::instance();
$event = local_webhooks\event\backup_performed::create( $event = local_webhooks\event\backup_performed::create(
array( array(
"context" => $context, 'context' => $context,
"objectid" => 0 'objectid' => 0,
) )
); );
@ -49,14 +52,17 @@ class local_webhooks_events {
/** /**
* Call the event when restoring from a backup. * Call the event when restoring from a backup.
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function backup_restored() { public static function backup_restored() {
$context = context_system::instance(); $context = context_system::instance();
$event = local_webhooks\event\backup_restored::create( $event = local_webhooks\event\backup_restored::create(
array( array(
"context" => $context, 'context' => $context,
"objectid" => 0 'objectid' => 0,
) )
); );
@ -66,22 +72,25 @@ class local_webhooks_events {
/** /**
* Call event when the response is received from the service * Call event when the response is received from the service
* *
* @param number $objectid Service ID * @param int $objectid Service ID
* @param array $response Server response * @param array $response Server response
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function response_answer($objectid = 0, $response = array()) { public static function response_answer($objectid = 0, array $response = array()) {
$context = context_system::instance(); $context = context_system::instance();
$status = "Error sending request"; $status = 'Error sending request';
if (!empty($response["HTTP/1.1"])) { if (!empty($response['HTTP/1.1'])) {
$status = $response["HTTP/1.1"]; $status = $response['HTTP/1.1'];
} }
$event = local_webhooks\event\response_answer::create( $event = local_webhooks\event\response_answer::create(
array( array(
"context" => $context, 'context' => $context,
"objectid" => $objectid, 'objectid' => $objectid,
"other" => array("status" => $status) 'other' => array('status' => $status),
) )
); );
@ -91,16 +100,16 @@ class local_webhooks_events {
/** /**
* Call the event when the service is added. * Call the event when the service is added.
* *
* @param number $objectid Service ID * @param int $objectid Service ID
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function service_added($objectid = 0) { public static function service_added($objectid = 0) {
$context = context_system::instance(); $context = context_system::instance();
$event = local_webhooks\event\service_added::create( $event = local_webhooks\event\service_added::create(
array( compact('context', 'objectid')
"context" => $context,
"objectid" => $objectid
)
); );
$event->trigger(); $event->trigger();
@ -109,16 +118,16 @@ class local_webhooks_events {
/** /**
* Call the event when the service is deleted. * Call the event when the service is deleted.
* *
* @param number $objectid Service ID * @param int $objectid Service ID
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function service_deleted($objectid = 0) { public static function service_deleted($objectid = 0) {
$context = context_system::instance(); $context = context_system::instance();
$event = local_webhooks\event\service_deleted::create( $event = local_webhooks\event\service_deleted::create(
array( compact('context', 'objectid')
"context" => $context,
"objectid" => $objectid
)
); );
$event->trigger(); $event->trigger();
@ -127,16 +136,16 @@ class local_webhooks_events {
/** /**
* Call event when the service is updated. * Call event when the service is updated.
* *
* @param number $objectid Service ID * @param int $objectid Service ID
*
* @throws \coding_exception
* @throws \dml_exception
*/ */
public static function service_updated($objectid = 0) { public static function service_updated($objectid = 0) {
$context = context_system::instance(); $context = context_system::instance();
$event = local_webhooks\event\service_updated::create( $event = local_webhooks\event\service_updated::create(
array( compact('context', 'objectid')
"context" => $context,
"objectid" => $objectid
)
); );
$event->trigger(); $event->trigger();

View File

@ -22,18 +22,18 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/ */
require_once(__DIR__ . "/../../config.php"); require_once(__DIR__ . '/../../config.php');
require_once(__DIR__ . "/classes/service_form.php"); require_once(__DIR__ . '/classes/service_form.php');
require_once(__DIR__ . "/lib.php"); require_once(__DIR__ . '/lib.php');
require_once($CFG->libdir . "/adminlib.php"); require_once($CFG->libdir . '/adminlib.php');
/* Link generation */ /* Link generation */
$baseurl = new moodle_url("/local/webhooks/restorebackup.php"); $baseurl = new moodle_url('/local/webhooks/restorebackup.php');
$managerservice = new moodle_url("/local/webhooks/index.php"); $managerservice = new moodle_url('/local/webhooks/index.php');
/* Configure the context of the page */ /* Configure the context of the page */
admin_externalpage_setup("local_webhooks", "", null, $baseurl, array()); admin_externalpage_setup('local_webhooks', '', null, $baseurl);
$context = context_system::instance(); $context = context_system::instance();
/* Create an editing form */ /* Create an editing form */
@ -46,13 +46,13 @@ if ($mform->is_cancelled()) {
/* Processing the received file */ /* Processing the received file */
if ($data = $mform->get_data()) { if ($data = $mform->get_data()) {
$content = $mform->get_file_content("backupfile"); $content = $mform->get_file_content('backupfile');
local_webhooks_restore_backup($content); local_webhooks_restore_backup($content);
redirect($managerservice, new lang_string("restorefinished", "moodle")); redirect($managerservice, new lang_string('restorefinished', 'moodle'));
} }
/* The page title */ /* The page title */
$titlepage = new lang_string("backup", "moodle"); $titlepage = new lang_string('backup', 'moodle');
$PAGE->navbar->add($titlepage); $PAGE->navbar->add($titlepage);
$PAGE->set_heading($titlepage); $PAGE->set_heading($titlepage);
$PAGE->set_title($titlepage); $PAGE->set_title($titlepage);

View File

@ -24,9 +24,14 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
/** @var \admin_root $ADMIN */
if ($hassiteconfig) { if ($hassiteconfig) {
$ADMIN->add("server", new admin_externalpage("local_webhooks", $ADMIN->add(
new lang_string("pluginname", "local_webhooks"), 'server', new admin_externalpage(
new moodle_url("/local/webhooks/index.php") 'local_webhooks',
)); new lang_string('pluginname', 'local_webhooks'),
new moodle_url('/local/webhooks/index.php')
)
);
} }

View File

@ -24,8 +24,8 @@
defined('MOODLE_INTERNAL') || die(); defined('MOODLE_INTERNAL') || die();
$plugin->release = "3.0.1 (Build: 2018061900)"; $plugin->release = '3.0.1 (Build: 2018061900)';
$plugin->version = 2018061900; $plugin->version = 2018061900;
$plugin->requires = 2016112900; $plugin->requires = 2016112900;
$plugin->component = "local_webhooks"; $plugin->component = 'local_webhooks';
$plugin->maturity = MATURITY_STABLE; $plugin->maturity = MATURITY_STABLE;