diff --git a/admin/report/capability/lang/en/report_capability.php b/admin/report/capability/lang/en/report_capability.php
index b2a793b3734..b18dafff5d7 100644
--- a/admin/report/capability/lang/en/report_capability.php
+++ b/admin/report/capability/lang/en/report_capability.php
@@ -23,7 +23,6 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-$string['capability'] = 'Capability report';
$string['capabilitylabel'] = 'Capability:';
$string['capabilityreport'] = 'Capability report';
$string['forroles'] = 'For roles {$a}';
@@ -31,6 +30,7 @@ $string['getreport'] = 'Get the report';
$string['changeoverrides'] = 'Change overrides in this context';
$string['changeroles'] = 'Change role definitions';
$string['intro'] = 'This report shows, for a particular capability, what permission that capability has in the definition of every role (or a selection of roles), and everywhere in the site where that capability is overridden.';
+$string['pluginname'] = 'Capability report';
$string['reportforcapability'] = 'Report for capability \'{$a}\'';
$string['reportsettings'] = 'Report settings';
$string['roleslabel'] = 'Roles:';
diff --git a/admin/report/capability/settings.php b/admin/report/capability/settings.php
index 866b45cded1..9e5569e50d1 100644
--- a/admin/report/capability/settings.php
+++ b/admin/report/capability/settings.php
@@ -2,4 +2,4 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('roles', new admin_externalpage('reportcapability', get_string('capability', 'report_capability'), "$CFG->wwwroot/$CFG->admin/report/capability/index.php",'moodle/role:manage'));
+$ADMIN->add('roles', new admin_externalpage('reportcapability', get_string('pluginname', 'report_capability'), "$CFG->wwwroot/$CFG->admin/report/capability/index.php",'moodle/role:manage'));
diff --git a/admin/report/courseoverview/lang/en/report_courseoverview.php b/admin/report/courseoverview/lang/en/report_courseoverview.php
index 191bff32656..5615967d208 100644
--- a/admin/report/courseoverview/lang/en/report_courseoverview.php
+++ b/admin/report/courseoverview/lang/en/report_courseoverview.php
@@ -24,3 +24,4 @@
*/
$string['courseoverview:view'] = 'View course overview report';
+$string['pluginname'] = 'Course overview';
\ No newline at end of file
diff --git a/admin/report/courseoverview/settings.php b/admin/report/courseoverview/settings.php
index 1e34a7af1f4..c6a0589c45a 100644
--- a/admin/report/courseoverview/settings.php
+++ b/admin/report/courseoverview/settings.php
@@ -2,4 +2,4 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportcourseoverview', get_string('courseoverview', 'admin'), "$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/$CFG->admin/report/courseoverview/index.php",'report/courseoverview:view'));
diff --git a/admin/report/questioninstances/lang/en/report_questioninstances.php b/admin/report/questioninstances/lang/en/report_questioninstances.php
index c6b7020f7bb..20216780311 100644
--- a/admin/report/questioninstances/lang/en/report_questioninstances.php
+++ b/admin/report/questioninstances/lang/en/report_questioninstances.php
@@ -27,7 +27,7 @@ $string['editquestionshere'] = 'Edit questions in this context';
$string['getreport'] = 'Get the report';
$string['hiddenquestions'] = 'Hidden';
$string['intro'] = 'This report lists all the contexts in the system where there are questions of a particular type.';
-$string['questioninstances'] = 'Question instances';
+$string['pluginname'] = 'Question instances';
$string['questioninstances:view'] = 'View question instances report';
$string['reportforallqtypes'] = 'Report for all question types';
$string['reportformissingqtypes'] = 'Report for question of unknown types';
diff --git a/admin/report/questioninstances/settings.php b/admin/report/questioninstances/settings.php
index 919d192d44c..263d39d745c 100644
--- a/admin/report/questioninstances/settings.php
+++ b/admin/report/questioninstances/settings.php
@@ -2,4 +2,4 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportquestioninstances', get_string('questioninstances', '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/$CFG->admin/report/questioninstances/index.php", 'report/questioninstances:view'));
diff --git a/admin/report/security/lang/en/report_security.php b/admin/report/security/lang/en/report_security.php
index e80d85f50b5..6c4b66ee3da 100644
--- a/admin/report/security/lang/en/report_security.php
+++ b/admin/report/security/lang/en/report_security.php
@@ -131,7 +131,7 @@ $string['check_unsecuredataroot_name'] = 'Insecure dataroot';
$string['check_unsecuredataroot_ok'] = 'Dataroot directory must not be accessible via the web.';
$string['check_unsecuredataroot_warning'] = 'Your dataroot directory {$a} is in the wrong location and might be exposed to the web.';
$string['issue'] = 'Issue';
-$string['reportsecurity'] = 'Security overview';
+$string['pluginname'] = 'Security overview';
$string['security:view'] = 'View security report';
$string['status'] = 'Status';
$string['statuscritical'] = 'Critical';
diff --git a/admin/report/security/settings.php b/admin/report/security/settings.php
index 82cce3653a2..8ea8b238eba 100644
--- a/admin/report/security/settings.php
+++ b/admin/report/security/settings.php
@@ -2,4 +2,4 @@
defined('MOODLE_INTERNAL') || die;
-$ADMIN->add('reports', new admin_externalpage('reportsecurity', get_string('reportsecurity', 'report_security'), "$CFG->wwwroot/$CFG->admin/report/security/index.php",'report/security:view'));
+$ADMIN->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/report/spamcleaner/lang/en/report_spamcleaner.php b/admin/report/spamcleaner/lang/en/report_spamcleaner.php
index 6a7123a9638..9ed913bb201 100644
--- a/admin/report/spamcleaner/lang/en/report_spamcleaner.php
+++ b/admin/report/spamcleaner/lang/en/report_spamcleaner.php
@@ -23,10 +23,10 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
+$string['pluginname'] = 'Spam cleaner';
$string['spamauto'] = 'Autodetect common spam patterns';
$string['spamcannotdelete'] = 'Cannot delete this user';
$string['spamcannotfinduser'] = 'No users matching your search';
-$string['spamcleaner'] = 'Spam cleaner';
$string['spamcleanerintro'] = 'This script allows you to search all user profiles for certain strings and then delete those accounts which are obviously created by spammers. You can search for multiple keywords using commas (eg casino, porn)
Moodle docs has more information about Reducing spam in Moodle.';
$string['spamdeleteall'] = 'Delete all these user accounts';
$string['spamdeleteallconfirm'] = 'Are you sure you want to delete all these user accounts? You can not undo this.';
diff --git a/admin/report/spamcleaner/settings.php b/admin/report/spamcleaner/settings.php
index 974ac61501f..7efc70a5984 100644
--- a/admin/report/spamcleaner/settings.php
+++ b/admin/report/spamcleaner/settings.php
@@ -3,5 +3,5 @@
defined('MOODLE_INTERNAL') || die;
// spam cleaner
-$ADMIN->add('reports', new admin_externalpage('reportspamcleaner', get_string('spamcleaner', 'report_spamcleaner'), "$CFG->wwwroot/$CFG->admin/report/spamcleaner/index.php", 'moodle/site:config'));
+$ADMIN->add('reports', new admin_externalpage('reportspamcleaner', get_string('pluginname', 'report_spamcleaner'), "$CFG->wwwroot/$CFG->admin/report/spamcleaner/index.php", 'moodle/site:config'));
diff --git a/admin/report/unittest/lang/en/report_unittest.php b/admin/report/unittest/lang/en/report_unittest.php
index 56f207461e1..1da08967629 100644
--- a/admin/report/unittest/lang/en/report_unittest.php
+++ b/admin/report/unittest/lang/en/report_unittest.php
@@ -23,4 +23,5 @@
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
+$string['pluginname'] = 'Unit tests';
$string['unittest:view'] = 'Execute unit tests';
diff --git a/lib/accesslib.php b/lib/accesslib.php
index 25b06de755c..b3dcd389c0b 100755
--- a/lib/accesslib.php
+++ b/lib/accesslib.php
@@ -3991,7 +3991,7 @@ function get_capability_string($capabilityname) {
$dir = get_component_directory($component);
if (!file_exists($dir)) {
// plugin broken or does not exist, do not bother with printing of debug message
- return $capabilityname;
+ return $capabilityname.' ???';
}
// something is wrong in plugin, better print debug
@@ -4008,84 +4008,41 @@ function get_capability_string($capabilityname) {
*/
function get_component_string($component, $contextlevel) {
- switch ($contextlevel) {
-
- case CONTEXT_SYSTEM:
- if (preg_match('|^enrol|', $component)) {
- $langname = str_replace('/', '_', $component);
- $string = get_string('pluginname', $langname);
- } else if (preg_match('|^block|', $component)) {
- $langname = str_replace('/', '_', $component);
- $string = get_string('pluginname', $langname);
- } else if (preg_match('|^local|', $component)) {
- $langname = str_replace('/', '_', $component);
- $string = get_string('local');
- } else if (preg_match('|^repository|', $component)) {
- $string = get_string('repository', 'repository').': '.get_string('pluginname', $component);
- } else if (preg_match('|^report|', $component)) {
- $string = get_string('reports');
- } else {
- $string = get_string('coresystem');
- }
- break;
-
- case CONTEXT_USER:
- $string = get_string('users');
- break;
-
- case CONTEXT_COURSECAT:
- if (preg_match('|^enrol|', $component)) {
- $langname = str_replace('/', '_', $component);
- $string = get_string('pluginname', $langname);
- } else {
- $string = get_string('categories');
- }
- break;
-
- case CONTEXT_COURSE:
- if (preg_match('|^enrol|', $component)) {
- $langname = str_replace('/', '_', $component);
- $string = get_string('pluginname', $langname);
- } else if (preg_match('|^gradeimport|', $component)) {
- $string = get_string('gradeimport', 'grades').': '.get_string('pluginname', $component);
- } else if (preg_match('|^gradeexport|', $component)) {
- $string = get_string('gradeexport', 'grades').': '.get_string('pluginname', $component);
- } else if (preg_match('|^gradereport|', $component)) {
- $string = get_string('gradereport', 'grades').': '.get_string('pluginname', $component);
- } else if (preg_match('|^coursereport|', $component)) {
- $string = get_string('coursereport').': '.get_string('pluginname', $component);
- } else if (preg_match('|^webservice|', $component)) {
- $string = get_string('webservice', 'webservice').': '.get_string('pluginname', $component);
+ if ($component === 'moodle' or $component === 'core') {
+ switch ($contextlevel) {
+ case CONTEXT_SYSTEM: return get_string('coresystem');
+ case CONTEXT_USER: return get_string('users');
+ case CONTEXT_COURSECAT: return get_string('categories');
+ case CONTEXT_COURSE: return get_string('course');
+ case CONTEXT_MODULE: return get_string('activities');
+ case CONTEXT_BLOCK: return get_string('block');
+ default: print_error('unknowncontext');
+ }
+ }
+
+ list($type, $name) = normalize_component($component);
+ $dir = get_plugin_directory($type, $name);
+ if (!file_exists($dir)) {
+ // plugin not installed, bad luck, there is no way to find the name
+ return $component.' ???';
+ }
+
+ switch ($type) {
+ case 'quiz': return get_string($name.':componentname', $component);// insane hack!!!
+ case 'repository': return get_string('repository', 'repository').': '.get_string('pluginname', $component);
+ case 'gradeimport': return get_string('gradeimport', 'grades').': '.get_string('pluginname', $component);
+ case 'gradeexport': return get_string('gradeexport', 'grades').': '.get_string('pluginname', $component);
+ case 'gradereport': return get_string('gradereport', 'grades').': '.get_string('pluginname', $component);
+ case 'webservice': return get_string('webservice', 'webservice').': '.get_string('pluginname', $component);
+ case 'block': return get_string('block').': '.get_string('pluginname', basename($component));
+ case 'mod':
+ if (get_string_manager()->string_exists('pluginname', $component)) {
+ return get_string('activity').': '.get_string('pluginname', $component);
} else {
- $string = get_string('course');
+ return get_string('activity').': '.get_string('modulename', $component);
}
- break;
-
- case CONTEXT_MODULE:
- if (preg_match('|^quiz_([a-z_]*)|', $component, $matches)){
- $langname = 'quiz_'.$matches[1];
- $string = get_string($matches[1].':componentname', $langname);
- } else if (preg_match('|^moodle|', $component)) {
- $string = get_string('activities');
- } else {
- $string = get_string('activity').': '.get_string('modulename', preg_replace('#(\w+_)#', '', basename($component)));
- }
- break;
-
- case CONTEXT_BLOCK:
- if ($component == 'moodle' ){
- $string = get_string('block');
- }else{
- $string = get_string('block').': '.get_string('pluginname', basename($component));
- }
- break;
-
- default:
- print_error('unknowncontext');
- return false;
-
+ default: return get_string('pluginname', $component);
}
- return $string;
}
/**