principalInfo['uri']; } #[\Override] public function getACL(): array { $ownerPrincipal = $this->principalInfo['uri']; return [ [ 'privilege' => '{DAV:}all', 'principal' => $ownerPrincipal, 'protected' => true, ], [ 'privilege' => '{DAV:}all', 'principal' => $ownerPrincipal . '/calendar-proxy-write', 'protected' => true, ], [ 'privilege' => '{DAV:}read', 'principal' => $ownerPrincipal . '/calendar-proxy-read', 'protected' => true, ], ]; } #[\Override] public function createFile($name, $data = null) { throw new Forbidden('Permission denied to create files in the trashbin'); } #[\Override] public function createDirectory($name) { throw new Forbidden('Permission denied to create a directory in the trashbin'); } #[\Override] public function getChild($name): INode { switch ($name) { case RestoreTarget::NAME: return new RestoreTarget(); case DeletedCalendarObjectsCollection::NAME: return new DeletedCalendarObjectsCollection( $this->caldavBackend, $this->principalInfo ); } throw new NotFound(); } #[\Override] public function getChildren(): array { return [ new RestoreTarget(), new DeletedCalendarObjectsCollection( $this->caldavBackend, $this->principalInfo ), ]; } #[\Override] public function childExists($name): bool { return in_array($name, [ RestoreTarget::NAME, DeletedCalendarObjectsCollection::NAME, ], true); } #[\Override] public function delete() { throw new Forbidden('Permission denied to delete the trashbin'); } #[\Override] public function getName(): string { return self::NAME; } #[\Override] public function setName($name) { throw new Forbidden('Permission denied to rename the trashbin'); } #[\Override] public function getLastModified(): int { return 0; } #[\Override] public function propPatch(PropPatch $propPatch): void { throw new Forbidden('not implemented'); } #[\Override] public function getProperties($properties): array { return [ '{DAV:}resourcetype' => new ResourceType([ '{DAV:}collection', sprintf('{%s}trash-bin', \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD), ]), ]; } }