From 1ad4527c1d62dc6df02711d1c1e390f2a9169991 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 23 Nov 2017 17:17:08 +0400 Subject: External code of the library --- lib.php | 122 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 lib.php diff --git a/lib.php b/lib.php new file mode 100644 index 0000000..6cffd1b --- /dev/null +++ b/lib.php @@ -0,0 +1,122 @@ +. + +/** + * Library code used by the service control interfaces. + * + * @package local_webhooks + * @copyright 2017 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined("MOODLE_INTERNAL") || die(); + +/** + * Getting information about the service. + * + * @param number $serviceid + * @return object + */ +function local_webhooks_get_record($serviceid = 0) { + global $DB; + + $servicerecord = $DB->get_record("local_webhooks_service", array("id" => $serviceid), "*", MUST_EXIST); + + if (!empty($servicerecord->events)) { + $servicerecord->events = local_webhooks_unarchive_data($servicerecord->events); + } + + return $servicerecord; +} + +/** + * Getting a list of all services. + * + * @param number $limitfrom + * @param number $limitnum + * @return array + */ +function local_webhooks_list_records($limitfrom = 0, $limitnum = 0) { + global $DB; + + $listservices = $DB->get_records("local_webhooks_service", null, "id", "*", $limitfrom, $limitnum); + + foreach ($listservices as $servicerecord) { + if (!empty($servicerecord->events)) { + $servicerecord->events = local_webhooks_unarchive_data($servicerecord->events); + } + } + + return $listservices; +} + +/** + * Delete the record. + * + * @param number $serviceid + */ +function local_webhooks_remove_record($serviceid = 0) { + global $DB; + + $DB->delete_records("local_webhooks_service", array("id" => $serviceid)); +} + +/** + * Update the record in the database. + * + * @param object $data + * @param boolean $insert + * @return boolean + */ +function local_webhooks_update_record($data, $insert = true) { + global $DB; + + if (empty($data->events)) { + $data->events = array(); + } + + $data->events = local_webhooks_archiving_data($data->events); + + if (boolval($insert)) { + $result = $DB->insert_record("local_webhooks_service", $data, true, false); + } else { + $result = $DB->update_record("local_webhooks_service", $data, false); + } + + return boolval($result); +} + +/** + * Compress an array into a string. + * + * @param array $data + * @return string + */ +function local_webhooks_archiving_data($data = array()) { + $result = base64_encode(gzcompress(serialize($data), 3)); + return $result; +} + +/** + * Gets an array from a compressed string. + * + * @param string $data + * @return array + */ +function local_webhooks_unarchive_data($data = "") { + $result = unserialize(gzuncompress(base64_decode($data))); + return $result; +} \ No newline at end of file -- cgit v1.2.3