user->isAdmin()) { throw new Forbidden(); } } public function postActionGetAttachmentFromImageUrl(Request $request): StdClass { $data = $request->getParsedBody(); if (empty($data->url)) { throw new BadRequest(); } if (empty($data->field)) { throw new BadRequest('postActionGetAttachmentFromImageUrl: No field specified'); } return $this->getRecordService()->getAttachmentFromImageUrl($data)->getValueMap(); } public function postActionGetCopiedAttachment(Request $request): StdClass { $data = $request->getParsedBody(); if (empty($data->id)) { throw new BadRequest(); } if (empty($data->field)) { throw new BadRequest('postActionGetCopiedAttachment copy: No field specified'); } return $this->getRecordService()->getCopiedAttachment($data)->getValueMap(); } public function getActionFile(Request $request, Response $response): void { $id = $request->getRouteParam('id'); if (!$id) { throw new BadRequest(); } $fileData = $this->getRecordService()->getFileData($id); $response ->setHeader('Content-Type', $fileData->type) ->setHeader('Content-Disposition', 'attachment; filename="' . $fileData->name . '"') ->setHeader('Content-Length', (string) $fileData->size) ->setBody($fileData->stream); } }