Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/HuasoFoundries/phpPgAdmin6.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Middleware/PopulateRequestResponse.php')
-rw-r--r--src/Middleware/PopulateRequestResponse.php99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/Middleware/PopulateRequestResponse.php b/src/Middleware/PopulateRequestResponse.php
new file mode 100644
index 00000000..3b4e498a
--- /dev/null
+++ b/src/Middleware/PopulateRequestResponse.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * PHPPgAdmin6
+ */
+
+namespace PHPPgAdmin\Middleware;
+
+use PHPPgAdmin\Core\ContainerUtils;
+use PHPPgAdmin\Core\ViewManager;
+use PHPPgAdmin\Traits\HelperTrait;
+use Slim\Http\Request;
+use Slim\Http\Response;
+use Slim\Http\Uri;
+
+/**
+ * Set the requestobj and responseobj properties of the container
+ * as the value of $request and $response, which already contain the route.
+ */
+class PopulateRequestResponse extends Middleware
+{
+ use HelperTrait;
+
+ public function __invoke(
+ Request $request,
+ Response $response,
+ $next
+ ) {
+ $container = $this->container;
+ $subfolder = $this->container->getSubfolder();
+
+ $route = $request->getAttribute('route');
+
+ $container['server'] = $request->getParam('server');
+ $container['database'] = $request->getParam('database');
+ $container['schema'] = $request->getParam('schema');
+ $misc = $container->get('misc');
+
+ $view = $this->getViewManager($container);
+
+ $misc->setHREF();
+ $view->setForm();
+
+ $view->offsetSet('METHOD', $request->getMethod());
+
+ if ($route) {
+ $view->offsetSet('subject', $route->getArgument('subject'));
+ $container['server'] = $route->getArgument('server', $request->getParam('server'));
+ }
+
+ $request = $request->withUri($this->getUri($request)->withBasePath($subfolder));
+ $uri = $request->getUri();
+ $query_string = $uri->getQuery();
+ $requestPath = $uri->getPath();
+
+ $view->offsetSet('query_string', $query_string);
+ $path = $requestPath . ('' !== $query_string ? '?' . $query_string : '');
+ $view->offsetSet('path', $path);
+
+ $params = $request->getParams();
+
+ $viewparams = [];
+
+ $viewparams = \array_filter($params, 'is_scalar');
+
+ $in_test = isset($_COOKIE['IN_TEST']) ? (string) $_COOKIE['IN_TEST'] : '0';
+
+ // remove tabs and linebreaks from query
+ if (isset($params['query'])) {
+ $viewparams['query'] = \str_replace(["\r", "\n", "\t"], ' ', $params['query']);
+ }
+ $view->offsetSet('params', $viewparams);
+ $view->offsetSet('in_test', $in_test);
+
+ if (0 < \count($container['errors'])) {
+ return ($container->haltHandler)($request, $response, $container['errors'], 412);
+ }
+ $enqueued_reload_browser = ($container->flash->getFirstMessage('reload_browser') ?? false);
+
+ if ($enqueued_reload_browser) {
+ $view->setReloadBrowser($enqueued_reload_browser);
+ }
+ // First execute anything else
+ $response = $next($request, $response);
+
+ // Any other request, pass on current response
+ return $response;
+ }
+
+ private function getUri(Request $request): Uri
+ {
+ return $request->getUri();
+ }
+
+ private function getViewManager(ContainerUtils $container): ViewManager
+ {
+ return $container->get('view');
+ }
+}