From 72ed3241226940bee8c45b27be85b4a22453f99c Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Thu, 7 Jun 2018 06:39:36 +0400 Subject: Main library Signed-off-by: Valentin Popov --- lib.php | 137 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 lib.php (limited to 'lib.php') diff --git a/lib.php b/lib.php new file mode 100644 index 0000000..b67904f --- /dev/null +++ b/lib.php @@ -0,0 +1,137 @@ +. + +/** + * Main functions of the plugin. + * + * @copyright 2018 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package tool_apisiteadmins + */ + +defined("MOODLE_INTERNAL") || die(); + +/** + * Functions for working with the list of administrators. + * + * @copyright 2018 "Valentin Popov" + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + * @package tool_apisiteadmins + */ +class tool_apisiteadmins { + /** + * Adds a user to the list of administrators. + * + * @param number $userid System user ID + * @return boolean Result of execution + */ + public static function add_user($userid) { + if (!core_user::is_real_user($userid, true)) { + print_error("invaliduser", "error", null); + } + + $userid = (int)$userid; + $admins = self::get_list(); + $admins[$userid] = $userid; + + self::create_event("administrator_added", $userid); + return self::save_changes($admins); + } + + /** + * Removes a user from the list of administrators. + * + * @param number $userid System user ID + * @return boolean Result of execution + */ + public static function remove_user($userid) { + if (!core_user::is_real_user($userid, true)) { + print_error("invaliduser", "error", null); + } + + $userid = (int)$userid; + $admins = self::get_list(); + unset($admins[$userid]); + + self::create_event("administrator_deleted", $userid); + return self::save_changes($admins); + } + + /** + * Registers the user as the primary administrator. + * + * @param number $userid System user ID + * @return boolean Result of execution + */ + public static function set_main($userid) { + if (!core_user::is_real_user($userid, true)) { + print_error("invaliduser", "error", null); + } + + $userid = (int)$userid; + $admins = self::get_list(); + if (isset($admins[$userid])) { + unset($admins[$userid]); + array_unshift($admins, $userid); + } + + self::create_event("administrator_changed", $userid); + return self::save_changes($admins); + } + + /** + * Creates an entry in the system log. + * + * @param string $name Event name + * @param number $userid System user ID + */ + private static function create_event($name, $userid) { + $function = "tool_apisiteadmins\\event\\$name"; + $function::create(array("relateduserid" => $userid))->trigger(); + } + + /** + * Applies the changes on the site. + * + * @return array List of administrators + */ + private static function get_list() { + $config = get_config("core", "siteadmins"); + + $result = array(); + foreach (explode(",", $config) as $id) { + $id = (int)$id; + if (!empty($id)) { + $result[$id] = $id; + } + } + + return $result; + } + + /** + * Applies the changes on the site. + * + * @param array $admins List of administrators + */ + private static function save_changes($admins) { + if (empty($admins)) { + $admins = self::get_list(); + } + + return set_config("siteadmins", implode(",", $admins)); + } +} -- cgit v1.2.3 From 62c0ddbcd27f93fd9e2882dd035ab83a848ee3c4 Mon Sep 17 00:00:00 2001 From: Valentin Popov Date: Mon, 11 Jun 2018 19:00:07 +0400 Subject: Fix check MOODLE_INTERNAL Signed-off-by: Valentin Popov --- classes/event/administrator_added.php | 2 +- classes/event/administrator_changed.php | 2 +- classes/event/administrator_deleted.php | 2 +- db/services.php | 2 +- externallib.php | 2 +- lib.php | 2 +- tests/api_test.php | 2 +- tests/external_test.php | 2 +- version.php | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) (limited to 'lib.php') diff --git a/classes/event/administrator_added.php b/classes/event/administrator_added.php index 509f1b6..dd1aab2 100644 --- a/classes/event/administrator_added.php +++ b/classes/event/administrator_added.php @@ -24,7 +24,7 @@ namespace tool_apisiteadmins\event; -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); /** * Defines how to work with events. diff --git a/classes/event/administrator_changed.php b/classes/event/administrator_changed.php index 97966f8..4280d1d 100644 --- a/classes/event/administrator_changed.php +++ b/classes/event/administrator_changed.php @@ -24,7 +24,7 @@ namespace tool_apisiteadmins\event; -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); /** * Defines how to work with events. diff --git a/classes/event/administrator_deleted.php b/classes/event/administrator_deleted.php index 944dab5..81b89b9 100644 --- a/classes/event/administrator_deleted.php +++ b/classes/event/administrator_deleted.php @@ -24,7 +24,7 @@ namespace tool_apisiteadmins\event; -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); /** * Defines how to work with events. diff --git a/db/services.php b/db/services.php index da355b3..7212a72 100644 --- a/db/services.php +++ b/db/services.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); $functions = array( "tool_apisiteadmins_add_to_administrators" => array( diff --git a/externallib.php b/externallib.php index 8054fcc..3f83eca 100644 --- a/externallib.php +++ b/externallib.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); require_once(__DIR__ . "/lib.php"); diff --git a/lib.php b/lib.php index b67904f..d41597b 100644 --- a/lib.php +++ b/lib.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); /** * Functions for working with the list of administrators. diff --git a/tests/api_test.php b/tests/api_test.php index a0c6fef..8155545 100644 --- a/tests/api_test.php +++ b/tests/api_test.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); global $CFG; diff --git a/tests/external_test.php b/tests/external_test.php index 7368550..83c58c5 100644 --- a/tests/external_test.php +++ b/tests/external_test.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); global $CFG; diff --git a/version.php b/version.php index 21a36bb..460c521 100644 --- a/version.php +++ b/version.php @@ -22,7 +22,7 @@ * @package tool_apisiteadmins */ -defined("MOODLE_INTERNAL") || die(); +defined('MOODLE_INTERNAL') || die(); $plugin->component = "tool_apisiteadmins"; $plugin->maturity = MATURITY_STABLE; -- cgit v1.2.3