aboutsummaryrefslogtreecommitdiff
path: root/app/class
diff options
context:
space:
mode:
Diffstat (limited to 'app/class')
-rw-r--r--app/class/Controller.php31
-rw-r--r--app/class/Controllermedia.php10
-rw-r--r--app/class/Modelrender.php2
3 files changed, 30 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]);
}