Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2021-10-05 16:35:52 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2021-12-29 18:31:15 +0300
commit40357208c0644d486b1a918b4f904a74d1f8c0d2 (patch)
tree29ad624fefaafa9c0b46bdbe72bc4fe560f8e718 /lib
parenteba43eae1303a9679db47a306209b66e7522c5ac (diff)
Do not load template directories twice
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'lib')
-rw-r--r--lib/Template/CollaboraTemplateProvider.php22
-rw-r--r--lib/TemplateManager.php2
2 files changed, 21 insertions, 3 deletions
diff --git a/lib/Template/CollaboraTemplateProvider.php b/lib/Template/CollaboraTemplateProvider.php
index 4246f98b..409ba70c 100644
--- a/lib/Template/CollaboraTemplateProvider.php
+++ b/lib/Template/CollaboraTemplateProvider.php
@@ -29,7 +29,9 @@ namespace OCA\Richdocuments\Template;
use OCA\Richdocuments\TemplateManager;
use OCP\Files\File;
+use OCP\Files\NotFoundException;
use OCP\Files\Template\ICustomTemplateProvider;
+use OCP\Files\Template\ITemplateManager;
use OCP\Files\Template\Template;
use OCP\Files\Template\TemplateFileCreator;
use OCP\IURLGenerator;
@@ -40,10 +42,13 @@ class CollaboraTemplateProvider implements ICustomTemplateProvider {
private $templateManager;
/** @var IURLGenerator */
private $urlGenerator;
+ /** @var ITemplateManager */
+ private $coreTemplateManager;
- public function __construct(TemplateManager $templateManager, IURLGenerator $urlGenerator) {
+ public function __construct(TemplateManager $templateManager, IURLGenerator $urlGenerator, ITemplateManager $coreTemplateManager) {
$this->templateManager = $templateManager;
$this->urlGenerator = $urlGenerator;
+ $this->coreTemplateManager = $coreTemplateManager;
}
public function getTemplateType(): string {
@@ -63,11 +68,24 @@ class CollaboraTemplateProvider implements ICustomTemplateProvider {
return [];
}
+ $collaboraTemplates = $this->isSameUserTemplateFolder() ? $this->templateManager->getSystem($type) : $this->templateManager->getAll($type);
+
return array_map(function(File $file) {
$template = new Template(CollaboraTemplateProvider::class, (string)$file->getId(), $file);
$template->setCustomPreviewUrl($this->urlGenerator->linkToRouteAbsolute('richdocuments.templates.getPreview', ['fileId' => $file->getId()]));
return $template;
- }, $this->templateManager->getAll($type));
+ }, $collaboraTemplates);
+ }
+
+ private function isSameUserTemplateFolder(): bool {
+ try {
+ $userTemplatesFolder = $this->templateManager->getUserTemplateDir();
+ $internalPath = $userTemplatesFolder->getInternalPath();
+ $userTemplatePath = mb_strpos($internalPath, 'files/') === 0 ? mb_substr($internalPath, 5): $internalPath;
+ return $this->coreTemplateManager->getTemplatePath() === $userTemplatePath;
+ } catch (NotFoundException $e) {
+ }
+ return false;
}
public function getCustomTemplate(string $template): File {
diff --git a/lib/TemplateManager.php b/lib/TemplateManager.php
index a907f9aa..2974a9c6 100644
--- a/lib/TemplateManager.php
+++ b/lib/TemplateManager.php
@@ -387,7 +387,7 @@ class TemplateManager {
* @return Folder
* @throws NotFoundException
*/
- private function getUserTemplateDir() {
+ public function getUserTemplateDir() {
if ($this->userId === null) {
throw new NotFoundException('userId not set');
}