aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2025-03-06 15:47:59 +0100
committerCôme Chilliet <91878298+come-nc@users.noreply.github.com>2025-03-06 15:49:25 +0100
commitb086f100284dd16154e0ff1819dc4d673fe42204 (patch)
tree121d7459af4413d6e4f3719c494e585692dee375 /lib/private
parentcd3a88805b4c045c57fde90e0f734d56197658bb (diff)
downloadnextcloud-server-fix/deprecate-oc-template-and-cleanup.tar.gz
nextcloud-server-fix/deprecate-oc-template-and-cleanup.zip
fix: Use a dedicated Exception class for when a template is not foundfix/deprecate-oc-template-and-cleanup
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/Template/Template.php9
-rw-r--r--lib/private/Template/TemplateFileLocator.php29
-rw-r--r--lib/private/Template/TemplateManager.php2
3 files changed, 20 insertions, 20 deletions
diff --git a/lib/private/Template/Template.php b/lib/private/Template/Template.php
index 9c71208522d..b69d68b944f 100644
--- a/lib/private/Template/Template.php
+++ b/lib/private/Template/Template.php
@@ -18,6 +18,7 @@ use OCP\AppFramework\Http\TemplateResponse;
use OCP\Defaults;
use OCP\Server;
use OCP\Template\ITemplate;
+use OCP\Template\TemplateNotFoundException;
use OCP\Util;
require_once __DIR__ . '/../legacy/template/functions.php';
@@ -31,6 +32,7 @@ class Template extends Base implements ITemplate {
* @param string $name of the template file (without suffix)
* @param TemplateResponse::RENDER_AS_* $renderAs If $renderAs is set, will try to
* produce a full page in the according layout.
+ * @throws TemplateNotFoundException
*/
public function __construct(
protected string $app,
@@ -68,7 +70,8 @@ class Template extends Base implements ITemplate {
* Checking all the possible locations.
*
* @param string $name of the template file (without suffix)
- * @return string[]
+ * @return array{string,string} Directory path and filename
+ * @throws TemplateNotFoundException
*/
protected function findTemplate(string $theme, string $app, string $name): array {
// Check if it is a app template or not.
@@ -83,9 +86,7 @@ class Template extends Base implements ITemplate {
$dirs = $this->getCoreTemplateDirs($theme, \OC::$SERVERROOT);
}
$locator = new TemplateFileLocator($dirs);
- $template = $locator->find($name);
- $path = $locator->getPath();
- return [$path, $template];
+ return $locator->find($name);
}
/**
diff --git a/lib/private/Template/TemplateFileLocator.php b/lib/private/Template/TemplateFileLocator.php
index 38583d158a3..11a568b5b21 100644
--- a/lib/private/Template/TemplateFileLocator.php
+++ b/lib/private/Template/TemplateFileLocator.php
@@ -1,29 +1,31 @@
<?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;
-class TemplateFileLocator {
- protected $dirs;
- private $path;
+use OCP\Template\TemplateNotFoundException;
+class TemplateFileLocator {
/**
* @param string[] $dirs
*/
- public function __construct($dirs) {
- $this->dirs = $dirs;
+ public function __construct(
+ private array $dirs,
+ ) {
}
/**
- * @param string $template
- * @return string
- * @throws \Exception
+ * @return array{string,string} Directory path and filename
+ * @throws TemplateNotFoundException
*/
- public function find($template) {
+ public function find(string $template): array {
if ($template === '') {
throw new \InvalidArgumentException('Empty template name');
}
@@ -31,14 +33,9 @@ class TemplateFileLocator {
foreach ($this->dirs as $dir) {
$file = $dir . $template . '.php';
if (is_file($file)) {
- $this->path = $dir;
- return $file;
+ return [$dir,$file];
}
}
- throw new \Exception('template file not found: template:' . $template);
- }
-
- public function getPath() {
- return $this->path;
+ throw new TemplateNotFoundException('template file not found: template:' . $template);
}
}
diff --git a/lib/private/Template/TemplateManager.php b/lib/private/Template/TemplateManager.php
index e57203ba2da..34da4deac72 100644
--- a/lib/private/Template/TemplateManager.php
+++ b/lib/private/Template/TemplateManager.php
@@ -17,6 +17,7 @@ use OCP\IRequest;
use OCP\Server;
use OCP\Template\ITemplate;
use OCP\Template\ITemplateManager;
+use OCP\Template\TemplateNotFoundException;
use Psr\Log\LoggerInterface;
class TemplateManager implements ITemplateManager {
@@ -28,6 +29,7 @@ class TemplateManager implements ITemplateManager {
/**
* @param TemplateResponse::RENDER_AS_* $renderAs
+ * @throws TemplateNotFoundException if the template cannot be found
*/
public function getTemplate(string $app, string $name, string $renderAs = TemplateResponse::RENDER_AS_BLANK, bool $registerCall = true): ITemplate {
return new Template($app, $name, $renderAs, $registerCall);