Merge pull request #1 from valentineus/multiple-choice-url
Multiple choice url
This commit is contained in:
		@@ -24,19 +24,68 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
namespace local_webhooks;
 | 
					namespace local_webhooks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defined('MOODLE_INTERNAL') || die();
 | 
					defined("MOODLE_INTERNAL") || die();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Defines how to work with events.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
class events {
 | 
					class events {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * External handler.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param object $event
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
    public static function handler($event) {
 | 
					    public static function handler($event) {
 | 
				
			||||||
        $enabled = boolval(get_config('local_webhooks', 'enabled'));
 | 
					        $config = get_config("local_webhooks");
 | 
				
			||||||
        $url = get_config('local_webhooks', 'url');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ($enabled && !empty($url)) {
 | 
					        if (boolval($config->enable)) {
 | 
				
			||||||
            $data = $event->get_data();
 | 
					            $data = $event->get_data();
 | 
				
			||||||
            $json = json_encode($data);
 | 
					            self::transmitter($data);
 | 
				
			||||||
 | 
					 | 
				
			||||||
            $curl = new curl();
 | 
					 | 
				
			||||||
            $curl::request($url, $json);
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Transmitter, processing event and services.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param array $data
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static function transmitter($data) {
 | 
				
			||||||
 | 
					        global $DB;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $callbacks = $DB->get_recordset("local_webhooks_service");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if ($callbacks->valid()) {
 | 
				
			||||||
 | 
					            foreach ($callbacks as $callback) {
 | 
				
			||||||
 | 
					                self::send($data, $callback);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $callbacks->close();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Sending data to the node.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param array $data
 | 
				
			||||||
 | 
					     * @param object $callback
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static function send($data, $callback) {
 | 
				
			||||||
 | 
					        if ($callback->enable) {
 | 
				
			||||||
 | 
					            $curl = new curl();
 | 
				
			||||||
 | 
					            $package = self::packup($data);
 | 
				
			||||||
 | 
					            $curl::request($callback->url, $package);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Packs the data for transmission.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param array $data
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private static function packup($data) {
 | 
				
			||||||
 | 
					        return json_encode($data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										81
									
								
								classes/forms.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								classes/forms.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
				
			|||||||
 | 
					<?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/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Defines the form of editing the service.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package   local_webhooks
 | 
				
			||||||
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace local_webhooks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					defined("MOODLE_INTERNAL") || die();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once($CFG->libdir . "/formslib.php");
 | 
				
			||||||
 | 
					use lang_string;
 | 
				
			||||||
 | 
					use moodleform;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Description editing form definition.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					class service_edit_form extends moodleform {
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @param string $baseurl
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function __construct($baseurl) {
 | 
				
			||||||
 | 
					        parent::__construct($baseurl);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Defines the standard structure of the form.
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    protected function definition() {
 | 
				
			||||||
 | 
					        $mform =& $this->_form;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Form heading */
 | 
				
			||||||
 | 
					        $mform->addElement("header", "editserviceheader",
 | 
				
			||||||
 | 
					            new lang_string("service", "webservice"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Name of the service */
 | 
				
			||||||
 | 
					        $mform->addElement("text", "title",
 | 
				
			||||||
 | 
					            new lang_string("name", "moodle"),
 | 
				
			||||||
 | 
					            array("size" => 60));
 | 
				
			||||||
 | 
					        $mform->setType("title", PARAM_NOTAGS);
 | 
				
			||||||
 | 
					        $mform->addRule("title", null, "required");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Callback address */
 | 
				
			||||||
 | 
					        $mform->addElement("text", "url",
 | 
				
			||||||
 | 
					            new lang_string("url", "moodle"),
 | 
				
			||||||
 | 
					            array("size" => 60));
 | 
				
			||||||
 | 
					        $mform->setType("url", PARAM_URL);
 | 
				
			||||||
 | 
					        $mform->addRule("url", null, "required");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Enabling the service */
 | 
				
			||||||
 | 
					        $mform->addElement("checkbox", "enable",
 | 
				
			||||||
 | 
					            new lang_string("enable", "moodle"));
 | 
				
			||||||
 | 
					        $mform->setType("enable", PARAM_BOOL);
 | 
				
			||||||
 | 
					        $mform->setDefault("enable", 1);
 | 
				
			||||||
 | 
					        $mform->setAdvanced("enable");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* Control Panel */
 | 
				
			||||||
 | 
					        $this->add_action_buttons(true);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										16
									
								
								db/install.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								db/install.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
				
			|||||||
 | 
					<?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">
 | 
				
			||||||
 | 
					    <TABLES>
 | 
				
			||||||
 | 
					        <TABLE NAME="local_webhooks_service" COMMENT="A table for storing callback services.">
 | 
				
			||||||
 | 
					            <FIELDS>
 | 
				
			||||||
 | 
					                <FIELD NAME="id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="true" />
 | 
				
			||||||
 | 
					                <FIELD NAME="enable" TYPE="int" LENGTH="2" NOTNULL="true" DEFAULT="0" SEQUENCE="false" />
 | 
				
			||||||
 | 
					                <FIELD NAME="title" TYPE="text" NOTNULL="true" SEQUENCE="false" />
 | 
				
			||||||
 | 
					                <FIELD NAME="url" TYPE="char" LENGTH="255" NOTNULL="true" SEQUENCE="false" />
 | 
				
			||||||
 | 
					            </FIELDS>
 | 
				
			||||||
 | 
					            <KEYS>
 | 
				
			||||||
 | 
					                <KEY NAME="primary" TYPE="primary" FIELDS="id" />
 | 
				
			||||||
 | 
					            </KEYS>
 | 
				
			||||||
 | 
					        </TABLE>
 | 
				
			||||||
 | 
					    </TABLES>
 | 
				
			||||||
 | 
					</XMLDB>
 | 
				
			||||||
							
								
								
									
										91
									
								
								editservice.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								editservice.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					<?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/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Service editor.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package   local_webhooks
 | 
				
			||||||
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once(__DIR__ . "/../../config.php");
 | 
				
			||||||
 | 
					require_once(__DIR__ . "/classes/forms.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$idservice = optional_param("idservice", 0, PARAM_INT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_login();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Link generation */
 | 
				
			||||||
 | 
					$urlparameters = array("idservice" => $idservice);
 | 
				
			||||||
 | 
					$managerservice = new moodle_url("/local/webhooks/managerservice.php", $urlparameters);
 | 
				
			||||||
 | 
					$baseurl = new moodle_url("/local/webhooks/editservice.php", $urlparameters);
 | 
				
			||||||
 | 
					$PAGE->set_url($baseurl, $urlparameters);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Configure the context of the page */
 | 
				
			||||||
 | 
					$context = context_system::instance();
 | 
				
			||||||
 | 
					$PAGE->set_context($context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Preparing a template for data */
 | 
				
			||||||
 | 
					$titlepage = new lang_string("externalservice", "webservice");
 | 
				
			||||||
 | 
					$servicerecord = new stdClass;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Create an editing form */
 | 
				
			||||||
 | 
					$mform = new \local_webhooks\service_edit_form($PAGE->url);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Cancel processing */
 | 
				
			||||||
 | 
					if ($mform->is_cancelled()) {
 | 
				
			||||||
 | 
					    redirect($managerservice);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Getting the data */
 | 
				
			||||||
 | 
					if ($idediting = boolval($idservice)) {
 | 
				
			||||||
 | 
					    $servicerecord = $DB->get_record("local_webhooks_service", array("id" => $idservice), "*", MUST_EXIST);
 | 
				
			||||||
 | 
					    $mform->set_data($servicerecord);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Processing of received data */
 | 
				
			||||||
 | 
					if ($data = $mform->get_data()) {
 | 
				
			||||||
 | 
					    if (empty($data->enable)) {
 | 
				
			||||||
 | 
					        $data->enable = 0;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ($idediting) {
 | 
				
			||||||
 | 
					        $data->id = $idservice;
 | 
				
			||||||
 | 
					        $DB->update_record("local_webhooks_service", $data);
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					        $DB->insert_record("local_webhooks_service", $data);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    redirect($managerservice);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Page template */
 | 
				
			||||||
 | 
					$PAGE->set_pagelayout("admin");
 | 
				
			||||||
 | 
					$PAGE->set_heading($titlepage);
 | 
				
			||||||
 | 
					$PAGE->set_title($titlepage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The page title */
 | 
				
			||||||
 | 
					$PAGE->navbar->add(new lang_string("local", "moodle"));
 | 
				
			||||||
 | 
					$PAGE->navbar->add(new lang_string("pluginname", "local_webhooks"));
 | 
				
			||||||
 | 
					$PAGE->navbar->add(new lang_string("managerservice", "local_webhooks"), $managerservice);
 | 
				
			||||||
 | 
					$PAGE->navbar->add($titlepage);
 | 
				
			||||||
 | 
					echo $OUTPUT->header();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Displays the form */
 | 
				
			||||||
 | 
					$mform->display();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $OUTPUT->footer();
 | 
				
			||||||
@@ -15,16 +15,12 @@
 | 
				
			|||||||
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 | 
					// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Strings for component 'local_webhooks', language 'en'.
 | 
					 * Strings for component "local_webhooks", language "en".
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @package   local_webhooks
 | 
					 * @package   local_webhooks
 | 
				
			||||||
 * @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
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$string['local_webhooksdescription'] = '';
 | 
					$string["managerservice"] = "Service management manager";
 | 
				
			||||||
$string['pluginname'] = 'WebHook\'s';
 | 
					$string["pluginname"] = "WebHooks";
 | 
				
			||||||
$string['enabled'] = 'Enabled';
 | 
					 | 
				
			||||||
$string['enabled_help'] = 'Enable event tracking.';
 | 
					 | 
				
			||||||
$string['url'] = 'URL';
 | 
					 | 
				
			||||||
$string['url_help'] = 'Web address of the remote service.';
 | 
					 | 
				
			||||||
@@ -15,16 +15,12 @@
 | 
				
			|||||||
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 | 
					// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Strings for component 'local_webhooks', language 'ru'.
 | 
					 * Strings for component "local_webhooks", language "ru".
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @package   local_webhooks
 | 
					 * @package   local_webhooks
 | 
				
			||||||
 * @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
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$string['local_webhooksdescription'] = '';
 | 
					$string["managerservice"] = "Менеджер управления службами";
 | 
				
			||||||
$string['pluginname'] = 'WebHook\'s';
 | 
					$string["pluginname"] = "WebHooks";
 | 
				
			||||||
$string['enabled'] = 'Включить';
 | 
					 | 
				
			||||||
$string['enabled_help'] = 'Включить отслеживание событий.';
 | 
					 | 
				
			||||||
$string['url'] = 'URL';
 | 
					 | 
				
			||||||
$string['url_help'] = 'Веб-адрес удалённой службы.';
 | 
					 | 
				
			||||||
							
								
								
									
										105
									
								
								managerservice.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								managerservice.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
				
			|||||||
 | 
					<?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/>.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * Service Management Manager.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @package   local_webhooks
 | 
				
			||||||
 | 
					 * @copyright 2017 "Valentin Popov" <info@valentineus.link>
 | 
				
			||||||
 | 
					 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_once(__DIR__ . "/../../config.php");
 | 
				
			||||||
 | 
					require_once($CFG->libdir . "/tablelib.php");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$deleteservice = optional_param("deleteservice", 0, PARAM_INT);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require_login();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Link generation */
 | 
				
			||||||
 | 
					$managerservice = "/local/webhooks/managerservice.php";
 | 
				
			||||||
 | 
					$editservice = "/local/webhooks/editservice.php";
 | 
				
			||||||
 | 
					$baseurl = new moodle_url($managerservice);
 | 
				
			||||||
 | 
					$PAGE->set_url($baseurl);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Configure the context of the page */
 | 
				
			||||||
 | 
					$context = context_system::instance();
 | 
				
			||||||
 | 
					$PAGE->set_context($context);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Delete the service */
 | 
				
			||||||
 | 
					if ($deleteservice && confirm_sesskey()) {
 | 
				
			||||||
 | 
					    $DB->delete_records("local_webhooks_service", array("id" => $deleteservice));
 | 
				
			||||||
 | 
					    redirect($PAGE->url, new lang_string("deleted", "moodle"));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Retrieving a list of services */
 | 
				
			||||||
 | 
					$select = null;
 | 
				
			||||||
 | 
					$callbacks = $DB->get_records_select("local_webhooks_service", $select, null, $DB->sql_order_by_text("id"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Page template */
 | 
				
			||||||
 | 
					$titlepage = new lang_string("managerservice", "local_webhooks");
 | 
				
			||||||
 | 
					$PAGE->set_pagelayout("standard");
 | 
				
			||||||
 | 
					$PAGE->set_title($titlepage);
 | 
				
			||||||
 | 
					$PAGE->set_heading($titlepage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* The page title */
 | 
				
			||||||
 | 
					$PAGE->navbar->add(new lang_string("local", "moodle"));
 | 
				
			||||||
 | 
					$PAGE->navbar->add(new lang_string("pluginname", "local_webhooks"));
 | 
				
			||||||
 | 
					$PAGE->navbar->add($titlepage, $baseurl);
 | 
				
			||||||
 | 
					echo $OUTPUT->header();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Table declaration */
 | 
				
			||||||
 | 
					$table = new flexible_table("callbacks-table");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Customize the table */
 | 
				
			||||||
 | 
					$table->define_columns(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->setup();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					foreach ($callbacks as $callback) {
 | 
				
			||||||
 | 
					    /* Filling of information columns */
 | 
				
			||||||
 | 
					    $titlecallback = html_writer::div($callback->title, "title");
 | 
				
			||||||
 | 
					    $urlcallback = html_writer::div($callback->url, "url");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Link for editing */
 | 
				
			||||||
 | 
					    $editlink = new moodle_url($editservice,
 | 
				
			||||||
 | 
					        array("idservice" => $callback->id));
 | 
				
			||||||
 | 
					    $edititem = $OUTPUT->action_icon($editlink,
 | 
				
			||||||
 | 
					        new pix_icon("t/edit", get_string("edit")));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Link to remove */
 | 
				
			||||||
 | 
					    $deletelink = new moodle_url($managerservice,
 | 
				
			||||||
 | 
					        array("deleteservice" => $callback->id, "sesskey" => sesskey()));
 | 
				
			||||||
 | 
					    $deleteitem = $OUTPUT->action_icon($deletelink,
 | 
				
			||||||
 | 
					        new pix_icon("t/delete", get_string("delete")));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Adding data to the table */
 | 
				
			||||||
 | 
					    $table->add_data(array($titlecallback, $urlcallback, $edititem . $deleteitem));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Display the table */
 | 
				
			||||||
 | 
					$table->print_html();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* Add service button */
 | 
				
			||||||
 | 
					$addurl = new moodle_url("/local/webhooks/editservice.php");
 | 
				
			||||||
 | 
					echo $OUTPUT->single_button($addurl,
 | 
				
			||||||
 | 
					    new lang_string("addaservice", "webservice"), "get");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					echo $OUTPUT->footer();
 | 
				
			||||||
							
								
								
									
										23
									
								
								settings.php
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								settings.php
									
									
									
									
									
								
							@@ -22,15 +22,24 @@
 | 
				
			|||||||
 * @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
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
defined('MOODLE_INTERNAL') || die();
 | 
					defined("MOODLE_INTERNAL") || die();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$settings = null;
 | 
				
			||||||
if ($hassiteconfig) {
 | 
					if ($hassiteconfig) {
 | 
				
			||||||
    $settings = new admin_settingpage('local_webhooks', get_string('pluginname', 'local_webhooks'));
 | 
					    $settings = new admin_settingpage("local_webhooks",
 | 
				
			||||||
    $ADMIN->add('localplugins', $settings);
 | 
					        new lang_string("pluginname", "local_webhooks"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $settings->add(new admin_setting_configcheckbox('local_webhooks/enabled', get_string('enabled', 'local_webhooks'),
 | 
					    $ADMIN->add("localplugins", $settings);
 | 
				
			||||||
                        get_string('enabled_help', 'local_webhooks'), false));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $settings->add(new admin_setting_configtext('local_webhooks/url', get_string('url', 'local_webhooks'),
 | 
					    $settings->add(new admin_setting_configcheckbox(
 | 
				
			||||||
                        get_string('url_help', 'local_webhooks'), 'http://example.com/endpoint', PARAM_URL, 40));
 | 
					        "local_webhooks/enabled",
 | 
				
			||||||
 | 
					        new lang_string("enable", "moodle"),
 | 
				
			||||||
 | 
					        new lang_string("enablews", "webservice"),
 | 
				
			||||||
 | 
					        false));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* Link to the service manager */
 | 
				
			||||||
 | 
					    $linktext = new lang_string("managerservice", "local_webhooks");
 | 
				
			||||||
 | 
					    $linkurl = new moodle_url("/local/webhooks/managerservice.php");
 | 
				
			||||||
 | 
					    $settings->add(new admin_setting_heading("local_webhooks_managerservice", null,
 | 
				
			||||||
 | 
					        html_writer::link($linkurl, $linktext)));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user