From 519c4b07c260e7b4dbce676e1522e429d22babfd Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Tue, 12 Dec 2017 20:22:11 +0400 Subject: Added external functions for managing administrator rights --- externallib.php | 129 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 externallib.php diff --git a/externallib.php b/externallib.php new file mode 100644 index 0000000..57d6f9d --- /dev/null +++ b/externallib.php @@ -0,0 +1,129 @@ +. + +/** + * External API functions. + * + * @package local_billingpatch + * @copyright 2017 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined("MOODLE_INTERNAL") || die(); + +require_once($CFG->libdir . "/externallib.php"); + +/** + * External functions of patches. + * + * @copyright 2017 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ +class local_billingpatch_external extends external_api { + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function enable_administrator_parameters() { + return new external_function_parameters( + array( + "userid" => new external_value(PARAM_INT, "User ID") + ) + ); + } + + /** + * Adds a user to site administrators. + * + * @param number $userid + * @since Moodle 2.2 + */ + public static function enable_administrator($userid) { + global $CFG, $DB; + + $parameters = self::validate_parameters(self::enable_administrator_parameters(), array("userid" => $userid)); + $userid = strval($parameters["userid"]); + + $context = context_system::instance(); + self::validate_context($context); + + if ($DB->record_exists("user", array("id" => $userid, "deleted" => 0, "suspended" => 0))) { + $admins = explode(",", $CFG->siteadmins); + if (!in_array($userid, $admins)) { + $admins[] = $userid; + set_config("siteadmins", implode(",", $admins)); + } + } + } + + /** + * Returns description of method result value. + * + * @since Moodle 2.2 + */ + public static function enable_administrator_returns() { + return null; + } + + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function disable_administrator_parameters() { + return new external_function_parameters( + array( + "userid" => new external_value(PARAM_INT, "User ID") + ) + ); + } + + /** + * Removes a user from the site administrators. + * + * @param number $userid + * @since Moodle 2.2 + */ + public static function disable_administrator($userid) { + global $CFG, $DB; + + $parameters = self::validate_parameters(self::enable_administrator_parameters(), array("userid" => $userid)); + $userid = strval($parameters["userid"]); + + $context = context_system::instance(); + self::validate_context($context); + + if ($DB->record_exists("user", array("id" => $userid, "deleted" => 0, "suspended" => 0))) { + $admins = explode(",", $CFG->siteadmins); + if ($key = array_search($userid, $admins) !== FALSE) { + unset($admins[$key]); + set_config("siteadmins", implode(",", $admins)); + } + } + } + + /** + * Returns description of method parameters. + * + * @since Moodle 2.2 + */ + public static function disable_administrator_returns() { + return null; + } +} \ No newline at end of file -- cgit v1.2.3