From c37ba28ad3fac5a42c28a4de0ec11b99a9e187cb Mon Sep 17 00:00:00 2001 From: Aleksandr Fedorov Date: Thu, 27 Apr 2023 11:33:57 +0300 Subject: [PATCH] php: added work with onlyoffice-docs-formats.json --- web/documentserver-example/php/config.json | 12 ---- web/documentserver-example/php/functions.php | 68 +++++++++++-------- .../php/helpers/ConfigManager.php | 5 ++ .../php/views/DocEditorView.php | 2 +- 4 files changed, 44 insertions(+), 43 deletions(-) diff --git a/web/documentserver-example/php/config.json b/web/documentserver-example/php/config.json index e718bcc2..a52dff4d 100644 --- a/web/documentserver-example/php/config.json +++ b/web/documentserver-example/php/config.json @@ -21,18 +21,6 @@ "exampleUrl": "", "mobileRegex": "android|avantgo|playbook|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino", - "extsSpreadsheet": [".xls", ".xlsx", ".xlsm", ".xlsb", - ".xlt", ".xltx", ".xltm", - ".ods", ".fods", ".ots", ".csv"], - "extsPresentation": [".pps", ".ppsx", ".ppsm", - ".ppt", ".pptx", ".pptm", - ".pot", ".potx", ".potm", - ".odp", ".fodp", ".otp"], - "extsDocument": [".doc", ".docx", ".docm", - ".dot", ".dotx", ".dotm", - ".odt", ".fodt", ".ott", ".rtf", ".txt", - ".html", ".htm", ".mht", ".xml", - ".pdf", ".djvu", ".fb2", ".epub", ".xps", ".oxps", ".oform"], "languages": { "en": "English", "hy": "Armenian", diff --git a/web/documentserver-example/php/functions.php b/web/documentserver-example/php/functions.php index f5b393cd..80ad62e8 100644 --- a/web/documentserver-example/php/functions.php +++ b/web/documentserver-example/php/functions.php @@ -130,18 +130,24 @@ function getCurUserHostAddress($userAddress = null) */ function getInternalExtension($filename) { - $ext = mb_strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)); + $ext = mb_strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $configManager = new ConfigManager(); - if (in_array($ext, $configManager->getConfig("extsDocument"))) { - return ".docx"; - } // .docx for text document extensions - if (in_array($ext, $configManager->getConfig("extsSpreadsheet"))) { - return ".xlsx"; - } // .xlsx for spreadsheet extensions - if (in_array($ext, $configManager->getConfig("extsPresentation"))) { - return ".pptx"; - } // .pptx for presentation extensions + + foreach ($configManager->getSuppotredFormats() as $format) { + if ($format->name === $ext) { + if ($format->type === "word") { + return ".docx"; + } + if ($format->type === "cell") { + return ".xlsx"; + } + if ($format->type === "slide") { + return ".pptx"; + } + } + } + return ""; } @@ -154,19 +160,24 @@ function getInternalExtension($filename) */ function getTemplateImageUrl($filename) { - $ext = mb_strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)); + $ext = mb_strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $path = serverPath(true) . "/css/images/"; $configManager = new ConfigManager(); - if (in_array($ext, $configManager->getConfig("extsDocument"))) { - return $path . "file_docx.svg"; - } // for text document extensions - if (in_array($ext, $configManager->getConfig("extsSpreadsheet"))) { - return $path . "file_xlsx.svg"; - } // for spreadsheet extensions - if (in_array($ext, $configManager->getConfig("extsPresentation"))) { - return $path . "file_pptx.svg"; - } // for presentation extensions + foreach ($configManager->getSuppotredFormats() as $format) { + if ($format->name === $ext) { + if ($format->type === "word") { + return $path . "file_docx.svg"; + } + if ($format->type === "cell") { + return $path . "file_xlsx.svg"; + } + if ($format->type === "slide") { + return $path . "file_pptx.svg"; + } + } + } + return $path . "file_docx.svg"; } @@ -179,18 +190,15 @@ function getTemplateImageUrl($filename) */ function getDocumentType($filename) { - $ext = mb_strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)); + $ext = mb_strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $configManager = new ConfigManager(); - if (in_array($ext, $configManager->getConfig("extsDocument"))) { - return "word"; - } // word for text document extensions - if (in_array($ext, $configManager->getConfig("extsSpreadsheet"))) { - return "cell"; - } // cell for spreadsheet extensions - if (in_array($ext, $configManager->getConfig("extsPresentation"))) { - return "slide"; - } // slide for presentation extensions + foreach ($configManager->getSuppotredFormats() as $format) { + if ($format->name === $ext) { + return $format->type; + } + } + return "word"; } diff --git a/web/documentserver-example/php/helpers/ConfigManager.php b/web/documentserver-example/php/helpers/ConfigManager.php index 2fce2601..d4ba8398 100644 --- a/web/documentserver-example/php/helpers/ConfigManager.php +++ b/web/documentserver-example/php/helpers/ConfigManager.php @@ -51,6 +51,11 @@ final class ConfigManager return $this->config; } + public function getSuppotredFormats(): mixed + { + return $this->configFormats; + } + public function getSuppotredExtensions(): mixed { return array_reduce( diff --git a/web/documentserver-example/php/views/DocEditorView.php b/web/documentserver-example/php/views/DocEditorView.php index 43ca67d0..f3dab8cf 100644 --- a/web/documentserver-example/php/views/DocEditorView.php +++ b/web/documentserver-example/php/views/DocEditorView.php @@ -71,7 +71,7 @@ final class DocEditorView extends View $docKey = getDocEditorKey($filename); $filetype = mb_strtolower(pathinfo($filename, PATHINFO_EXTENSION)); - $ext = mb_strtolower('.' . pathinfo($filename, PATHINFO_EXTENSION)); + $ext = mb_strtolower(pathinfo($filename, PATHINFO_EXTENSION)); $editorsMode = empty($request["action"]) ? "edit" : $request["action"]; // get the editors mode $canEdit = in_array($ext, $confgManager->getEditExtensions()); // check if the file can be edited if ((!$canEdit && $editorsMode == "edit"