From 121e6b448650b6151c745a2883de30047073f2c8 Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Wed, 17 Apr 2024 17:45:08 +0000 Subject: [PATCH] fix templates --- DataStorage/Database/Mapper/ReadMapper.php | 2 +- Dispatcher/Dispatcher.php | 109 ++++----------------- Views/View.php | 16 +++ 3 files changed, 37 insertions(+), 90 deletions(-) diff --git a/DataStorage/Database/Mapper/ReadMapper.php b/DataStorage/Database/Mapper/ReadMapper.php index 73c8bd463..1b5a1cd3a 100755 --- a/DataStorage/Database/Mapper/ReadMapper.php +++ b/DataStorage/Database/Mapper/ReadMapper.php @@ -1327,7 +1327,7 @@ public function hasManyRelations(object $obj) : bool } } - public function paginate(string $member, string $ptype, mixed $offset) : self + public function paginate(string $member, ?string $ptype, mixed $offset) : self { if ($ptype === 'p') { $this->where($member, $offset ?? 0, '<'); diff --git a/Dispatcher/Dispatcher.php b/Dispatcher/Dispatcher.php index a87241a68..58d094413 100755 --- a/Dispatcher/Dispatcher.php +++ b/Dispatcher/Dispatcher.php @@ -15,7 +15,6 @@ namespace phpOMS\Dispatcher; use phpOMS\Application\ApplicationAbstract; -use phpOMS\Autoloader; use phpOMS\System\File\PathException; /** @@ -81,102 +80,34 @@ public function dispatch(array | string | callable $controller, mixed ...$data) // In a different language the Api functions would require a return type // If null is returned (i.e. void functions) these get ignored later in the response renderer as null is not "rendered" if (\is_string($controller)) { - $views += $this->dispatchString($controller, $data); + $dispatch = \explode(':', $controller); + + if (($c = \count($dispatch)) === 3) { + /* Handling static functions */ + $function = $dispatch[0] . '::' . $dispatch[2]; + + $views[$controller] = $data === null ? $function() : $function(...$data); + } elseif ($c === 2) { + $obj = $this->getController($dispatch[0]); + $views[$controller] = $data === null + ? $obj->{$dispatch[1]}() + : $obj->{$dispatch[1]}(...$data); + } } elseif (\is_array($controller)) { - $views += $this->dispatchArray($controller, $data); - } else { - $views[] = $this->dispatchClosure($controller, $data); - } - - return $views; - } - - /** - * Dispatch string. - * - * The dispatcher can dispatch static functions. - * String: `some/namespace/path::myStaticFunction` - * - * Additionally it's also possible to dispatch functions of modules. - * Modules are classes which can get instantiated with `new Class(ApplicationAbstract $app)` - * String: `some/namespace/path:myMethod` - * - * @param string $controller Controller string - * @param null|array $data Data - * - * @return array - * - * @throws PathException this exception is thrown if the function cannot be autoloaded - * @throws \Exception this exception is thrown if the function is not callable - * @throws \UnexpectedValueException this exception is thrown if the controller string is malformed - * - * @since 1.0.0 - */ - private function dispatchString(string $controller, ?array $data = null) : array - { - $views = []; - $dispatch = \explode(':', $controller); - - if (!Autoloader::exists($dispatch[0]) && !isset($this->controllers[$dispatch[0]])) { - throw new PathException($dispatch[0]); - } - - if (($c = \count($dispatch)) === 3) { - /* Handling static functions */ - $function = $dispatch[0] . '::' . $dispatch[2]; - - if (!\is_callable($function)) { - throw new \Exception('Endpoint "'. $function .'" is not callable!'); + foreach ($controller as $controllerSingle) { + $views += $data === null + ? $this->dispatch($controllerSingle) + : $this->dispatch($controllerSingle, ...$data); } - - $views[$controller] = $data === null ? $function() : $function(...$data); - } elseif ($c === 2) { - $obj = $this->getController($dispatch[0]); - $views[$controller] = $data === null - ? $obj->{$dispatch[1]}() - : $obj->{$dispatch[1]}(...$data); } else { - throw new \UnexpectedValueException('Unexpected function.'); + $views[] = $data === null + ? $controller($this->app) + : $controller($this->app, ...$data); } return $views; } - /** - * Dispatch array. - * - * @param array $controller Controller string - * @param null|array $data Data - * - * @return array - * - * @since 1.0.0 - */ - private function dispatchArray(array $controller, ?array $data = null) : array - { - $views = []; - foreach ($controller as $controllerSingle) { - $views += $data === null ? $this->dispatch($controllerSingle) : $this->dispatch($controllerSingle, ...$data); - } - - return $views; - } - - /** - * Dispatch closure. - * - * @param Callable $controller Controller string - * @param null|array $data Data - * - * @return mixed - * - * @since 1.0.0 - */ - private function dispatchClosure(callable $controller, ?array $data = null) : mixed - { - return $data === null ? $controller($this->app) : $controller($this->app, ...$data); - } - /** * Dispatch controller. * diff --git a/Views/View.php b/Views/View.php index 5f709d4e4..335dafb96 100755 --- a/Views/View.php +++ b/Views/View.php @@ -307,6 +307,22 @@ public function getHtml(string $translation, ?string $module = null, ?string $th return \htmlspecialchars($this->getText($translation, $module, $theme)); } + /** + * Print html output. + * + * @param ?string $text Text + * + * @return string + * + * @since 1.0.0 + */ + public function printTextarea(?string $text) : string + { + return $text === null + ? '' + : \trim(\str_replace(["\r\n", "\n"], [' ', ' '], \htmlspecialchars($text))); + } + /** * Print a numeric value *