19declare(strict_types=1);
23use Sabre\DAV\Locks\LockInfo;
24use Sabre\DAV\Locks\Backend\AbstractBackend;
36 private Factory $entity_factory,
40 $this->user_id =
$DIC->user()->getId();
46 public function getLocks($uri, $returnChildLocks): array
48 $entity = $this->entity_factory->getByFullPath($uri);
49 if ($entity ===
null) {
53 $lock_object = $this->locks_repository->maybeGetLockFromObjId($entity->getObjectProxy()->getObjId());
54 if ($lock_object ===
null) {
59 $lock_object->getAsSabreDavLock($uri),
63 public function lock($uri, LockInfo $lock_info): bool
65 $entity = $this->entity_factory->getByFullPath($uri);
66 $obj_id = $entity?->getObjectProxy()->getObjId();
67 if ($obj_id ===
null) {
71 $ilias_lock =
new Lock(
81 $this->locks_repository->save($ilias_lock);
83 $proxy = $entity?->getObjectProxy();
84 if ($proxy !==
null && $proxy->getType() === Type::FILE) {
85 $proxy->getStreamHandler()?->publish();
90 public function unlock($uri, LockInfo $lock_info): bool
92 $ilias_lock = $this->locks_repository->maybeGetLockFromToken($lock_info->token);
94 if ($ilias_lock !==
null && $ilias_lock->getIliasOwner() === $this->user_id) {
95 $this->locks_repository->remove($lock_info->token);
lock($uri, LockInfo $lock_info)
__construct(private Factory $entity_factory, private LocksRepository $locks_repository)
getLocks($uri, $returnChildLocks)
unlock($uri, LockInfo $lock_info)