blob: 958aef1b955ae71511866631e8692d478af8cc2a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
<?php
namespace JsonApi\Routes\Courseware;
use JsonApi\Errors\ConflictException;
trait EditBlockAwareTrait
{
private function updateLockedResource(\User $user, \SimpleORMap $resource, callable $callback)
{
$dbm = \DBManager::get();
$dbm->beginTransaction();
if (!$resource::findOneBySql('id = ? AND edit_blocker_id = ?', [$resource->id, $user->id])) {
$dbm->rollBack();
throw new ConflictException();
}
$resource = $callback($user, $resource);
$dbm->commit();
return $resource;
}
private function deleteResource(\User $user, \SimpleORMap $resource)
{
$dbm = \DBManager::get();
$dbm->beginTransaction();
// check edit lock
if (!$resource::findOneBySql('id = ? AND edit_blocker_id = ?', [$resource->id, $user->id])) {
$dbm->rollBack();
throw new ConflictException();
}
// now delete
$resource->delete();
$dbm->commit();
}
}
|