Compare commits

..

No commits in common. "master" and "v4.0.0-rc.1" have entirely different histories.

14 changed files with 194 additions and 394 deletions

View File

@ -1,17 +0,0 @@
name: Workflow
on: [push]
jobs:
mirror:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: yesolutions/mirror-action@master
with:
REMOTE: 'https://git.popov.link/moodle/local_webhooks.git'
GIT_USERNAME: ${{ secrets.GIT_USERNAME }}
GIT_PASSWORD: ${{ secrets.GIT_PASSWORD }}

View File

@ -6,15 +6,25 @@ os: "linux"
php:
- 5.6
- 7.2
- 7.1
env:
- DB=pgsql MOODLE_BRANCH=MOODLE_26_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_27_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_28_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_29_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_30_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_31_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_32_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_33_STABLE
- DB=pgsql MOODLE_BRANCH=MOODLE_34_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_26_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_27_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_28_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_29_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_30_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_31_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_32_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_34_STABLE
before_install:
- cd ../..
@ -41,9 +51,9 @@ jobs:
stage: deploy
env:
- DB=mysqli MOODLE_BRANCH=MOODLE_34_STABLE
- DB=mysqli MOODLE_BRANCH=MOODLE_33_STABLE
php: 7.2
php: 7.1
before_deploy:
- cd $TRAVIS_REPO_SLUG

View File

@ -1,5 +1,8 @@
# Moodle WebHook's
[![GitHub Release](https://img.shields.io/github/release/valentineus/moodle-webhooks.svg)](https://github.com/valentineus/moodle-webhooks/releases)
[![Build Status](https://travis-ci.org/valentineus/moodle-webhooks.svg?branch=master)](https://travis-ci.org/valentineus/moodle-webhooks)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/376ab669f2d3436884015554f686a915)](https://www.codacy.com/app/valentineus/moodle-webhooks)
[![Gitter Badge](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/valentineus/moodle-webhooks)
Adding Webhooks to Moodle.
The Webhooks feature allows applications to receive real-time notification of changes to certain data.

View File

@ -26,7 +26,6 @@ namespace local_webhooks;
defined("MOODLE_INTERNAL") || die();
require_once(__DIR__ . "/../locallib.php");
require_once(__DIR__ . "/../lib.php");
/**
@ -44,13 +43,12 @@ class handler {
public static function events($event) {
$data = $event->get_data();
if (!is_array($recordlist = local_webhooks_cache_get($data["eventname"]))) {
$recordlist = local_webhooks_search_services_by_event($data["eventname"], true);
local_webhooks_cache_set($data["eventname"], $recordlist);
if ($callbacks = local_webhooks_get_list_records()) {
foreach ($callbacks as $callback) {
if (boolval($callback->enable) && !empty($callback->events[$data["eventname"]])) {
local_webhooks_send_request($data, $callback);
}
}
foreach ($recordlist as $record) {
local_webhooks_send_request($data, $record);
}
}
}

View File

@ -110,7 +110,7 @@ class local_webhooks_table extends table_sql {
$hideshowlink = new moodle_url(self::$manager, array("hideshowid" => $row->id, "sesskey" => sesskey()));
$hideshowitem = $OUTPUT->action_icon($hideshowlink, new pix_icon($hideshowicon, $hideshowstring));
$editlink = new moodle_url(self::$editor, array("serviceid" => $row->id, "sesskey" => sesskey()));
$editlink = new moodle_url(self::$editor, array("serviceid" => $row->id));
$edititem = $OUTPUT->action_icon($editlink, new pix_icon("t/edit", new lang_string("edit", "moodle")));
$deletelink = new moodle_url(self::$manager, array("deleteid" => $row->id, "sesskey" => sesskey()));
@ -138,7 +138,7 @@ class local_webhooks_table extends table_sql {
* @return string Displayed data.
*/
public function col_title($row) {
$link = new moodle_url(self::$editor, array("serviceid" => $row->id, "sesskey" => sesskey()));
$link = new moodle_url(self::$editor, array("serviceid" => $row->id));
$html = html_writer::link($link, $row->title);
return $html;
}

View File

@ -1,31 +0,0 @@
<?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/>.
/**
* Definition of the plug-in cache.
*
* @package local_webhooks
* @copyright 2017 "Valentin Popov" <info@valentineus.link>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$definitions = array(
"webhooks_services" => array(
"mode" => cache_store::MODE_APPLICATION,
"requiredataguarantee" => true,
"staticacceleration" => true
)
);

View File

@ -33,14 +33,6 @@ $functions = array(
"type" => "write"
),
"local_webhooks_search_services_by_event" => array(
"classname" => "local_webhooks_external",
"methodname" => "search_services_by_event",
"classpath" => "local/webhooks/externallib.php",
"description" => "Search for services that contain the specified event.",
"type" => "read"
),
"local_webhooks_get_record" => array(
"classname" => "local_webhooks_external",
"methodname" => "get_record",

View File

@ -56,7 +56,7 @@ if ($editing = boolval($serviceid)) {
}
/* Processing of received data */
if (($data = $mform->get_data()) && confirm_sesskey()) {
if ($data = $mform->get_data()) {
if ($editing) {
$data->id = $serviceid;
local_webhooks_update_record($data);

View File

@ -35,68 +35,6 @@ require_once($CFG->libdir . "/externallib.php");
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class local_webhooks_external extends external_api {
/**
* Single template output parameters.
*
* @return external_description
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
private static function structure_record_parameters() {
return new external_single_structure(
array(
"id" => new external_value(PARAM_INT, "Service ID."),
"enable" => new external_value(PARAM_BOOL, "Enable or disable the service."),
"title" => new external_value(PARAM_TEXT, "Name of the service."),
"url" => new external_value(PARAM_URL, "Web address of the service."),
"type" => new external_value(PARAM_TEXT, "Used header type."),
"token" => new external_value(PARAM_RAW, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_RAW, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "The name of the event."),
"value" => new external_value(PARAM_BOOL, "Enabled or disabled handler.")
)
), "List of observed events.", VALUE_OPTIONAL
)
), "Information about the service."
);
}
/**
* Formation of the final list.
*
* @param array $listrecords
* @return array
*/
private static function formation_list($listrecords) {
$result = array();
foreach ($listrecords as $index => $record) {
$result[$index] = (array) $record;
$result[$index]["events"] = self::formation_events($record->events);
}
return $result;
}
/**
* Formation of the final list of events.
*
* @param array $listevents
* @return array
*/
private static function formation_events($listevents) {
$result = array();
foreach ($listevents as $key => $value) {
$result[] = array("name" => $key, "value" => $value);
}
return $result;
}
/**
* Returns description of method parameters.
*
@ -107,7 +45,7 @@ class local_webhooks_external extends external_api {
public static function change_status_parameters() {
return new external_function_parameters(
array(
"serviceid" => new external_value(PARAM_INT, "Service ID.")
"serviceid" => new external_value(PARAM_INT, "Service identifier.")
)
);
}
@ -120,62 +58,13 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function change_status($serviceid) {
public static function change_status($serviceid = 0) {
$parameters = self::validate_parameters(self::change_status_parameters(), array("serviceid" => $serviceid));
$context = context_system::instance();
self::validate_context($context);
return local_webhooks_change_status($parameters["serviceid"]);
}
/**
* Returns description of method result value.
*
* @return external_description
* @since Moodle 2.2
*/
public static function change_status_returns() {
return new external_value(PARAM_BOOL, "Result of execution.");
}
/**
* Returns description of method parameters.
*
* @return external_function_parameters
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function search_services_by_event_parameters() {
return new external_function_parameters(
array(
"eventname" => new external_value(PARAM_TEXT, "The name of the event."),
"active" => new external_value(PARAM_BOOL, "Filter show active or all services.")
)
);
}
/**
* Search for services that contain the specified event.
*
* @param string $eventname
* @param boolean $active
* @return array
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function search_services_by_event($eventname, $active) {
$parameters = self::validate_parameters(self::search_services_by_event_parameters(), array("eventname" => $eventname, "active" => $active));
$context = context_system::instance();
self::validate_context($context);
$result = array();
if ($listrecords = local_webhooks_search_services_by_event($parameters["eventname"], $parameters["active"])) {
$result = self::formation_list($listrecords);
}
$result = local_webhooks_change_status($parameters["serviceid"]);
return $result;
}
@ -185,10 +74,8 @@ class local_webhooks_external extends external_api {
* @return external_description
* @since Moodle 2.2
*/
public static function search_services_by_event_returns() {
return new external_multiple_structure(
self::structure_record_parameters(), "List of services."
);
public static function change_status_returns() {
return new external_value(PARAM_BOOL, "The result of the operation.");
}
/**
@ -201,7 +88,7 @@ class local_webhooks_external extends external_api {
public static function get_record_parameters() {
return new external_function_parameters(
array(
"serviceid" => new external_value(PARAM_INT, "Service ID.")
"serviceid" => new external_value(PARAM_INT, "Service identifier.")
)
);
}
@ -214,20 +101,29 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function get_record($serviceid) {
public static function get_record($serviceid = 0) {
$parameters = self::validate_parameters(self::get_record_parameters(), array("serviceid" => $serviceid));
$context = context_system::instance();
self::validate_context($context);
$result = array();
$service = array();
if ($record = local_webhooks_get_record($parameters["serviceid"])) {
$result = (array) $record;
$result["events"] = self::formation_events($record->events);
$service["enable"] = $record->enable;
$service["id"] = $record->id;
$service["other"] = $record->other;
$service["title"] = $record->title;
$service["token"] = $record->token;
$service["type"] = $record->type;
$service["url"] = $record->url;
$service["events"] = array();
foreach ($record->events as $key => $value) {
$service["events"][] = array("name" => $key, "value" => $value);
}
}
return $result;
return $service;
}
/**
@ -237,7 +133,25 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function get_record_returns() {
return self::structure_record_parameters();
return new external_single_structure(
array(
"id" => new external_value(PARAM_INT, "Service identifier."),
"enable" => new external_value(PARAM_INT, "Service status."),
"title" => new external_value(PARAM_TEXT, "Name of the service."),
"url" => new external_value(PARAM_URL, "URL address."),
"type" => new external_value(PARAM_TEXT, "Header type."),
"token" => new external_value(PARAM_TEXT, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_TEXT, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "Event name."),
"value" => new external_value(PARAM_INT, "Observation status.")
)
), "Observed events.", VALUE_OPTIONAL
)
), "Record about the service."
);
}
/**
@ -263,9 +177,21 @@ class local_webhooks_external extends external_api {
self::validate_context($context);
$result = array();
if ($listrecords = local_webhooks_get_list_records()) {
$result = self::formation_list($listrecords);
foreach ($listrecords as $index => $record) {
$result[$index]["enable"] = $record->enable;
$result[$index]["id"] = $record->id;
$result[$index]["other"] = $record->other;
$result[$index]["title"] = $record->title;
$result[$index]["token"] = $record->token;
$result[$index]["type"] = $record->type;
$result[$index]["url"] = $record->url;
$result[$index]["events"] = array();
foreach ($record->events as $key => $value) {
$result[$index]["events"][] = array("name" => $key, "value" => $value);
}
}
}
return $result;
@ -279,7 +205,25 @@ class local_webhooks_external extends external_api {
*/
public static function get_list_records_returns() {
return new external_multiple_structure(
self::structure_record_parameters(), "List of services."
new external_single_structure(
array(
"id" => new external_value(PARAM_INT, "Service identifier."),
"enable" => new external_value(PARAM_INT, "Service status."),
"title" => new external_value(PARAM_TEXT, "Name of the service."),
"url" => new external_value(PARAM_URL, "URL address."),
"type" => new external_value(PARAM_TEXT, "Header type."),
"token" => new external_value(PARAM_TEXT, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_TEXT, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "Event name."),
"value" => new external_value(PARAM_INT, "Observation status.")
)
), "Observed events.", VALUE_OPTIONAL
)
), "Record about the service."
), "List of services."
);
}
@ -306,7 +250,6 @@ class local_webhooks_external extends external_api {
self::validate_context($context);
$result = array();
if ($eventlist = local_webhooks_get_list_events()) {
foreach ($eventlist as $item) {
$result[] = $item["eventname"];
@ -324,7 +267,7 @@ class local_webhooks_external extends external_api {
*/
public static function get_list_events_returns() {
return new external_multiple_structure(
new external_value(PARAM_TEXT, "The name of the event.")
new external_value(PARAM_TEXT, "Event name.")
);
}
@ -340,21 +283,21 @@ class local_webhooks_external extends external_api {
array(
"service" => new external_single_structure(
array(
"enable" => new external_value(PARAM_BOOL, "Enable or disable the service.", VALUE_OPTIONAL),
"enable" => new external_value(PARAM_BOOL, "Service status.", VALUE_OPTIONAL),
"title" => new external_value(PARAM_TEXT, "Name of the service."),
"url" => new external_value(PARAM_URL, "Web address of the service."),
"type" => new external_value(PARAM_TEXT, "Used header type.", VALUE_OPTIONAL),
"token" => new external_value(PARAM_RAW, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_RAW, "Additional field.", VALUE_OPTIONAL),
"url" => new external_value(PARAM_URL, "URL address."),
"type" => new external_value(PARAM_TEXT, "Header type.", VALUE_OPTIONAL),
"token" => new external_value(PARAM_TEXT, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_TEXT, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "The name of the event."),
"value" => new external_value(PARAM_BOOL, "Enabled or disabled handler.")
"name" => new external_value(PARAM_TEXT, "Event name."),
"value" => new external_value(PARAM_INT, "Observation status.")
)
), "List of observed events.", VALUE_OPTIONAL
), "Observed events.", VALUE_OPTIONAL
)
), "Information about the service."
), "Record about the service."
)
)
);
@ -364,11 +307,11 @@ class local_webhooks_external extends external_api {
* Create an entry in the database.
*
* @param array $service
* @return boolean
* @return number
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function create_record($service) {
public static function create_record($service = array()) {
$parameters = self::validate_parameters(self::create_record_parameters(), array("service" => $service));
$context = context_system::instance();
@ -379,16 +322,17 @@ class local_webhooks_external extends external_api {
$record->title = $parameters["service"]["title"];
$record->token = $parameters["service"]["token"];
$record->url = $parameters["service"]["url"];
$record->events = array();
$record->enable = !empty($parameters["service"]["enable"]) ? $parameters["service"]["enable"] : false;
$record->type = !empty($parameters["service"]["type"]) ? $parameters["service"]["type"] : "json";
$record->events = array();
foreach ($parameters["service"]["events"] as $value) {
$record->events[$value["name"]] = $value["value"];
}
return local_webhooks_create_record($record);
$result = local_webhooks_create_record($record);
return $result;
}
/**
@ -398,7 +342,7 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function create_record_returns() {
return new external_value(PARAM_BOOL, "Result of execution.");
return new external_value(PARAM_INT, "Service identifier.");
}
/**
@ -411,24 +355,24 @@ class local_webhooks_external extends external_api {
public static function update_record_parameters() {
return new external_function_parameters(
array(
"id" => new external_value(PARAM_INT, "Service identifier."),
"service" => new external_single_structure(
array(
"id" => new external_value(PARAM_INT, "Service ID."),
"enable" => new external_value(PARAM_BOOL, "Enable or disable the service.", VALUE_OPTIONAL),
"enable" => new external_value(PARAM_BOOL, "Service status.", VALUE_OPTIONAL),
"title" => new external_value(PARAM_TEXT, "Name of the service.", VALUE_OPTIONAL),
"url" => new external_value(PARAM_URL, "Web address of the service.", VALUE_OPTIONAL),
"type" => new external_value(PARAM_TEXT, "Used header type.", VALUE_OPTIONAL),
"token" => new external_value(PARAM_RAW, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_RAW, "Additional field.", VALUE_OPTIONAL),
"url" => new external_value(PARAM_URL, "URL address.", VALUE_OPTIONAL),
"type" => new external_value(PARAM_TEXT, "Header type.", VALUE_OPTIONAL),
"token" => new external_value(PARAM_TEXT, "Authorization key.", VALUE_OPTIONAL),
"other" => new external_value(PARAM_TEXT, "Additional field.", VALUE_OPTIONAL),
"events" => new external_multiple_structure(
new external_single_structure(
array(
"name" => new external_value(PARAM_TEXT, "The name of the event."),
"value" => new external_value(PARAM_BOOL, "Enabled or disabled handler.")
"name" => new external_value(PARAM_TEXT, "Event name."),
"value" => new external_value(PARAM_INT, "Observation status.")
)
), "List of observed events.", VALUE_OPTIONAL
), "Observed events.", VALUE_OPTIONAL
)
), "Information about the service."
), "Record about the service."
)
)
);
@ -437,20 +381,20 @@ class local_webhooks_external extends external_api {
/**
* Update the record in the database.
*
* @param number $serviceid
* @param array $service
* @return boolean
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function update_record($service) {
$parameters = self::validate_parameters(self::update_record_parameters(), array("service" => $service));
public static function update_record($serviceid = 0, $service = array()) {
$parameters = self::validate_parameters(self::update_record_parameters(), array("id" => $serviceid, "service" => $service));
$context = context_system::instance();
self::validate_context($context);
$result = false;
if ($record = local_webhooks_get_record($parameters["service"]["id"])) {
if ($record = local_webhooks_get_record($parameters["id"])) {
$record->enable = !empty($parameters["service"]["enable"]) ? $parameters["service"]["enable"] : $record->enable;
$record->other = !empty($parameters["service"]["other"]) ? $parameters["service"]["other"] : $record->other;
$record->title = !empty($parameters["service"]["title"]) ? $parameters["service"]["title"] : $record->title;
@ -460,7 +404,6 @@ class local_webhooks_external extends external_api {
if (!empty($parameters["service"]["events"])) {
$record->events = array();
foreach ($parameters["service"]["events"] as $value) {
$record->events[$value["name"]] = $value["value"];
}
@ -479,7 +422,7 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function update_record_returns() {
return new external_value(PARAM_BOOL, "Result of execution.");
return new external_value(PARAM_BOOL, "The result of the operation.");
}
/**
@ -492,7 +435,7 @@ class local_webhooks_external extends external_api {
public static function delete_record_parameters() {
return new external_function_parameters(
array(
"serviceid" => new external_value(PARAM_INT, "Service ID.")
"serviceid" => new external_value(PARAM_INT, "Service identifier.")
)
);
}
@ -505,13 +448,14 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function delete_record($serviceid) {
public static function delete_record($serviceid = 0) {
$parameters = self::validate_parameters(self::delete_record_parameters(), array("serviceid" => $serviceid));
$context = context_system::instance();
self::validate_context($context);
return local_webhooks_delete_record($parameters["serviceid"]);
$result = local_webhooks_delete_record($parameters["serviceid"]);
return $result;
}
/**
@ -521,7 +465,7 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function delete_record_returns() {
return new external_value(PARAM_BOOL, "Result of execution.");
return new external_value(PARAM_BOOL, "The result of the operation.");
}
/**
@ -546,7 +490,8 @@ class local_webhooks_external extends external_api {
$context = context_system::instance();
self::validate_context($context);
return local_webhooks_delete_all_records();
$result = local_webhooks_delete_all_records();
return $result;
}
/**
@ -556,7 +501,7 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function delete_all_records_returns() {
return new external_value(PARAM_BOOL, "Result of execution.");
return new external_value(PARAM_BOOL, "The result of the operation.");
}
/**
@ -581,7 +526,8 @@ class local_webhooks_external extends external_api {
$context = context_system::instance();
self::validate_context($context);
return local_webhooks_create_backup();
$result = local_webhooks_create_backup();
return $result;
}
/**
@ -591,7 +537,7 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.2
*/
public static function create_backup_returns() {
return new external_value(PARAM_RAW, "Backup copy.");
return new external_value(PARAM_TEXT, "Backup copy.");
}
/**
@ -606,8 +552,8 @@ class local_webhooks_external extends external_api {
array(
"options" => new external_single_structure(
array(
"backup" => new external_value(PARAM_RAW, "Backup copy."),
"deleterecords" => new external_value(PARAM_BOOL, "Delete or leave all records.", VALUE_OPTIONAL)
"backup" => new external_value(PARAM_TEXT, "Backup copy."),
"deleterecords" => new external_value(PARAM_BOOL, "Delete existing records.", VALUE_OPTIONAL)
)
)
)
@ -621,13 +567,13 @@ class local_webhooks_external extends external_api {
* @since Moodle 2.9 Options available
* @since Moodle 2.2
*/
public static function restore_backup($options) {
public static function restore_backup($options = array()) {
$parameters = self::validate_parameters(self::restore_backup_parameters(), array("options" => $options));
$context = context_system::instance();
self::validate_context($context);
$deleterecords = !empty($parameters["options"]["deleterecords"]) ? $parameters["options"]["deleterecords"] : false;
$deleterecords = !empty($parameters["options"]["deleterecords"]) ? boolval($parameters["options"]["deleterecords"]) : false;
local_webhooks_restore_backup($parameters["options"]["backup"], $deleterecords);
}

View File

@ -76,7 +76,7 @@ $PAGE->set_title($titlepage);
echo $OUTPUT->header();
/* Adds the add button */
$addserviceurl = new moodle_url($editservice, array("sesskey" => sesskey()));
$addserviceurl = new moodle_url($editservice);
echo $OUTPUT->single_button($addserviceurl, new lang_string("add", "moodle"));
/* Adds a delete button */

90
lib.php
View File

@ -44,33 +44,6 @@ function local_webhooks_change_status($serviceid) {
return $result;
}
/**
* Search for services that contain the specified event.
*
* @param string $eventname
* @param boolean $active
* @return array
*/
function local_webhooks_search_services_by_event($eventname, $active = false) {
$recordlist = local_webhooks_get_list_records();
$active = boolval($active);
$result = array();
foreach ($recordlist as $record) {
if (!empty($record->events[$eventname])) {
if ($active && boolval($record->enable)) {
$result[] = $record;
}
if (!$active) {
$result[] = $record;
}
}
}
return $result;
}
/**
* Get the record from the database.
*
@ -116,14 +89,15 @@ function local_webhooks_get_list_records($limitfrom = 0, $limitnum = 0) {
* @return array
*/
function local_webhooks_get_list_events() {
return report_eventlist_list_generator::get_all_events_list(true);
$eventlist = report_eventlist_list_generator::get_all_events_list(true);
return $eventlist;
}
/**
* Create an entry in the database.
*
* @param object $record
* @return boolean
* @return number
*/
function local_webhooks_create_record($record) {
global $DB;
@ -133,14 +107,8 @@ function local_webhooks_create_record($record) {
}
$result = $DB->insert_record("local_webhooks_service", $record, true, false);
/* Clear the plugin cache */
local_webhooks_cache_reset();
/* Event notification */
local_webhooks_events::service_added($result);
return boolval($result);
return $result;
}
/**
@ -158,13 +126,7 @@ function local_webhooks_update_record($record) {
$record->events = !empty($record->events) ? local_webhooks_serialization_data($record->events) : null;
$result = $DB->update_record("local_webhooks_service", $record, false);
/* Clear the plugin cache */
local_webhooks_cache_reset();
/* Event notification */
local_webhooks_events::service_updated($record->id);
return boolval($result);
}
@ -176,15 +138,8 @@ function local_webhooks_update_record($record) {
*/
function local_webhooks_delete_record($serviceid) {
global $DB;
$result = $DB->delete_records("local_webhooks_service", array("id" => $serviceid));
/* Clear the plugin cache */
local_webhooks_cache_reset();
/* Event notification */
local_webhooks_events::service_deleted($serviceid);
return boolval($result);
}
@ -195,15 +150,8 @@ function local_webhooks_delete_record($serviceid) {
*/
function local_webhooks_delete_all_records() {
global $DB;
$result = $DB->delete_records("local_webhooks_service", null);
/* Clear the plugin cache */
local_webhooks_cache_reset();
/* Event notification */
local_webhooks_events::service_deletedall();
return boolval($result);
}
@ -215,10 +163,7 @@ function local_webhooks_delete_all_records() {
function local_webhooks_create_backup() {
$listrecords = local_webhooks_get_list_records();
$result = local_webhooks_serialization_data($listrecords);
/* Event notification */
local_webhooks_events::backup_performed();
return $result;
}
@ -238,7 +183,6 @@ function local_webhooks_restore_backup($data, $deleterecords = false) {
local_webhooks_create_record($servicerecord);
}
/* Event notification */
local_webhooks_events::backup_restored();
}
@ -259,10 +203,30 @@ function local_webhooks_send_request($event, $callback) {
$curl = new curl();
$curl->setHeader(array("Content-Type: application/" . $callback->type));
$curl->post($callback->url, json_encode($event));
$response = $curl->getResponse();
/* Event notification */
local_webhooks_events::response_answer($callback->id, $response);
return $response;
}
/**
* Data serialization.
*
* @param array|object $data
* @return string
*/
function local_webhooks_serialization_data($data) {
$result = serialize($data);
return $result;
}
/**
* Data deserialization.
*
* @param string $data
* @return array|object
*/
function local_webhooks_deserialization_data($data) {
$result = unserialize($data);
return $result;
}

View File

@ -24,70 +24,6 @@
defined("MOODLE_INTERNAL") || die();
/**
* Get data from the cache by key.
*
* @param string $eventname
* @return array
*/
function local_webhooks_cache_get($eventname) {
$cache = cache::make("local_webhooks", "webhooks_services");
return $cache->get($eventname);
}
/**
* Update the data in the cache by key.
*
* @param string $eventname
* @param array $recordlist
* @return boolean
*/
function local_webhooks_cache_set($eventname, $recordlist = array()) {
$cache = cache::make("local_webhooks", "webhooks_services");
return $cache->set($eventname, $recordlist);
}
/**
* Delete the data in the cache by key.
*
* @param string $eventname
* @return boolean
*/
function local_webhooks_cache_delete($eventname) {
$cache = cache::make("local_webhooks", "webhooks_services");
return $cache->delete($eventname);
}
/**
* Clear the cache of the plugin.
*
* @return boolean
*/
function local_webhooks_cache_reset() {
$cache = cache::make("local_webhooks", "webhooks_services");
return $cache->purge();
}
/**
* Data serialization.
*
* @param array|object $data
* @return string
*/
function local_webhooks_serialization_data($data) {
return serialize($data);
}
/**
* Data deserialization.
*
* @param string $data
* @return array|object
*/
function local_webhooks_deserialization_data($data) {
return unserialize($data);
}
/**
* Description of functions of the call of events
*
@ -122,7 +58,6 @@ class local_webhooks_events {
public static function response_answer($objectid = 0, $response = array()) {
$context = context_system::instance();
$status = "Error sending request";
if (!empty($response["HTTP/1.1"])) {
$status = $response["HTTP/1.1"];
}

View File

@ -45,7 +45,7 @@ if ($mform->is_cancelled()) {
}
/* Processing the received file */
if (($data = $mform->get_data()) && confirm_sesskey()) {
if ($data = $mform->get_data()) {
$content = $mform->get_file_content("backupfile");
local_webhooks_restore_backup($content, $data->deleterecords);
redirect($managerservice, new lang_string("restorefinished", "moodle"));

View File

@ -24,8 +24,8 @@
defined("MOODLE_INTERNAL") || die();
$plugin->release = "4.0.0-rc.2 (Build: 2018022500)";
$plugin->version = 2018022500;
$plugin->release = "4.0.0-rc.1 (Build: 2017122900)";
$plugin->version = 2017122900;
$plugin->requires = 2016112900;
$plugin->component = "local_webhooks";
$plugin->maturity = MATURITY_RC;