From ba470d71a0cfae8bb75ba3b5d1b690cf14db6a6c Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 27 Nov 2017 20:46:03 +0400 Subject: The first version of the API library --- lib.php | 207 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 lib.php diff --git a/lib.php b/lib.php new file mode 100644 index 0000000..88ac107 --- /dev/null +++ b/lib.php @@ -0,0 +1,207 @@ +. + +/** + * External plugin API. + * + * @package tool_managertokens + * @copyright 2017 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined("MOODLE_INTERNAL") || die(); + +/** + * It checks the ability to activate the token and produces it. + * + * @param string $token + * @return object + */ +function tool_managertokens_activate_token($token = "") { + global $DB; + + $select_limited = "limited = 0 OR scope < limited"; + $select_timelimited = "timelimited = 0 OR timelimited > " . time(); + $select = "enabled = 1 AND token = '$token' AND ($select_limited) AND ($select_timelimited)"; + + if ($token = $DB->get_record_select("tool_managertokens_tokens", $select, null, "*", IGNORE_MISSING)) { + $token->scope = intval($token->scope) + 1; + $token->timelastuse = time(); + $DB->update_record("tool_managertokens_tokens", $token, false); + } + + return $token; +} + +/* function tool_managertokens_create_backup() {} */ + +/** + * Creates an entry in the database. + * + * @param array $options + * @return number + */ +function tool_managertokens_create_record($options = array()) { + global $DB; + + if (!isset($options["targetid"])) { + print_error("missingparam", "error", "", "targetid"); + } + + if (!isset($options["targettype"])) { + print_error("missingparam", "error", "", "targettype"); + } + + if (!isset($options["token"])) { + print_error("missingparam", "error", "", "token"); + } + + if ($DB->record_exists("tool_managertokens_tokens", array("token" => $options["token"]))) { + print_error("duplicatefieldname", "error", "", "token"); + } + + $token = array(); + $token["enabled"] = false; + $token["timecreated"] = time(); + $token["targetid"] = intval($options["targetid"]); + $token["targettype"] = intval($options["targettype"]); + $token["timemodified"] = $token["timecreated"]; + $token["token"] = strval($options["token"]); + + if (isset($options["enabled"])) { + $token["enabled"] = boolval($options["enabled"]); + } + + if (isset($options["extendedaction"]) && isset($options["extendedoptions"])) { + $token["extendedaction"] = strval($options["extendedaction"]); + $token["extendedoptions"] = strval($options["extendedoptions"]); + } + + if (isset($options["limited"])) { + $token["limited"] = intval($options["limited"]); + } + + if (isset($options["timelimited"])) { + $token["timelimited"] = intval($options["timelimited"]); + } + + $recordid = $DB->insert_record("tool_managertokens_tokens", $token, true, false); + return $recordid; +} + +/** + * Removes all entries in the table. + * + * @return boolean + */ +function tool_managertokens_delete_all_records() { + global $DB; + $result = $DB->delete_records("tool_managertokens_tokens", null); + return boolval($result); +} + +/** + * Deletes an entry by an ID or token. + * + * @param number|string $key + * @return boolean + */ +function tool_managertokens_delete_record($key = 0) { + global $DB; + $select = "id = '$key' OR token = '$key'"; + $result = $DB->delete_records_select("tool_managertokens_tokens", $select, null); + return boolval($result); +} + +/** + * Searches for an id or token. + * + * @param number|string $key + */ +function tool_managertokens_find_record($key = 0) { + global $DB; + $select = "id = '$key' OR token = '$key'"; + $token = $DB->get_record_select("tool_managertokens_tokens", $select, null, "*", IGNORE_MISSING); + return $token; +} + +/** + * Get the entire list of tokens. + * + * @param number $limitfrom + * @param number $limitnum + * @return array + */ +function tool_managertokens_get_list($limitfrom = 0, $limitnum = 0) { + global $DB; + $result = $DB->get_records("tool_managertokens_tokens", null, "id", "*", $limitfrom, $limitnum); + return $result; +} + +/* function tool_managertokens_restore_backup($backup = "") {} */ + +/** + * Updates the entry in the database. + * + * @param array $options + * @return boolean + */ +function tool_managertokens_update_record($options = array()) { + global $DB; + + $result = false; + + if (!isset($options["id"])) { + print_error("missingparam", "error", "", "id"); + } + + if ($token = $DB->get_record("tool_managertokens_tokens", array("id" => $options["id"]), "*", IGNORE_MISSING)) { + $token->timemodified = time(); + + if (isset($options["enabled"])) { + $token->enabled = boolval($options["enabled"]); + } + + if (isset($options["extendedaction"]) && isset($options["extendedoptions"])) { + $token->extendedaction = strval($options["extendedaction"]); + $token->extendedoptions = strval($options["extendedoptions"]); + } + + if (isset($options["limited"])) { + $token->limited = intval($options["limited"]); + } + + if (isset($options["targetid"])) { + $token->targetid = intval($options["targetid"]); + } + + if (isset($options["targettype"])) { + $token->targettype = strval($options["targettype"]); + } + + if (isset($options["token"])) { + $token->token = strval($options["token"]); + } + + if (isset($options["timelimited"])) { + $token->timelimited = intval($options["timelimited"]); + } + + $result = $DB->update_record("tool_managertokens_tokens", $token, false); + } + + return boolval($result); +} \ No newline at end of file -- cgit v1.2.3