mirror of
https://github.com/moodle/moodle.git
synced 2025-04-13 12:32:08 +02:00
MDL-8209 - Force admin/index.php to redirect to upgrade settings screen
when some admin settings are not set.
This commit is contained in:
parent
ec36253d73
commit
2acc1f9678
@ -522,11 +522,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
$adminroot = admin_get_root();
|
||||
|
||||
/// Check if there are any new admin settings which have still yet to be set
|
||||
if( any_new_admin_settings( $adminroot ) ){
|
||||
redirect('upgradesettings.php');
|
||||
}
|
||||
|
||||
/// Everything should now be set up, and the user is an admin
|
||||
|
||||
/// Print default admin page with notifications.
|
||||
|
||||
$adminroot = admin_get_root();
|
||||
admin_externalpage_setup('adminnotifications', $adminroot);
|
||||
admin_externalpage_print_header($adminroot);
|
||||
|
||||
|
@ -2823,4 +2823,35 @@ function upgrade_language_pack($lang='') {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Based on find_new_settings{@link ()} in upgradesettings.php
|
||||
* Looks to find any admin settings that have not been initialized. Returns 1 if it finds any.
|
||||
*
|
||||
* @param string &$node The node at which to start searching.
|
||||
* @return int Returns 1 if any settings haven't been initialised, 0 if they all have
|
||||
*/
|
||||
function any_new_admin_settings(&$node) {
|
||||
|
||||
if (is_a($node, 'admin_category')) {
|
||||
$entries = array_keys($node->children);
|
||||
foreach ($entries as $entry) {
|
||||
if( any_new_admin_settings($node->children[$entry]) ){
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (is_a($node, 'admin_settingpage')) {
|
||||
foreach ($node->settings as $setting) {
|
||||
if ($setting->get_setting() === NULL) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
Loading…
x
Reference in New Issue
Block a user