19 declare(strict_types=1);
46 public function getLocks($uri, $returnChildLocks): array
51 $ref_id = $this->webdav_path_resolver->getRefIdForWebDAVPath($uri);
53 $obj_id = $this->webdav_repository_helper->getObjectIdFromRefId(
$ref_id);
56 if (!is_null($lock_on_obj)) {
57 $sabre_locks[] = $lock_on_obj->getAsSabreDavLock($uri);
60 if ($returnChildLocks) {
76 foreach ($this->webdav_repository_helper->getChildrenOfRefId($ref_id) as $child_ref) {
78 $child_obj_id = $this->webdav_repository_helper->getObjectIdFromRefId($child_ref);
79 $child_obj = $this->webdav_object_factory->retrieveDAVObjectByRefID($child_ref);
82 if (!is_null($child_ilias_lock)) {
83 $sabre_locks[] = $child_ilias_lock->getAsSabreDavLock($uri .
'/' . $child_obj->getName());
86 $sabre_locks = $this->
getLocksRecursive($sabre_locks, $child_ref, $uri . $child_obj->getName() .
'/');
98 public function unlock($uri, LockInfo $lockInfo): bool
100 $ilias_lock = $this->wedav_locks_repository->getLockObjectWithTokenFromDB($lockInfo->token);
102 if (!is_null($ilias_lock) && $ilias_lock->getIliasOwner() === $this->
user->getId()) {
103 $this->wedav_locks_repository->removeLockWithTokenFromDB($lockInfo->token);
108 throw new Forbidden();
116 public function lock($uri, LockInfo $lock_info): bool
119 $ref_id = $this->webdav_path_resolver->getRefIdForWebDAVPath($uri);
121 if (
$ref_id > 0 && $this->webdav_repository_helper->checkAccess(
'write',
$ref_id)) {
122 $obj_id = $this->webdav_repository_helper->getObjectIdFromRefId(
$ref_id);
126 $this->user->getId(),
133 $this->wedav_locks_repository->saveLockToDB($ilias_lock);
139 }
catch (NotFound
$e) {
140 if ($e->getCode() == -1) {
153 return $this->wedav_locks_repository->getLockObjectWithObjIdFromDB($obj_id);
getLocksRecursive(array $sabre_locks, int $ref_id, string $uri)
__construct(protected ilWebDAVLocksRepository $wedav_locks_repository, protected ilWebDAVRepositoryHelper $webdav_repository_helper, protected ilWebDAVObjFactory $webdav_object_factory, protected ilWebDAVLockUriPathResolver $webdav_path_resolver, protected ilObjUser $user)
lock($uri, LockInfo $lock_info)
getLocks($uri, $returnChildLocks)
unlock($uri, LockInfo $lockInfo)
getLocksOnObjectId(int $obj_id)