diff options
author | Valentin Popov <info@valentineus.link> | 2017-12-12 19:22:11 +0300 |
---|---|---|
committer | Valentin Popov <info@valentineus.link> | 2017-12-12 19:22:11 +0300 |
commit | 519c4b07c260e7b4dbce676e1522e429d22babfd (patch) | |
tree | 2f571bdd051911a89ec697b8848a1f6cba3daa8c /externallib.php | |
parent | da62a7e5a2e20d452ba247fc5f7b50810afae4ba (diff) | |
download | local_billingpatch-519c4b07c260e7b4dbce676e1522e429d22babfd.tar.xz local_billingpatch-519c4b07c260e7b4dbce676e1522e429d22babfd.zip |
Added external functions for managing administrator rights
Diffstat (limited to 'externallib.php')
-rw-r--r-- | externallib.php | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/externallib.php b/externallib.php new file mode 100644 index 0000000..57d6f9d --- /dev/null +++ b/externallib.php @@ -0,0 +1,129 @@ +<?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/>. + +/** + * External API functions. + * + * @package local_billingpatch + * @copyright 2017 "Valentin Popov" <info@valentineus.link> + * @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" <info@valentineus.link> + * @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 |