diff options
-rw-r--r-- | app/class/Controller.php | 31 | ||||
-rw-r--r-- | app/class/Controllermedia.php | 10 | ||||
-rw-r--r-- | app/class/Modelrender.php | 2 | ||||
-rw-r--r-- | phpstan.neon | 1 |
4 files changed, 31 insertions, 13 deletions
diff --git a/app/class/Controller.php b/app/class/Controller.php index 3133ecb..4185be8 100644 --- a/app/class/Controller.php +++ b/app/class/Controller.php @@ -4,6 +4,8 @@ namespace Wcms; use DateTime; use DateTimeImmutable; +use Exception; +use InvalidArgumentException; use League\Plates\Engine; class Controller @@ -44,11 +46,11 @@ class Controller { $router = $this->router; $this->plates = new Engine(Model::TEMPLATES_DIR); - $this->plates->registerFunction('url', function (string $string, array $vars = []) use ($router) { - return $router->generate($string, $vars); + $this->plates->registerFunction('url', function (string $string, array $vars = []) { + return $this->generate($string, $vars); }); - $this->plates->registerFunction('upage', function (string $string, string $id) use ($router) { - return $router->generate($string, ['page' => $id]); + $this->plates->registerFunction('upage', function (string $string, string $id) { + return $this->generate($string, ['page' => $id]); }); $this->plates->addData(['flashmessages' => Model::getflashmessages()]); } @@ -72,7 +74,22 @@ class Controller - + /** + * Generate the URL for a named route. Replace regexes with supplied parameters. + * + * @param string $route The name of the route. + * @param array $params Associative array of parameters to replace placeholders with. + * @return string The URL of the route with named parameters in place. + * @throws InvalidArgumentException If the route does not exist. + */ + public function generate(string $route, array $params = []): string + { + try { + return $this->router->generate($route, $params); + } catch (Exception $e) { + throw new InvalidArgumentException($e->getMessage(), $e->getCode(), $e); + } + } public function redirect($url) { @@ -81,7 +98,7 @@ class Controller public function routedirect(string $route, array $vars = []) { - $this->redirect($this->router->generate($route, $vars)); + $this->redirect($this->generate($route, $vars)); } public function routedirectget(string $route, array $vars = []) @@ -91,7 +108,7 @@ class Controller $get .= $key . '=' . $value . '&'; } $get = rtrim($get, '&'); - $this->redirect($this->router->generate($route, []) . $get); + $this->redirect($this->generate($route, []) . $get); } public function error(int $code) diff --git a/app/class/Controllermedia.php b/app/class/Controllermedia.php index 609ea2f..11a27d3 100644 --- a/app/class/Controllermedia.php +++ b/app/class/Controllermedia.php @@ -69,7 +69,7 @@ class Controllermedia extends Controller if (!empty($_FILES['file']['name'][0])) { $this->mediamanager->multiupload('file', $target); } - $this->redirect($this->router->generate('media') . '?path=/' . $target); + $this->redirect($this->generate('media') . '?path=/' . $target); } else { $this->routedirect('home'); } @@ -82,7 +82,7 @@ class Controllermedia extends Controller $name = idclean($_POST['foldername']) ?? 'new-folder'; $this->mediamanager->adddir($dir, $name); } - $this->redirect($this->router->generate('media') . '?path=/' . $dir . DIRECTORY_SEPARATOR . $name); + $this->redirect($this->generate('media') . '?path=/' . $dir . DIRECTORY_SEPARATOR . $name); } public function folderdelete() @@ -91,11 +91,11 @@ class Controllermedia extends Controller if (isset($_POST['deletefolder']) && intval($_POST['deletefolder']) && $this->user->issupereditor()) { $this->mediamanager->deletedir($_POST['dir']); } else { - $this->redirect($this->router->generate('media') . '?path=/' . $_POST['dir']); + $this->redirect($this->generate('media') . '?path=/' . $_POST['dir']); exit; } } - $this->redirect($this->router->generate('media')); + $this->redirect($this->generate('media')); } public function edit() @@ -107,6 +107,6 @@ class Controllermedia extends Controller $this->mediamanager->multimovefile($_POST['id'], $_POST['dir']); } } - $this->redirect($this->router->generate('media') . '?path=/' . $_POST['path']); + $this->redirect($this->generate('media') . '?path=/' . $_POST['path']); } } diff --git a/app/class/Modelrender.php b/app/class/Modelrender.php index 2fabc3a..a683d65 100644 --- a/app/class/Modelrender.php +++ b/app/class/Modelrender.php @@ -56,7 +56,7 @@ class Modelrender extends Modelpage */ public function upage(string $id): string { - return $this->router->generate('pageread/', ['page' => $id]); + return $this->generate('pageread/', ['page' => $id]); } diff --git a/phpstan.neon b/phpstan.neon index 1aa3f10..f68256a 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -10,6 +10,7 @@ parameters: - index.php - tests exceptionRules: + ignoreDescriptiveUncheckedExceptions: true # ignore some exceptions and their chlidrens uncheckedExceptions: - Error |