I have collected code that used to be in lib/adminlib.php, lib/accesslib.php and user/selector/lib.php into a new admin/roles/lib.php file.
And I added standard GPL and Moodle comments to all the files in admin/roles.
This implements the page showing the table. It is not yet integrated into the tab bar. To try this, go to an Assign roles page (one with URL .../admin/roles/assign.php?contextid=...) and change the 'assign' to 'explain'.
* New table role_context_levels
* Populate table with defaults on install
* Populate table on upgrade with the same defaults, plus any additional ones needed to ensure all the role assignments already in the database are allowed.
* Change get_assignable_roles to respect these settings.
* UI for these settings on the add/edit role form.
* Save these settings when a role definition is saved.
* If in a context, there are no roles you can assign, display a polite message.
* Back up these settings.
* Restore these settings. When resotring a <=1.9.x backup file, any newly imported roles are set to be assignable at all contextlevels.
Restore not tested because it is broken in HEAD.
Including:
MDL-11529 When assigning/overriding roles, the dropdown for switching to another role should have a number in brackets
MDL-16549 Should not be able to edit the permission associated with moodle/site:doanything on any role.
This steals the logic from accesslib used to detect dirty contexts and so reload cached access data when permissions are changed.
Here, we track when user preferences are changed, so that if necessary we can trigger a reaload. This helps in two situations:
1. When you are logged into Moodle with two different browsers.
2. When someone else changes one of your preferences.
After this change, you will see the changed user pref immediately in all sessions.
This adds one cheap DB query to any page that tries to access a user preference (which is almost all of them, because of deciding whether to show the messaging pop-up). It adds a few more queries in the cases when a user preference is changed. This is in the name of correctness.
* Make the role being assigned clear in the title
* Make the options in the middle of the page be in a collapsable options section, collapsed by default.
* Put them in a smaller font too.
* Switch the date selectors here to use a shorter date format, and change 'Course start date' to 'Course start'.
One needs just add $CFG->skiplangupgrade = true; to their config.php and keep their language pack up-to-date manually. This is intended for lang pack maintainers with CVS access only.
This is backpported from MOODLE_19_STABLE admin/index.php