MDL-69231 tests: Add role capability setting generator
This commit is contained in:
committed by
Simey Lameze
parent
521e21d842
commit
091aa9b872
@@ -860,6 +860,48 @@ EOD;
|
||||
return $newroleid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set role capabilities for the specified role.
|
||||
*
|
||||
* @param int $roleid The Role to set capabilities for
|
||||
* @param array $rolecapabilities The list of capability =>permission to set for this role
|
||||
* @param context $context The context to apply this capability to
|
||||
*/
|
||||
public function create_role_capability(int $roleid, array $rolecapabilities, context $context = null): void {
|
||||
// Map the capabilities into human-readable names.
|
||||
$allpermissions = [
|
||||
'inherit' => CAP_INHERIT,
|
||||
'allow' => CAP_ALLOW,
|
||||
'prevent' => CAP_PREVENT,
|
||||
'prohibit' => CAP_PROHIBIT,
|
||||
];
|
||||
|
||||
// Fetch all capabilities to check that they exist.
|
||||
$allcapabilities = get_all_capabilities();
|
||||
foreach ($rolecapabilities as $capability => $permission) {
|
||||
if ($permission === '') {
|
||||
// Allow items to be skipped.
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!array_key_exists($capability, $allcapabilities)) {
|
||||
throw new \coding_exception("Unknown capability '{$capability}'");
|
||||
}
|
||||
|
||||
if (!array_key_exists($permission, $allpermissions)) {
|
||||
throw new \coding_exception("Unknown capability permissions '{$permission}'");
|
||||
}
|
||||
|
||||
assign_capability(
|
||||
$capability,
|
||||
$allpermissions[$permission],
|
||||
$roleid,
|
||||
$context->id,
|
||||
true
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a tag.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user