permissionManager->isEnabledForUser() && $this->userId !== null) { return []; } if (!$this->capabilities) { $collaboraCapabilities = $this->capabilitiesService->getCapabilities(); $defaultMimetypes = self::MIMETYPES; $optionalMimetypes = self::MIMETYPES_OPTIONAL; if (!$this->capabilitiesService->hasOtherOOXMLApps()) { array_push($defaultMimetypes, ...self::MIMETYPES_MSOFFICE); } else { array_push($optionalMimetypes, ...self::MIMETYPES_MSOFFICE); } // If version is too old, draw is not supported if (!$this->capabilitiesService->hasDrawSupport()) { $defaultMimetypes = array_diff($defaultMimetypes, [ 'application/vnd.oasis.opendocument.graphics', 'application/vnd.oasis.opendocument.graphics-flat-xml', ]); } if (!$this->appManager->isEnabledForUser('files_pdfviewer')) { $defaultMimetypes[] = 'application/pdf'; $optionalMimetypes = array_diff($optionalMimetypes, ['application/pdf']); } $this->capabilities = [ 'richdocuments' => [ 'version' => $this->appManager->getAppVersion('richdocuments'), 'mimetypes' => array_values($defaultMimetypes), 'mimetypesNoDefaultOpen' => array_values($optionalMimetypes), 'mimetypesSecureView' => $this->config->useSecureViewAdditionalMimes() ? self::SECURE_VIEW_ADDITIONAL_MIMES : [], 'collabora' => $collaboraCapabilities, 'direct_editing' => ($collaboraCapabilities['hasMobileSupport'] ?? false) && $this->config->getAppValue('mobile_editing', 'yes') === 'yes', 'templates' => ($collaboraCapabilities['hasTemplateSource'] ?? false), 'productName' => $this->capabilitiesService->getProductName(), 'editonline_endpoint' => $this->urlGenerator->linkToRouteAbsolute('richdocuments.document.editOnline'), 'config' => [ 'wopi_url' => $this->config->getCollaboraUrlInternal(), 'public_wopi_url' => $this->config->getCollaboraUrlPublic(), 'wopi_callback_url' => $this->config->getNextcloudUrl(), 'disable_certificate_verification' => $this->config->getAppValue('disable_certificate_verification'), 'edit_groups' => $this->config->getAppValue('edit_groups'), 'use_groups' => $this->config->getAppValue('use_groups'), 'doc_format' => $this->config->getAppValue('doc_format'), 'timeout' => $this->config->getAppValue('timeout'), ] ], ]; } return $this->capabilities; } }