From 2495ff79e5cf7085ee872989dbd57b087ab32661 Mon Sep 17 00:00:00 2001 From: Alexandre Alapetite Date: Thu, 23 Nov 2023 23:07:09 +0100 Subject: [PATCH] Fix types for extensions To accompany https://github.com/FreshRSS/Extensions/pull/185 --- lib/Minz/Extension.php | 2 +- lib/Minz/Mailer.php | 14 +++++++++++--- lib/Minz/View.php | 32 ++++++++++++++++++++++---------- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/lib/Minz/Extension.php b/lib/Minz/Extension.php index e227eb96418..a8f883eb6ec 100644 --- a/lib/Minz/Extension.php +++ b/lib/Minz/Extension.php @@ -164,7 +164,7 @@ private function setType(string $type): void { * Return the url for a given file. * * @param string $filename name of the file to serve. - * @param 'css'|'js' $type the type (js or css) of the file to serve. + * @param 'css'|'js'|'svg' $type the type (js or css or svg) of the file to serve. * @param bool $isStatic indicates if the file is a static file or a user file. Default is static. * @return string url corresponding to the file. */ diff --git a/lib/Minz/Mailer.php b/lib/Minz/Mailer.php index bd5e97ceb89..86c5c33da92 100644 --- a/lib/Minz/Mailer.php +++ b/lib/Minz/Mailer.php @@ -39,10 +39,18 @@ class Minz_Mailer { private int $debug_level; /** - * Constructor. + * @phpstan-param class-string|'' $viewType + * @param string $viewType Name of the class (inheriting from Minz_View) to use for the view model */ - public function __construct () { - $this->view = new Minz_View(); + public function __construct(string $viewType = '') { + $view = null; + if ($viewType !== '' && class_exists($viewType)) { + $view = new $viewType(); + if (!($view instanceof Minz_View)) { + $view = null; + } + } + $this->view = $view ?? new Minz_View(); $this->view->_layout(null); $this->view->attributeParams(); diff --git a/lib/Minz/View.php b/lib/Minz/View.php index da6e55a2382..f67cf62776b 100644 --- a/lib/Minz/View.php +++ b/lib/Minz/View.php @@ -157,7 +157,7 @@ public function helperToString(string $helper): string { /** * Choose the current view layout. - * @param string|null $layout the layout name to use, false to use no layouts. + * @param string|null $layout the layout name to use, null to use no layouts. */ public function _layout(?string $layout): void { if ($layout != null) { @@ -205,7 +205,7 @@ public static function appendTitle(string $title): void { */ public static function headStyle(): string { $styles = ''; - foreach(self::$styles as $style) { + foreach (self::$styles as $style) { $styles .= ''; @@ -220,10 +220,13 @@ public static function headStyle(): string { * @param bool $cond Conditional comment for IE, now deprecated and ignored @deprecated */ public static function prependStyle(string $url, string $media = 'all', bool $cond = false): void { - array_unshift (self::$styles, array ( + if ($url === '') { + return; + } + array_unshift(self::$styles, [ 'url' => $url, 'media' => $media, - )); + ]); } /** @@ -233,10 +236,13 @@ public static function prependStyle(string $url, string $media = 'all', bool $co * @param bool $cond Conditional comment for IE, now deprecated and ignored @deprecated */ public static function appendStyle(string $url, string $media = 'all', bool $cond = false): void { - self::$styles[] = array ( + if ($url === '') { + return; + } + self::$styles[] = [ 'url' => $url, 'media' => $media, - ); + ]; } /** @@ -298,12 +304,15 @@ public static function headScript(): string { * @param string $id Add a script `id` attribute */ public static function prependScript(string $url, bool $cond = false, bool $defer = true, bool $async = true, string $id = ''): void { - array_unshift(self::$scripts, array ( + if ($url === '') { + return; + } + array_unshift(self::$scripts, [ 'url' => $url, 'defer' => $defer, 'async' => $async, 'id' => $id, - )); + ]); } /** @@ -315,12 +324,15 @@ public static function prependScript(string $url, bool $cond = false, bool $defe * @param string $id Add a script `id` attribute */ public static function appendScript(string $url, bool $cond = false, bool $defer = true, bool $async = true, string $id = ''): void { - self::$scripts[] = array ( + if ($url === '') { + return; + } + self::$scripts[] = [ 'url' => $url, 'defer' => $defer, 'async' => $async, 'id' => $id, - ); + ]; } /**