diff --git a/admin/repositoryinstance.php b/admin/repositoryinstance.php index fa4a230d59e..b5eab73ffea 100644 --- a/admin/repositoryinstance.php +++ b/admin/repositoryinstance.php @@ -62,6 +62,9 @@ $return = true; if (!empty($edit) || !empty($new)) { if (!empty($edit)) { $instance = repository::get_instance($edit); + if (!$instance->can_be_edited_by_user()) { + throw new repository_exception('nopermissiontoaccess', 'repository'); + } $instancetype = repository::get_type_by_id($instance->options['typeid']); $classname = 'repository_' . $instancetype->get_typename(); $configs = $instance->get_instance_option_names(); @@ -118,10 +121,12 @@ if (!empty($edit) || !empty($new)) { $return = true; } else if (!empty($delete)) { $instance = repository::get_instance($delete); - //if you try to delete an instance set as readonly, display an error message if ($instance->readonly) { - throw new repository_exception('readonlyinstance', 'repository'); - } + // If you try to delete an instance set as readonly, display an error message. + throw new repository_exception('readonlyinstance', 'repository'); + } else if (!$instance->can_be_edited_by_user()) { + throw new repository_exception('nopermissiontoaccess', 'repository'); + } if ($sure) { if ($instance->delete($downloadcontents)) { $deletedstr = get_string('instancedeleted', 'repository');