MDL-8209 - Force admin/index.php to redirect to upgrade settings screen

when some admin settings are not set.
This commit is contained in:
poltawski 2007-04-18 09:39:49 +00:00
parent ec36253d73
commit 2acc1f9678
2 changed files with 38 additions and 1 deletions

View File

@ -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);

View File

@ -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;
}
?>