$templatesItem->getId(), "name" => $templatesItem->getName(), "type" => TemplateManager::getTypeTemplate($templatesItem->getMimeType()), "icon" => $this->mimeIconProvider->getMimeIconUrl($templatesItem->getMimeType()) ]; $templates[] = $template; } return new DataResponse($templates); } /** * Add global template * * @return DataResponse */ public function addTemplate(): DataResponse { $file = $this->request->getUploadedFile("file"); if (!empty($file) && is_uploaded_file($file["tmp_name"]) && $file["error"] === 0) { if (!TemplateManager::isTemplateType($file["name"])) { return new DataResponse([ "error" => $this->trans->t("Template must be in OOXML format") ]); } $templateDir = TemplateManager::getGlobalTemplateDir(); if ($templateDir->nodeExists($file["name"])) { return new DataResponse([ "error" => $this->trans->t("Template already exists") ]); } $templateContent = file_get_contents($file["tmp_name"]); $template = $templateDir->newFile($file["name"]); $template->putContent($templateContent); return new DataResponse([ "id" => $template->getId(), "name" => $template->getName(), "type" => TemplateManager::getTypeTemplate($template->getMimeType()), "icon" => $this->mimeIconProvider->getMimeIconUrl($template->getMimeType()) ]); } return new DataResponse(["error" => $this->trans->t("Invalid file provided")]); } /** * Delete template * * @param int $templateId - file identifier * * @return DataResponse */ public function deleteTemplate(int $templateId): DataResponse { $templateDir = TemplateManager::getGlobalTemplateDir(); try { $templates = $templateDir->getById($templateId); } catch (\Exception $e) { $this->logger->error("deleteTemplate: $templateId", ["exception" => $e]); return new DataResponse([ "error" => $this->trans->t("Failed to delete template") ]); } if (empty($templates)) { $this->logger->info("Template not found: $templateId"); return new DataResponse([ "error" => $this->trans->t("Failed to delete template") ]); } $templates[0]->delete(); $this->logger->debug("Template: deleted " . $templates[0]->getName()); return new DataResponse(); } /** * Returns the origin document key for editor * * @param int $fileId - file identifier * @param int $x - x * @param int $y - y * @param bool $crop - crop * @param string $mode - mode * * @return DataResponse|FileDisplayResponse */ #[NoAdminRequired] #[NoCSRFRequired] public function preview( int $fileId, int $x = 256, int $y = 256, bool $crop = false, string $mode = IPreview::MODE_FILL ): DataResponse|FileDisplayResponse { if (empty($fileId) || $x === 0 || $y === 0) { return new DataResponse([], Http::STATUS_BAD_REQUEST); } $template = TemplateManager::getTemplate($fileId); if (empty($template)) { $this->logger->error("Template not found: $fileId"); return new DataResponse([], Http::STATUS_NOT_FOUND); } try { $f = $this->preview->getPreview($template, $x, $y, $crop, $mode); $response = new FileDisplayResponse($f, Http::STATUS_OK, ["Content-Type" => $f->getMimeType()]); $response->cacheFor(3600 * 24); return $response; } catch (NotFoundException) { return new DataResponse([], Http::STATUS_NOT_FOUND); } catch (\InvalidArgumentException) { return new DataResponse([], Http::STATUS_BAD_REQUEST); } } }