From 43d268274473cd99f16e12271bee49767867ca88 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Sat, 9 Jun 2018 11:39:03 +0400 Subject: External API Signed-off-by: Valentin Popov --- externallib.php | 237 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 237 insertions(+) create mode 100644 externallib.php diff --git a/externallib.php b/externallib.php new file mode 100644 index 0000000..8054fcc --- /dev/null +++ b/externallib.php @@ -0,0 +1,237 @@ +. + +/** + * External API. + * + * @copyright 2018 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package tool_apisiteadmins + */ + +defined("MOODLE_INTERNAL") || die(); + +require_once(__DIR__ . "/lib.php"); + +require_once($CFG->dirroot . "/lib/external/externallib.php"); +require_once($CFG->dirroot . "/user/externallib.php"); +require_once($CFG->dirroot . "/user/lib.php"); + +/** + * External functions. + * + * @copyright 2018 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package tool_apisiteadmins + */ +class tool_apisiteadmins_external extends external_api { + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function add_to_administrators_parameters() { + return new external_function_parameters( + array( + "userid" => new external_value(PARAM_INT, "ID of the user") + ) + ); + } + + /** + * Adds a user to the list of administrators. + * + * @param number $userid System user ID + * @return boolean Result of execution + * @since Moodle 2.2 + * @throws moodle_exception + */ + public static function add_to_administrators($userid) { + $parameters = self::validate_parameters(self::add_to_administrators_parameters(), array("userid" => $userid)); + + $context = context_system::instance(); + self::validate_context($context); + + return tool_apisiteadmins::add_user($parameters["userid"]); + } + + /** + * Returns description of method result value. + * + * @return external_description + * @since Moodle 2.2 + */ + public static function add_to_administrators_returns() { + return new external_value(PARAM_BOOL, "Result of execution"); + } + + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function remove_from_administrators_parameters() { + return new external_function_parameters( + array( + "userid" => new external_value(PARAM_INT, "ID of the user") + ) + ); + } + + /** + * Removes a user from the list of administrators. + * + * @param number $userid System user ID + * @return boolean Result of execution + * @since Moodle 2.2 + * @throws moodle_exception + */ + public static function remove_from_administrators($userid) { + $parameters = self::validate_parameters(self::remove_from_administrators_parameters(), array("userid" => $userid)); + + $context = context_system::instance(); + self::validate_context($context); + + return tool_apisiteadmins::remove_user($parameters["userid"]); + } + + /** + * Returns description of method result value. + * + * @return external_description + * @since Moodle 2.2 + */ + public static function remove_from_administrators_returns() { + return new external_value(PARAM_BOOL, "Result of execution"); + } + + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function change_main_administrator_parameters() { + return new external_function_parameters( + array( + "userid" => new external_value(PARAM_INT, "ID of the user") + ) + ); + } + + /** + * Registers the user as the primary administrator. + * + * @param number $userid System user ID + * @return boolean Result of execution + * @since Moodle 2.2 + * @throws moodle_exception + */ + public static function change_main_administrator($userid) { + $parameters = self::validate_parameters(self::change_main_administrator_parameters(), array("userid" => $userid)); + + $context = context_system::instance(); + self::validate_context($context); + + return tool_apisiteadmins::set_main($parameters["userid"]); + } + + /** + * Returns description of method result value. + * + * @return external_description + * @since Moodle 2.2 + */ + public static function change_main_administrator_returns() { + return new external_value(PARAM_BOOL, "Result of execution"); + } + + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function get_main_administrator_parameters() { + return new external_function_parameters(array()); + } + + /** + * Gets information about the main administrator. + * + * @return array An array of arrays containg user profiles + * @since Moodle 2.2 + */ + public static function get_main_administrator() { + $context = context_system::instance(); + self::validate_context($context); + + $result = array(); + $result[] = user_get_user_details(get_admin()); + + return $result; + } + + /** + * Returns description of method result value. + * + * @return external_description + * @since Moodle 2.2 + */ + public static function get_main_administrator_returns() { + return new external_multiple_structure(core_user_external::user_description()); + } + + /** + * Returns description of method parameters. + * + * @return external_function_parameters + * @since Moodle 2.2 + */ + public static function get_list_administrators_parameters() { + return new external_function_parameters(array()); + } + + /** + * Gets the list of administrators in the system. + * + * @return array An array of arrays containg user profiles + * @since Moodle 2.2 + */ + public static function get_list_administrators() { + $context = context_system::instance(); + self::validate_context($context); + + $result = array(); + foreach (get_admins() as $user) { + $result[] = user_get_user_details($user); + } + + return $result; + } + + /** + * Returns description of method result value. + * + * @return external_description + * @since Moodle 2.2 + */ + public static function get_list_administrators_returns() { + return new external_multiple_structure(core_user_external::user_description()); + } +} -- cgit v1.2.3