Skip to content
Snippets Groups Projects
Commit 66bbd2b1 authored by Marcus Eibrink-Lunzenauer's avatar Marcus Eibrink-Lunzenauer
Browse files

Update Courseware's Authority class to allow unlocking blocks.

Refs #887 and #1735.
parent 96b3139e
No related branches found
No related tags found
No related merge requests found
...@@ -58,7 +58,23 @@ class Authority ...@@ -58,7 +58,23 @@ class Authority
public static function canUpdateBlock(User $user, Block $resource) public static function canUpdateBlock(User $user, Block $resource)
{ {
if ($resource->isBlocked()) { if ($resource->isBlocked()) {
return $resource->getBlockerUserId() == $user->id; $structural_element = $resource->container->structural_element;
if ($structural_element->range_type === 'user') {
if ($structural_element->range_id === $user->id) {
return true;
}
return $structural_element->canEdit($user);
}
$perm = $GLOBALS['perm']->have_studip_perm(
$structural_element->course->config->COURSEWARE_EDITING_PERMISSION,
$structural_element->course->id,
$user->id
);
return $resource->getBlockerUserId() === $user->id || $perm;
} }
return self::canUpdateContainer($user, $resource->container); return self::canUpdateContainer($user, $resource->container);
...@@ -71,7 +87,36 @@ class Authority ...@@ -71,7 +87,36 @@ class Authority
public static function canUpdateEditBlocker(User $user, $resource) public static function canUpdateEditBlocker(User $user, $resource)
{ {
return $resource->edit_blocker_id == '' || $resource->edit_blocker_id === $user->id; $structural_element = null;
if ($resource instanceof Block) {
$structural_element = $resource->container->structural_element;
}
if ($resource instanceof Container) {
$structural_element = $resource->structural_element;
}
if ($resource instanceof StructuralElement) {
$structural_element = $resource;
}
if ($structural_element === null) {
return false;
}
if ($structural_element->range_type === 'user') {
if ($structural_element->range_id === $user->id) {
return true;
}
return $structural_element->canEdit($user);
}
$perm = $GLOBALS['perm']->have_studip_perm(
$structural_element->course->config->COURSEWARE_EDITING_PERMISSION,
$structural_element->course->id,
$user->id
);
return $resource->edit_blocker_id == '' || $resource->edit_blocker_id === $user->id || $perm;
} }
public static function canShowContainer(User $user, Container $resource) public static function canShowContainer(User $user, Container $resource)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment