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(); } }