diff options
Diffstat (limited to 'lib/private/Template/TemplateFileLocator.php')
-rw-r--r-- | lib/private/Template/TemplateFileLocator.php | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lib/private/Template/TemplateFileLocator.php b/lib/private/Template/TemplateFileLocator.php new file mode 100644 index 00000000000..11a568b5b21 --- /dev/null +++ b/lib/private/Template/TemplateFileLocator.php @@ -0,0 +1,41 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace OC\Template; + +use OCP\Template\TemplateNotFoundException; + +class TemplateFileLocator { + /** + * @param string[] $dirs + */ + public function __construct( + private array $dirs, + ) { + } + + /** + * @return array{string,string} Directory path and filename + * @throws TemplateNotFoundException + */ + public function find(string $template): array { + if ($template === '') { + throw new \InvalidArgumentException('Empty template name'); + } + + foreach ($this->dirs as $dir) { + $file = $dir . $template . '.php'; + if (is_file($file)) { + return [$dir,$file]; + } + } + throw new TemplateNotFoundException('template file not found: template:' . $template); + } +} |