From: skodak <skodak>
Date: Fri, 28 Nov 2008 08:04:23 +0000 (+0000)
Subject: MDL-17372 admin reports: Added full plugin support for admin reports - fixed sorting... 
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=b63a6a6338d5c7f8b6edd75c9a5f098cff67c9f8;p=moodle.git

MDL-17372 admin reports: Added full plugin support for admin reports - fixed sorting regression, plugins now loaded as last category
---

diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php
index 9b21688cca..265931c734 100644
--- a/admin/settings/plugins.php
+++ b/admin/settings/plugins.php
@@ -1,5 +1,9 @@
 <?php  //$Id$
 
+/*
+ * Please note that is file is always loaded last - it means that you can inject entries into other categories too.
+ */
+
 if ($hassiteconfig || has_capability('moodle/question:config', $systemcontext)) {
 
     require_once($CFG->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 790d0d7353..0000000000
--- a/admin/settings/report.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php //$Id$
-
-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/top.php b/admin/settings/top.php
index b09703ee1b..f179cda7a5 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 17de059d2e..f703294c9d 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 027452dc19..3b56e1d28e 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');