diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php index 9b21688cca1..265931c7342 100644 --- a/admin/settings/plugins.php +++ b/admin/settings/plugins.php @@ -1,5 +1,9 @@ libdir. '/portfoliolib.php'); @@ -260,3 +264,22 @@ if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) } } } + + +/// Now add reports + +foreach (get_list_of_plugins($CFG->admin.'/report') as $plugin) { + $settings_path = "$CFG->dirroot/$CFG->admin/report/$plugin/settings.php"; + if (file_exists($settings_path)) { + include($settings_path); + continue; + } + + $index_path = "$CFG->dirroot/$CFG->admin/report/$plugin/index.php"; + if (!file_exists($index_path)) { + continue; + } + // old style 3rd party plugin without settings.php + $ADMIN->add('reports', new admin_externalpage('report'.$plugin, $plugin, $index_path, 'moodle/site:viewreports')); +} + diff --git a/admin/settings/report.php b/admin/settings/report.php deleted file mode 100644 index 790d0d7353a..00000000000 --- a/admin/settings/report.php +++ /dev/null @@ -1,18 +0,0 @@ -admin.'/report') as $plugin) { - $settings_path = "$CFG->dirroot/$CFG->admin/report/$plugin/settings.php"; - if (file_exists($settings_path)) { - include($settings_path); - continue; - } - - $index_path = "$CFG->dirroot/$CFG->admin/report/$plugin/index.php"; - if (!file_exists($index_path)) { - continue; - } - // old style 3rd party plugin without settings.php - $ADMIN->add('reports', new admin_externalpage('report'.$plugin, $plugin, $index_path, 'moodle/site:viewreports')); -} - -?> diff --git a/admin/settings/top.php b/admin/settings/top.php index b09703ee1b0..f179cda7a5e 100644 --- a/admin/settings/top.php +++ b/admin/settings/top.php @@ -24,9 +24,6 @@ if ($hassiteconfig) { } $ADMIN->add('root', new admin_category('users', get_string('users','admin'))); - $ADMIN->add('users', new admin_category('authsettings', get_string('authentication','admin'))); - $ADMIN->add('users', new admin_category('accounts', get_string('accounts', 'admin'))); - $ADMIN->add('users', new admin_category('roles', get_string('permissions', 'role'))); $ADMIN->add('root', new admin_category('courses', get_string('courses','admin'))); $ADMIN->add('root', new admin_category('grades', get_string('grades'))); $ADMIN->add('root', new admin_category('location', get_string('location','admin'))); diff --git a/admin/settings/users.php b/admin/settings/users.php index 17de059d2e6..f703294c9dd 100644 --- a/admin/settings/users.php +++ b/admin/settings/users.php @@ -11,6 +11,8 @@ if ($hassiteconfig or has_capability('moodle/role:assign', $systemcontext)) { // speedup for non-admins, add all caps used on this page + $ADMIN->add('users', new admin_category('authsettings', get_string('authentication','admin'))); + $temp = new admin_settingpage('manageauths', get_string('authsettings', 'admin')); $temp->add(new admin_setting_manageauths()); $temp->add(new admin_setting_heading('manageauthscommonheading', get_string('commonsettings', 'admin'), '')); @@ -68,6 +70,7 @@ if ($hassiteconfig $securewwwroot = str_replace('http:','https:',$CFG->wwwroot); } // stuff under the "accounts" subcategory + $ADMIN->add('users', new admin_category('accounts', get_string('accounts', 'admin'))); $ADMIN->add('accounts', new admin_externalpage('editusers', get_string('userlist','admin'), "$CFG->wwwroot/$CFG->admin/user.php", array('moodle/user:update', 'moodle/user:delete'))); $ADMIN->add('accounts', new admin_externalpage('userbulk', get_string('userbulk','admin'), "$CFG->wwwroot/$CFG->admin/user/user_bulk.php", array('moodle/user:update', 'moodle/user:delete'))); $ADMIN->add('accounts', new admin_externalpage('addnewuser', get_string('addnewuser'), "$securewwwroot/user/editadvanced.php?id=-1", 'moodle/user:create')); @@ -77,6 +80,7 @@ if ($hassiteconfig // stuff under the "roles" subcategory + $ADMIN->add('users', new admin_category('roles', get_string('permissions', 'role'))); // "userpolicies" settingpage $temp = new admin_settingpage('userpolicies', get_string('userpolicies', 'admin')); diff --git a/lib/adminlib.php b/lib/adminlib.php index 027452dc19f..3b56e1d28e1 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -5378,10 +5378,16 @@ function &admin_get_root($reload=false, $requirefulltree=true) { // now we process all other files in admin/settings to build the admin tree foreach (glob($CFG->dirroot.'/'.$CFG->admin.'/settings/*.php') as $file) { - if ($file != $CFG->dirroot.'/'.$CFG->admin.'/settings/top.php') { - include($file); + if ($file == $CFG->dirroot.'/'.$CFG->admin.'/settings/top.php') { + continue; } + if ($file == $CFG->dirroot.'/'.$CFG->admin.'/settings/plugins.php') { + // plugins are loaded last - they may insert pages anywhere + continue; + } + include($file); } + include($CFG->dirroot.'/'.$CFG->admin.'/settings/plugins.php'); if (file_exists($CFG->dirroot.'/local/settings.php')) { include_once($CFG->dirroot.'/local/settings.php');