. /** * Classes of modules. * * @package local_webhooks * @copyright 2017 "Valentin Popov" * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined("MOODLE_INTERNAL") || die(); define("LOCAL_WEBHOOKS_NAME_CACHE_REPOSITORY", "webhooks_services"); define("LOCAL_WEBHOOKS_NAME_PLUGIN", "local_webhooks"); /** * Get data from the cache by key. * * @param string $eventname * @return array */ function local_webhooks_cache_get($eventname) { $cache = cache::make(LOCAL_WEBHOOKS_NAME_PLUGIN, LOCAL_WEBHOOKS_NAME_CACHE_REPOSITORY); 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_NAME_PLUGIN, LOCAL_WEBHOOKS_NAME_CACHE_REPOSITORY); 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_NAME_PLUGIN, LOCAL_WEBHOOKS_NAME_CACHE_REPOSITORY); return $cache->delete($eventname); } /** * Clear the cache of the plugin. * * @return boolean */ function local_webhooks_cache_reset() { $cache = cache::make(LOCAL_WEBHOOKS_NAME_PLUGIN, LOCAL_WEBHOOKS_NAME_CACHE_REPOSITORY); return $cache->purge(); } /** * Forms a list of events for the specified service. * * @param number $serviceid * @param number $limitfrom * @param number $limitnum * @return array */ function local_webhooks_get_list_events_for_service($serviceid, $limitfrom = 0, $limitnum = 0) { global $DB; $rs = $DB->get_recordset(LOCAL_WEBHOOKS_TABLE_EVENTS, array("serviceid" => $serviceid), "id", "*", $limitfrom, $limitnum); $events = array(); foreach ($rs as $record) { $events[$record->name] = $record->status; } $rs->close(); return $events; } /** * Adds all events to the database. * * @param number $serviceid * @param array $events * @return boolean */ function local_webhooks_insert_events_for_service($serviceid, $events) { global $DB; $records = array(); foreach ($events as $eventname => $eventstatus) { $event = new stdClass(); $event->name = $eventname; $event->status = $eventstatus; $event->serviceid = $serviceid; $records[] = $event; } local_webhooks_delete_events_for_service($serviceid); return $DB->insert_records(LOCAL_WEBHOOKS_TABLE_EVENTS, $records); } /** * Deleting all the events linked to the given service. * * @param number $serviceid * @return boolean */ function local_webhooks_delete_events_for_service($serviceid) { global $DB; return $DB->delete_records(LOCAL_WEBHOOKS_TABLE_EVENTS, array("serviceid" => $serviceid)); } /** * Description of functions of the call of events * * @copyright 2017 "Valentin Popov" * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class local_webhooks_events { /** * Call the event when creating a backup. */ public static function backup_performed() { $context = context_system::instance(); $event = local_webhooks\event\backup_performed::create(array("context" => $context, "objectid" => 0)); $event->trigger(); } /** * Call the event when restoring from a backup. */ public static function backup_restored() { $context = context_system::instance(); $event = local_webhooks\event\backup_restored::create(array("context" => $context, "objectid" => 0)); $event->trigger(); } /** * Call event when the response is received from the service * * @param number $objectid Service ID * @param array $response Server response */ 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"]; } $event = local_webhooks\event\response_answer::create(array("context" => $context, "objectid" => $objectid, "other" => array("status" => $status))); $event->trigger(); } /** * Call the event when the service is added. * * @param number $objectid Service ID */ public static function service_added($objectid = 0) { $context = context_system::instance(); $event = local_webhooks\event\service_added::create(array("context" => $context, "objectid" => $objectid)); $event->trigger(); } /** * Call the event when the service is deleted. * * @param number $objectid Service ID */ public static function service_deleted($objectid = 0) { $context = context_system::instance(); $event = local_webhooks\event\service_deleted::create(array("context" => $context, "objectid" => $objectid)); $event->trigger(); } /** * Call the event when all services are deleted. */ public static function service_deletedall() { $context = context_system::instance(); $event = local_webhooks\event\service_deletedall::create(array("context" => $context, "objectid" => 0)); $event->trigger(); } /** * Call event when the service is updated. * * @param number $objectid Service ID */ public static function service_updated($objectid = 0) { $context = context_system::instance(); $event = local_webhooks\event\service_updated::create(array("context" => $context, "objectid" => $objectid)); $event->trigger(); } }