aboutsummaryrefslogtreecommitdiff
path: root/externallib.php
diff options
context:
space:
mode:
authorValentin Popov <info@valentineus.link>2017-12-12 19:22:11 +0300
committerValentin Popov <info@valentineus.link>2017-12-12 19:22:11 +0300
commit519c4b07c260e7b4dbce676e1522e429d22babfd (patch)
tree2f571bdd051911a89ec697b8848a1f6cba3daa8c /externallib.php
parentda62a7e5a2e20d452ba247fc5f7b50810afae4ba (diff)
downloadlocal_billingpatch-519c4b07c260e7b4dbce676e1522e429d22babfd.tar.xz
local_billingpatch-519c4b07c260e7b4dbce676e1522e429d22babfd.zip
Added external functions for managing administrator rights
Diffstat (limited to 'externallib.php')
-rw-r--r--externallib.php129
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