diff --git a/admin/report/configlog/settings.php b/admin/report/configlog/settings.php
deleted file mode 100644
index 21fe2f816fe..00000000000
--- a/admin/report/configlog/settings.php
+++ /dev/null
@@ -1,5 +0,0 @@
-add('reports', new admin_externalpage('reportconfiglog', get_string('configlog', 'report_configlog'), "$CFG->wwwroot/$CFG->admin/report/configlog/index.php"));
diff --git a/admin/report/security/settings.php b/admin/report/security/settings.php
deleted file mode 100644
index 8ea8b238eba..00000000000
--- a/admin/report/security/settings.php
+++ /dev/null
@@ -1,5 +0,0 @@
-add('reports', new admin_externalpage('reportsecurity', get_string('pluginname', 'report_security'), "$CFG->wwwroot/$CFG->admin/report/security/index.php",'report/security:view'));
diff --git a/admin/settings/plugins.php b/admin/settings/plugins.php
index e05d3e40e4e..6875bff7826 100644
--- a/admin/settings/plugins.php
+++ b/admin/settings/plugins.php
@@ -454,25 +454,29 @@ if ($hassiteconfig) {
$ADMIN->add('coursereports', $page);
}
}
+ unset($pages);
}
// Now add reports
+$pages = array();
foreach (get_plugin_list('report') as $plugin => $plugindir) {
$settings_path = "$plugindir/settings.php";
if (file_exists($settings_path)) {
+ $settings = new admin_settingpage('report' . $report,
+ get_string('pluginname', 'report_' . $report), 'moodle/site:config');
include($settings_path);
- continue;
+ if ($settings) {
+ $pages[] = $settings;
+ }
}
-
- $index_path = "$plugindir/index.php";
- if (!file_exists($index_path)) {
- continue;
- }
- // old style 3rd party plugin without settings.php
- $www_path = "$CFG->wwwroot/$CFG->admin/report/$plugin/index.php";
- $reportname = get_string($plugin, 'report_' . $plugin);
- $ADMIN->add('reports', new admin_externalpage('report'.$plugin, $reportname, $www_path, 'moodle/site:viewreports'));
}
+if (!empty($pages)) {
+ $ADMIN->add('modules', new admin_category('reports', get_string('reports')));
+ foreach ($pages as $page) {
+ $ADMIN->add('reports', $page);
+ }
+}
+unset($pages);
// Now add various admin tools
foreach (get_plugin_list('tool') as $plugin => $plugindir) {
diff --git a/lib/moodlelib.php b/lib/moodlelib.php
index 7780f7ffcbe..39665f3d23a 100644
--- a/lib/moodlelib.php
+++ b/lib/moodlelib.php
@@ -7348,7 +7348,7 @@ function get_plugin_types($fullpaths=true) {
'editor' => 'lib/editor',
'format' => 'course/format',
'profilefield' => 'user/profile/field',
- 'report' => $CFG->admin.'/report',
+ 'report' => 'report',
'coursereport' => 'course/report', // must be after system reports
'gradeexport' => 'grade/export',
'gradeimport' => 'grade/import',
diff --git a/admin/report/backups/index.php b/report/backups/index.php
similarity index 99%
rename from admin/report/backups/index.php
rename to report/backups/index.php
index 6a370e51ec8..f127277e4a0 100644
--- a/admin/report/backups/index.php
+++ b/report/backups/index.php
@@ -23,7 +23,7 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-require_once('../../../config.php');
+require_once('../../config.php');
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->dirroot.'/backup/lib.php');
diff --git a/report/backups/lang/en/report_backups.php b/report/backups/lang/en/report_backups.php
new file mode 100644
index 00000000000..0942bf2a195
--- /dev/null
+++ b/report/backups/lang/en/report_backups.php
@@ -0,0 +1,26 @@
+.
+
+/**
+ * Strings for component 'report_backups'
+ *
+ * @package report
+ * @subpackage backups
+ * @copyright 2011 Petr Skoda (http://skodak.org)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['pluginname'] = 'Backups report';
diff --git a/admin/report/backups/settings.php b/report/backups/settings.php
similarity index 87%
rename from admin/report/backups/settings.php
rename to report/backups/settings.php
index 38e4053f1da..e1428962111 100644
--- a/admin/report/backups/settings.php
+++ b/report/backups/settings.php
@@ -25,4 +25,7 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportbackups', get_string('backups', 'admin'), "$CFG->wwwroot/$CFG->admin/report/backups/index.php",'moodle/backup:backupcourse'));
+$ADMIN->add('reports', new admin_externalpage('reportbackups', get_string('backups', 'admin'), "$CFG->wwwroot/report/backups/index.php",'moodle/backup:backupcourse'));
+
+// no report settings
+$settings = null;
\ No newline at end of file
diff --git a/admin/report/configlog/index.php b/report/configlog/index.php
similarity index 98%
rename from admin/report/configlog/index.php
rename to report/configlog/index.php
index 26d032661a5..4ba337edd33 100644
--- a/admin/report/configlog/index.php
+++ b/report/configlog/index.php
@@ -1,6 +1,6 @@
libdir.'/adminlib.php');
// page parameters
diff --git a/admin/report/configlog/lang/en/report_configlog.php b/report/configlog/lang/en/report_configlog.php
similarity index 96%
rename from admin/report/configlog/lang/en/report_configlog.php
rename to report/configlog/lang/en/report_configlog.php
index 0de8dbd2457..881ff4bb71d 100644
--- a/admin/report/configlog/lang/en/report_configlog.php
+++ b/report/configlog/lang/en/report_configlog.php
@@ -1,5 +1,4 @@
add('reports', new admin_externalpage('reportconfiglog', get_string('configlog', 'report_configlog'), "$CFG->wwwroot/report/configlog/index.php"));
+
+// no report settings
+$settings = null;
diff --git a/admin/report/courseoverview/db/access.php b/report/courseoverview/db/access.php
similarity index 100%
rename from admin/report/courseoverview/db/access.php
rename to report/courseoverview/db/access.php
diff --git a/admin/report/courseoverview/index.php b/report/courseoverview/index.php
similarity index 95%
rename from admin/report/courseoverview/index.php
rename to report/courseoverview/index.php
index 1eb216710f2..78203b43dd5 100644
--- a/admin/report/courseoverview/index.php
+++ b/report/courseoverview/index.php
@@ -1,6 +1,6 @@
dirroot.'/lib/statslib.php');
require_once($CFG->libdir.'/adminlib.php');
@@ -90,7 +90,7 @@
if (empty($CFG->gdversion)) {
echo '
(' . get_string("gdneed") .')
';
} else {
- echo '';
+ echo '';
}
$table = new html_table();
diff --git a/admin/report/courseoverview/lang/en/report_courseoverview.php b/report/courseoverview/lang/en/report_courseoverview.php
similarity index 100%
rename from admin/report/courseoverview/lang/en/report_courseoverview.php
rename to report/courseoverview/lang/en/report_courseoverview.php
diff --git a/admin/report/courseoverview/reportsgraph.php b/report/courseoverview/reportsgraph.php
similarity index 94%
rename from admin/report/courseoverview/reportsgraph.php
rename to report/courseoverview/reportsgraph.php
index 45ea7d8b6b8..519322eacf9 100644
--- a/admin/report/courseoverview/reportsgraph.php
+++ b/report/courseoverview/reportsgraph.php
@@ -1,6 +1,6 @@
dirroot.'/lib/statslib.php');
require_once($CFG->dirroot.'/lib/graphlib.php');
@@ -30,7 +30,7 @@
$courses = $DB->get_records_sql($sql, $param->params, 0, $numcourses);
if (empty($courses)) {
- $PAGE->set_url('/admin/report/courseoverview/index.php');
+ $PAGE->set_url('/report/courseoverview/index.php');
print_error('statsnodata', 'error', $PAGE->url->out());
}
diff --git a/admin/report/courseoverview/settings.php b/report/courseoverview/settings.php
similarity index 60%
rename from admin/report/courseoverview/settings.php
rename to report/courseoverview/settings.php
index c6a0589c45a..81ff9715432 100644
--- a/admin/report/courseoverview/settings.php
+++ b/report/courseoverview/settings.php
@@ -2,4 +2,7 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportcourseoverview', get_string('pluginname', 'report_courseoverview'), "$CFG->wwwroot/$CFG->admin/report/courseoverview/index.php",'report/courseoverview:view'));
+$ADMIN->add('reports', new admin_externalpage('reportcourseoverview', get_string('pluginname', 'report_courseoverview'), "$CFG->wwwroot/report/courseoverview/index.php",'report/courseoverview:view'));
+
+// no report settings
+$settings = null;
diff --git a/admin/report/courseoverview/version.php b/report/courseoverview/version.php
similarity index 100%
rename from admin/report/courseoverview/version.php
rename to report/courseoverview/version.php
diff --git a/report/log/lang/en/report_log.php b/report/log/lang/en/report_log.php
new file mode 100644
index 00000000000..9a447d9202c
--- /dev/null
+++ b/report/log/lang/en/report_log.php
@@ -0,0 +1,26 @@
+.
+
+/**
+ * Strings for component 'report_log'
+ *
+ * @package report
+ * @subpackage log
+ * @copyright 2011 Petr Skoda (http://skodak.org)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['pluginname'] = 'Logs';
diff --git a/admin/report/log/settings.php b/report/log/settings.php
similarity index 91%
rename from admin/report/log/settings.php
rename to report/log/settings.php
index ecaae3b92f3..d879feb10f3 100644
--- a/admin/report/log/settings.php
+++ b/report/log/settings.php
@@ -5,3 +5,6 @@ defined('MOODLE_INTERNAL') || die;
// just a link to course report
$ADMIN->add('reports', new admin_externalpage('reportlog', get_string('log', 'admin'), "$CFG->wwwroot/course/report/log/index.php?id=".SITEID, 'coursereport/log:view'));
$ADMIN->add('reports', new admin_externalpage('reportloglive', get_string('loglive', 'coursereport_log'), "$CFG->wwwroot/course/report/log/indexlive.php?id=".SITEID, 'coursereport/log:viewlive'));
+
+// no report settings
+$settings = null;
diff --git a/admin/report/questioninstances/db/access.php b/report/questioninstances/db/access.php
similarity index 100%
rename from admin/report/questioninstances/db/access.php
rename to report/questioninstances/db/access.php
diff --git a/admin/report/questioninstances/index.php b/report/questioninstances/index.php
similarity index 98%
rename from admin/report/questioninstances/index.php
rename to report/questioninstances/index.php
index 3719baf229d..910a65443d1 100644
--- a/admin/report/questioninstances/index.php
+++ b/report/questioninstances/index.php
@@ -7,7 +7,7 @@
*/
/** */
-require_once(dirname(__FILE__).'/../../../config.php');
+require_once(dirname(__FILE__).'/../../config.php');
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->libdir.'/questionlib.php');
diff --git a/admin/report/questioninstances/lang/en/report_questioninstances.php b/report/questioninstances/lang/en/report_questioninstances.php
similarity index 100%
rename from admin/report/questioninstances/lang/en/report_questioninstances.php
rename to report/questioninstances/lang/en/report_questioninstances.php
diff --git a/admin/report/questioninstances/settings.php b/report/questioninstances/settings.php
similarity index 57%
rename from admin/report/questioninstances/settings.php
rename to report/questioninstances/settings.php
index 263d39d745c..3e784f9aeb9 100644
--- a/admin/report/questioninstances/settings.php
+++ b/report/questioninstances/settings.php
@@ -2,4 +2,7 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportquestioninstances', get_string('pluginname', 'report_questioninstances'), "$CFG->wwwroot/$CFG->admin/report/questioninstances/index.php", 'report/questioninstances:view'));
+$ADMIN->add('reports', new admin_externalpage('reportquestioninstances', get_string('pluginname', 'report_questioninstances'), "$CFG->wwwroot/report/questioninstances/index.php", 'report/questioninstances:view'));
+
+// no report settings
+$settings = null;
diff --git a/admin/report/questioninstances/version.php b/report/questioninstances/version.php
similarity index 100%
rename from admin/report/questioninstances/version.php
rename to report/questioninstances/version.php
diff --git a/admin/report/security/db/access.php b/report/security/db/access.php
similarity index 100%
rename from admin/report/security/db/access.php
rename to report/security/db/access.php
diff --git a/admin/report/security/index.php b/report/security/index.php
similarity index 95%
rename from admin/report/security/index.php
rename to report/security/index.php
index 9b7cfbe1780..51828026dbb 100644
--- a/admin/report/security/index.php
+++ b/report/security/index.php
@@ -25,8 +25,8 @@
define('NO_OUTPUT_BUFFERING', true);
-require_once('../../../config.php');
-require_once($CFG->dirroot.'/'.$CFG->admin.'/report/security/lib.php');
+require_once('../../config.php');
+require_once($CFG->dirroot.'/report/security/lib.php');
require_once($CFG->libdir.'/adminlib.php');
require_login();
@@ -69,7 +69,7 @@ $statusarr = array(REPORT_SECURITY_OK => $strok,
REPORT_SECURITY_SERIOUS => $strserious,
REPORT_SECURITY_CRITICAL => $strcritical);
-$url = "$CFG->wwwroot/$CFG->admin/report/security/index.php";
+$url = "$CFG->wwwroot/report/security/index.php";
if ($issue and ($result = $issue(true))) {
report_security_hide_timearning();
@@ -88,7 +88,7 @@ if ($issue and ($result = $issue(true))) {
$row[2] = $result->info;
$row[3] = is_null($result->link) ? ' ' : $result->link;
- $PAGE->set_docs_path('admin/report/security/' . $issue);
+ $PAGE->set_docs_path('report/security/' . $issue);
$table->data[] = $row;
diff --git a/admin/report/security/lang/en/report_security.php b/report/security/lang/en/report_security.php
similarity index 100%
rename from admin/report/security/lang/en/report_security.php
rename to report/security/lang/en/report_security.php
diff --git a/admin/report/security/lib.php b/report/security/lib.php
similarity index 99%
rename from admin/report/security/lib.php
rename to report/security/lib.php
index 3a455b9bbdc..d8684c86be6 100644
--- a/admin/report/security/lib.php
+++ b/report/security/lib.php
@@ -752,7 +752,7 @@ function report_security_check_riskadmin($detailed=false) {
$url = "$CFG->wwwroot/user/view.php?id=$user->id";
$admins[$uid] = ''.fullname($user).' ('.$user->email.')';
}
- $admins = '';
+ $admins = '';
}
$result->status = REPORT_SECURITY_OK;
@@ -856,7 +856,7 @@ function report_security_check_riskbackup($detailed=false) {
$role->url = "$CFG->wwwroot/$CFG->admin/roles/override.php?contextid=$role->contextid&roleid=$role->id";
$links[] = ''.get_string('check_riskbackup_editoverride', 'report_security', $role).'';
}
- $links = '';
+ $links = '';
$result->details .= get_string('check_riskbackup_details_overriddenroles', 'report_security', $links);
}
@@ -874,7 +874,7 @@ function report_security_check_riskbackup($detailed=false) {
$users[] = ''.get_string('check_riskbackup_unassign', 'report_security', $a).'';
}
if (!empty($users)) {
- $users = '';
+ $users = '';
$result->details .= get_string('check_riskbackup_details_users', 'report_security', $users);
}
}
diff --git a/report/security/settings.php b/report/security/settings.php
new file mode 100644
index 00000000000..14da6ddc1ec
--- /dev/null
+++ b/report/security/settings.php
@@ -0,0 +1,8 @@
+add('reports', new admin_externalpage('reportsecurity', get_string('pluginname', 'report_security'), "$CFG->wwwroot/report/security/index.php",'report/security:view'));
+
+// no report settings
+$settings = null;
diff --git a/admin/report/security/version.php b/report/security/version.php
similarity index 100%
rename from admin/report/security/version.php
rename to report/security/version.php
diff --git a/report/stats/lang/en/report_stats.php b/report/stats/lang/en/report_stats.php
new file mode 100644
index 00000000000..5b8841bb5a8
--- /dev/null
+++ b/report/stats/lang/en/report_stats.php
@@ -0,0 +1,26 @@
+.
+
+/**
+ * Strings for component 'report_stats'
+ *
+ * @package report
+ * @subpackage stats
+ * @copyright 2011 Petr Skoda (http://skodak.org)
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+$string['pluginname'] = 'Statistics';
diff --git a/admin/report/stats/settings.php b/report/stats/settings.php
similarity index 85%
rename from admin/report/stats/settings.php
rename to report/stats/settings.php
index 0283339b0ab..9f19d21713e 100644
--- a/admin/report/stats/settings.php
+++ b/report/stats/settings.php
@@ -4,3 +4,6 @@ defined('MOODLE_INTERNAL') || die;
// just a link to course report
$ADMIN->add('reports', new admin_externalpage('reportstats', get_string('stats', 'admin'), "$CFG->wwwroot/course/report/stats/index.php", 'coursereport/stats:view'));
+
+// no report settings
+$settings = null;
diff --git a/report/upgrade.txt b/report/upgrade.txt
new file mode 100644
index 00000000000..6f9abb057cf
--- /dev/null
+++ b/report/upgrade.txt
@@ -0,0 +1,19 @@
+This files describes API changes in /report/* - plugins,
+information provided here is intended especially for developers.
+
+
+=== 2.2 ===
+
+API changes:
+* reports were moved from /admin/report/ to /report/
+* new support for report settings
+
+
+How to migrate old admin reports:
+# copy all files to new /report/yourplugin/ location
+# if settings.php exists add $settings=null;
+# if settings.php does not exist create it and link the report, index.php is not linked automatically any more
+# update require('../../config.php'); - remove one ../
+# update all links to report pages by removing /admin/ or /$CFG->admin/
+# add language pack with at least pluginname string
+