diff --git a/admin/roles/manage.php b/admin/roles/manage.php
index 360f4c899a0..a645ac09c56 100755
--- a/admin/roles/manage.php
+++ b/admin/roles/manage.php
@@ -42,6 +42,12 @@
$i++;
}
+ // do not delete these default system roles
+ $defaultroles = array();
+ $defaultroles[] = $CFG->notloggedinroleid;
+ $defaultroles[] = $CFG->guestroleid;
+ $defaultroles[] = $CFG->defaultuserroleid;
+ $defaultroles[] = $CFG->defaultcourseroleid;
/// form processing, editing a role, adding a role, deleting a role etc.
switch ($action) {
@@ -183,6 +189,9 @@
break;
case 'delete':
+ if (in_array($roleid, $defaultroles)) {
+ error('This role is used as one of the default system roles, it can not be deleted');
+ }
if ($confirm and data_submitted() and confirm_sesskey()) {
if (!delete_role($roleid)) {
error('Could not delete role with ID '.$roleid);
@@ -384,8 +393,12 @@
$row[2] = s($role->shortname);
$row[3] = ''.
'
';
- $row[3] .= ''.
- '
';
+ if (in_array($role->id, $defaultroles)) {
+ $row[3] .= '
';
+ } else {
+ $row[3] .= ''.
+ '
';
+ }
if ($role->sortorder != 0) {
$row[3] .= ''.
'
';