From f10edc9792028854a9780d16d2ff8d891f958731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Sun, 24 Feb 2013 12:17:16 +0100 Subject: [PATCH] MDL-37963 do request flatfile role mapping when adding new roles --- enrol/flatfile/adminlib.php | 57 +++++++++++++++++++++++++++++++++++ enrol/flatfile/db/install.php | 35 +++++++++++++++++++++ enrol/flatfile/settings.php | 6 ++-- 3 files changed, 96 insertions(+), 2 deletions(-) create mode 100644 enrol/flatfile/adminlib.php create mode 100644 enrol/flatfile/db/install.php diff --git a/enrol/flatfile/adminlib.php b/enrol/flatfile/adminlib.php new file mode 100644 index 00000000000..971a84748f1 --- /dev/null +++ b/enrol/flatfile/adminlib.php @@ -0,0 +1,57 @@ +. + +/** + * Special flatfile settings. + * + * @package enrol_flatfile + * @copyright 2013 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +require_once("$CFG->libdir/adminlib.php"); + + +/** + * Setting class that stores only non-empty values. + */ +class enrol_flatfile_role_setting extends admin_setting_configtext { + + public function __construct($role) { + parent::__construct('enrol_flatfile/map_'.$role->id, $role->localname, '', $role->shortname); + } + + public function config_read($name) { + $value = parent::config_read($name); + if (is_null($value)) { + // In other settings NULL means we have to ask user for new value, + // here we just ignore missing role mappings. + $value = ''; + } + return $value; + } + + public function config_write($name, $value) { + if ($value === '') { + // We do not want empty values in config table, + // delete it instead. + $value = null; + } + return parent::config_write($name, $value); + } +} diff --git a/enrol/flatfile/db/install.php b/enrol/flatfile/db/install.php new file mode 100644 index 00000000000..93c2cda3255 --- /dev/null +++ b/enrol/flatfile/db/install.php @@ -0,0 +1,35 @@ +. + +/** + * Flatfile enrolment plugin installation. + * + * @package enrol_flatfile + * @copyright 2013 Petr Skoda {@link http://skodak.org} + * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later + */ + +defined('MOODLE_INTERNAL') || die(); + +function xmldb_enrol_flatfile_install() { + global $CFG, $DB; + + // Flatfile role mappings are empty by default now. + $roles = get_all_roles(); + foreach ($roles as $role) { + set_config('map_'.$role->id, $role->shortname, 'enrol_flatfile'); + } +} diff --git a/enrol/flatfile/settings.php b/enrol/flatfile/settings.php index d8bba476942..379568e5dd7 100644 --- a/enrol/flatfile/settings.php +++ b/enrol/flatfile/settings.php @@ -25,6 +25,8 @@ defined('MOODLE_INTERNAL') || die(); +require_once(__DIR__.'/adminlib.php'); + if ($ADMIN->fulltree) { //--- general settings ----------------------------------------------------------------------------------- @@ -61,8 +63,8 @@ if ($ADMIN->fulltree) { $roles = role_fix_names(get_all_roles()); - foreach ($roles as $id => $role) { - $settings->add(new admin_setting_configtext('enrol_flatfile/map_'.$id, $role->localname, '', $role->shortname)); + foreach ($roles as $role) { + $settings->add(new enrol_flatfile_role_setting($role)); } unset($roles); }