TypeError
Argument 1 passed to Framework\Database\PaginatedArray::__construct() must be of the type array, null given, called in /var/www/www.cadi-tco.re/src/Shop/Action/CompatibleProductListingAction.php on line 44 TypeError thrown with message "Argument 1 passed to Framework\Database\PaginatedArray::__construct() must be of the type array, null given, called in /var/www/www.cadi-tco.re/src/Shop/Action/CompatibleProductListingAction.php on line 44" Stacktrace: #33 TypeError in /var/www/www.cadi-tco.re/src/Framework/Database/PaginatedArray.php:25 #32 Framework\Database\PaginatedArray:__construct in /var/www/www.cadi-tco.re/src/Shop/Action/CompatibleProductListingAction.php:44 #31 App\Shop\Action\CompatibleProductListingAction:__invoke in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #30 call_user_func_array in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #29 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:48 #28 Framework\Middleware\CombinedMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/DispatcherMiddleware.php:37 #27 Framework\Middleware\DispatcherMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #26 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/RouterMiddleware.php:83 #25 Framework\Middleware\RouterMiddleware:__invoke in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #24 call_user_func_array in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #23 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/CsrfMiddleware.php:61 #22 Framework\Middleware\CsrfMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #21 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/RendererRequestMiddleware.php:187 #20 Framework\Middleware\RendererRequestMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #19 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/MethodMiddleware.php:19 #18 Framework\Middleware\MethodMiddleware:__invoke in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #17 call_user_func_array in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #16 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/PostMaxSizeMiddleware.php:40 #15 Framework\Middleware\PostMaxSizeMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #14 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/RoutePrefixedMiddleware.php:47 #13 Framework\Middleware\RoutePrefixedMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #12 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/RoutePrefixedMiddleware.php:47 #11 Framework\Middleware\RoutePrefixedMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #10 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Auth/ForbiddenMiddleware.php:36 #9 App\Auth\ForbiddenMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #8 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/TrailingSlashMiddleware.php:19 #7 Framework\Middleware\TrailingSlashMiddleware:__invoke in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #6 call_user_func_array in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:58 #5 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/vendor/middlewares/whoops/src/Whoops.php:108 #4 Middlewares\Whoops:process in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:64 #3 Framework\Middleware\CombinedMiddleware:handle in /var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php:48 #2 Framework\Middleware\CombinedMiddleware:process in /var/www/www.cadi-tco.re/src/Framework/App.php:81 #1 Framework\App:handle in /var/www/www.cadi-tco.re/src/Framework/App.php:90 #0 Framework\App:run in /var/www/www.cadi-tco.re/public/index.php:112
Stack frames (34)
33
TypeError
/src/Framework/Database/PaginatedArray.php25
32
Framework\Database\PaginatedArray __construct
/src/Shop/Action/CompatibleProductListingAction.php44
31
App\Shop\Action\CompatibleProductListingAction __invoke
/src/Framework/Middleware/CombinedMiddleware.php58
30
call_user_func_array
/src/Framework/Middleware/CombinedMiddleware.php58
29
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/CombinedMiddleware.php48
28
Framework\Middleware\CombinedMiddleware process
/src/Framework/Middleware/DispatcherMiddleware.php37
27
Framework\Middleware\DispatcherMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
26
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/RouterMiddleware.php83
25
Framework\Middleware\RouterMiddleware __invoke
/src/Framework/Middleware/CombinedMiddleware.php58
24
call_user_func_array
/src/Framework/Middleware/CombinedMiddleware.php58
23
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/CsrfMiddleware.php61
22
Framework\Middleware\CsrfMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
21
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/RendererRequestMiddleware.php187
20
Framework\Middleware\RendererRequestMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
19
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/MethodMiddleware.php19
18
Framework\Middleware\MethodMiddleware __invoke
/src/Framework/Middleware/CombinedMiddleware.php58
17
call_user_func_array
/src/Framework/Middleware/CombinedMiddleware.php58
16
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/PostMaxSizeMiddleware.php40
15
Framework\Middleware\PostMaxSizeMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
14
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/RoutePrefixedMiddleware.php47
13
Framework\Middleware\RoutePrefixedMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
12
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/RoutePrefixedMiddleware.php47
11
Framework\Middleware\RoutePrefixedMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
10
Framework\Middleware\CombinedMiddleware handle
/src/Auth/ForbiddenMiddleware.php36
9
App\Auth\ForbiddenMiddleware process
/src/Framework/Middleware/CombinedMiddleware.php64
8
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/TrailingSlashMiddleware.php19
7
Framework\Middleware\TrailingSlashMiddleware __invoke
/src/Framework/Middleware/CombinedMiddleware.php58
6
call_user_func_array
/src/Framework/Middleware/CombinedMiddleware.php58
5
Framework\Middleware\CombinedMiddleware handle
/vendor/middlewares/whoops/src/Whoops.php108
4
Middlewares\Whoops process
/src/Framework/Middleware/CombinedMiddleware.php64
3
Framework\Middleware\CombinedMiddleware handle
/src/Framework/Middleware/CombinedMiddleware.php48
2
Framework\Middleware\CombinedMiddleware process
/src/Framework/App.php81
1
Framework\App handle
/src/Framework/App.php90
0
Framework\App run
/public/index.php112
/var/www/www.cadi-tco.re/src/Framework/Database/PaginatedArray.php

class PaginatedArray implements AdapterInterface
{

    /**
     * @var Array
     */
    private $array;

    
    /**
     *
     * @param \PDO $pdo
     * @param string $query Requête permettant de récupérer X résultats
     * @param string $queryCount Requête permettant de récupérer le nombre de résultats
     * @param string|null $entity
     * @param array params
     *
     */
    public function __construct(Array $array)
    {
        $this->array = $array;
    }
    /**
     * Returns the number of results.
     *
     * @return integer The number of results.
     */
    public function getNbResults(): int
    {
        return count($this->array);
    }
    
    /**
     * Returns an slice of the results.
     *
     * @param integer $offset The offset.
     * @param integer $length The length.
     *
     * @return array|\Traversable The slice.
/var/www/www.cadi-tco.re/src/Shop/Action/CompatibleProductListingAction.php
     * @var ProductTable
     */
    private $productTable;

    public function __construct(RendererInterface $renderer, ProductTable $productTable, Auth $auth)
    {
        $this->renderer = $renderer;
        $this->productTable = $productTable;
        $this->auth = $auth;
    }

    public function __invoke(ServerRequestInterface $request)
    {
        $page = $request->getAttribute('page') ? $request->getAttribute('page') : 1;
        $productId = $request->getAttribute('id');
        $product = $this->productTable->findBy('id', $productId);
        $productList = $this->productTable->getCompatibleProducts($productId);
        
        //Pagination sur un tableau
        $paginator = new PaginatedArray($productList);
        $products = (new Pagerfanta($paginator))->setMaxPerPage(20)
            ->setCurrentPage($page);
        
        return $this->renderer->render('@shop/compatible', compact('product', 'products', 'page'));
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
     * @var RequestHandlerInterface
     */
    private $handler;
    
    /**
     *
     * @param ContainerInterface $container
     * @param array $middlewares
     */

    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
/var/www/www.cadi-tco.re/src/Framework/Middleware/DispatcherMiddleware.php

    public function __construct(\Psr\Container\ContainerInterface $container)
    {
        $this->container = $container;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $route = $request->getAttribute(\Framework\Router\Route::class);
        if (is_null($route)) {
            //Appelle le prochain middleware : cad le NotFoundMiddleware
            return $handler->handle($request);
        }
        //Récupère l'action à appeller
        $callback = $route->getCallable();
        if (!is_array($callback)) {
            $callback = [$callback];
        }
        //Permet d'appler d'autres middlewares
        return (new CombinedMiddleware($this->container, $callback))->process($request, $handler);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/RouterMiddleware.php
            
            if($this->auth->getUser()){
                $user = $this->auth->getUser();
                $originalUser = $this->auth->getOriginalUser();
                $fichier = fopen('public/uploads/logs/log'.date('ymd').'.txt', 'a');
                $input = date('H:i:s').' : ';
                if($originalUser) {
                    $input .= '['.$originalUser ->getFirstname().' '.$originalUser ->getlastname().']';
                }
                $input .= $user ->getFirstname().' '.$user ->getlastname().' - ';
                $input .= $route->getName().' - '. json_encode($route->getParams());
                if($request->getMethod() == "POST") {
                    $input .= ' - POST => ' . json_encode($request->getParsedBody());
                }
                $input .= "\n";
                fwrite($fichier, $input);
                fclose($fichier);            
            }

            return $next($request);
        } catch (\Pagerfanta\Exception\OutOfRangeCurrentPageException $exception) {
            return new Response(404, [], $this->renderer->render('404'));
        } catch (\Framework\Exception\NoRecordException $exception) {
            return new Response(404, [], $this->renderer->render('404'));
        }
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CsrfMiddleware.php
    }
    
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        try {
            if (in_array($request->getMethod(), ['POST', 'PUT', 'DELETE'])) {
                $params = $request->getParsedBody()?: [];
                if (!array_key_exists($this->formKey, $params)) {
                    return $this->reject($request);
                } else {
                    $csrfList = $this->session[$this->sessionKey] ?? [];
                    if (in_array($params[$this->formKey], $csrfList)) {
                        $this->useToken($params[$this->formKey]);
                        return $handler->handle($request);
                    } else {
                        return $this->reject($request);
                    }
                }
            } else {
                return $handler->handle($request);
            }
        } catch (CsrfInvalidException $e) {
            $this->flashService->error($e->getMessage());
            return new RedirectBackResponse($request);
        }
    }
    
    public function generateToken(): string
    {
        $token = bin2hex(random_bytes(16));
        $csrfList = $this->session[$this->sessionKey] ?? [];
        $csrfList[] = $token;
        $this->session[$this->sessionKey] = $csrfList;
        
        $this->limitTokens();
        
        return $token;
    }
    
    public function getFormKey()
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/RendererRequestMiddleware.php
                //S'il y a un cookie popup, l'utilisateur a déjà vu le popup.
                if (isset($_COOKIE['cookie-popup'])) {
                    if ($_COOKIE['cookie-popup'] == $popupName) { //On vérifie qu'il s'agit bien du popup actuel
                        $popup = false;
                    } else { //S'il s'agit d'un autre popup, on l'enregistre pour ne plus l'afficher la prochaine fois.
                        setcookie("cookie-popup", $popupName, time() + 86400 * $popup->getCookieTime(), '/');
                    }
                } else { //S'il y en a pas, on l'enregistre pour ne plus l'afficher la prochaine fois.
                    setcookie("cookie-popup", $popupName, time() + 86400 * $popup->getCookieTime(), '/');
                }
            }
        }
        
        $this->renderer->addGlobal('domain', $domain);
        $this->renderer->addGlobal('cookie', $cookie);
        $this->renderer->addGlobal('cookieConsent', $cookieConsent);
        $this->renderer->addGlobal('popup', $popup);
        $this->renderer->addGlobal('popupQuestion', $popupQuestion);
        $this->renderer->addGlobal('url', 'www.cadi.re');
        return $handler->handle($request);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/MethodMiddleware.php
<?php

namespace Framework\Middleware;

use Psr\Http\Message\ServerRequestInterface;

class MethodMiddleware
{
    
    public function __invoke(ServerRequestInterface $request, callable $next)
    {
        $parsedBody = $request->getParsedBody();
        if (array_key_exists('_method', $parsedBody) &&
                in_array($parsedBody['_method'], ['DELETE', 'PUT'])
        ) {
            $request = $request->withMethod($parsedBody['_method']);
        }
        
        return $next($request);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/PostMaxSizeMiddleware.php
    private $flashService;

    public function __construct(FlashService $flashService)
    {
        $this->flashService = $flashService;
    }
    
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        if ($request->getMethod() === 'POST') {
            $postMaxSize = $this->returnBytes(ini_get('post_max_size'));
            $serverParams = $request->getServerParams();
                
            if ($serverParams['CONTENT_LENGTH']>$postMaxSize) {
                $this->flashService->error('Les éléments envoyés au formulaire sont trop importants');
                return new RedirectResponse($request->getUri());
            }
        }
            
        return $handler->handle($request);
    }
    
    private function returnBytes($size_str)
    {
        switch (substr($size_str, -1)) {
            case 'M':
            case 'm':
                return (int)$size_str * 1048576;
            case 'K':
            case 'k':
                return (int)$size_str * 1024;
            case 'G':
            case 'g':
                return (int)$size_str * 1073741824;
            default:
                return $size_str;
        }
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/RoutePrefixedMiddleware.php

    public function __construct(ContainerInterface $container, string $prefix, $middleware)
    {
        $this->container = $container;
        $this->prefix = $prefix;
        $this->middleware = $middleware;
    }
    
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $path = $request->getUri()->getPath();
        if (strpos($path, $this->prefix) === 0) {
            if (is_string($this->middleware)) {
                return $this->container->get($this->middleware)->process($request, $handler);
            } else {
                return $this->middleware->process($request, $handler);
            }
        }
        
        return $handler->handle($request);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/RoutePrefixedMiddleware.php

    public function __construct(ContainerInterface $container, string $prefix, $middleware)
    {
        $this->container = $container;
        $this->prefix = $prefix;
        $this->middleware = $middleware;
    }
    
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $path = $request->getUri()->getPath();
        if (strpos($path, $this->prefix) === 0) {
            if (is_string($this->middleware)) {
                return $this->container->get($this->middleware)->process($request, $handler);
            } else {
                return $this->middleware->process($request, $handler);
            }
        }
        
        return $handler->handle($request);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Auth/ForbiddenMiddleware.php
    /**
     * @var \Framework\Session\SessionInterface
     */
    private $session;

    /**
     * @var string
     */
    private $loginPath;

    public function __construct(string $loginPath, SessionInterface $session)
    {
        $this->loginPath = $loginPath;
        $this->session = $session;
    }
    
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        try {
            return $handler->handle($request);
        } catch (ForbiddenException $exception) {
            $this->session->set('auth.redirect', $request->getUri()->getPath());
            (new FlashService($this->session))->error('Vous devez posséder un compte pour accéder à cette page');
            return new RedirectResponse($this->loginPath);
        } catch (ForbiddenProfilException $exception) {
            $this->session->delete('auth.redirect');
            (new FlashService($this->session))->error('Votre compte ne vous permet pas d\'accéder à cette page');
            return new RedirectResponse($this->session->get('auth.back.redirect') ?? $this->loginPath);
        }
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/TrailingSlashMiddleware.php
<?php

namespace Framework\Middleware;

use Psr\Http\Message\ServerRequestInterface;

class TrailingSlashMiddleware
{
    
    public function __invoke(ServerRequestInterface $request, callable $next)
    {
        $uri = $request->getUri()->getPath();
        
        if (!empty($uri) && $uri !== '/' && $uri[-1] === '/') {
            return (new \GuzzleHttp\Psr7\Response())
            ->withStatus(301)
            ->withHeader('Location', substr($uri, 0, -1));
        }
        return $next($request);
    }
}
 
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
/var/www/www.cadi-tco.re/vendor/middlewares/whoops/src/Whoops.php
            $whoops->register();
 
            $shutdown = function () use ($whoops) {
                $whoops->allowQuit(true);
                $whoops->writeToOutput(true);
                $whoops->sendHttpCode(true);
 
                $method = Run::SHUTDOWN_HANDLER;
                $whoops->$method();
            };
 
            if ($this->system) {
                $this->system->registerShutdownFunction($shutdown);
            } else {
                register_shutdown_function($shutdown);
            }
        }
 
        try {
            $response = $handler->handle($request);
        } catch (\Throwable $exception) {
            $response = $this->createResponse(500);
            $response->getBody()->write($whoops->$method($exception));
            $response = self::updateResponseContentType($response, $whoops);
        } finally {
            while (ob_get_level() >= $level) {
                ob_end_clean();
            }
        }
 
        if ($this->catchErrors) {
            $whoops->unregister();
        }
 
        return $response;
    }
 
    /**
     * Returns the whoops instance or create one.
     */
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
     *
     * @return callable|null
     */
    private function getMiddleware()
    {
        if (array_key_exists($this->index, $this->middlewares)) {
            if (is_string($this->middlewares[$this->index])) {
                $middleware = $this->container->get($this->middlewares[$this->index]);
            } else {
                $middleware = $this->middlewares[$this->index];
            }
            
            $this->index ++;
            
            return $middleware;
        }
/var/www/www.cadi-tco.re/src/Framework/Middleware/CombinedMiddleware.php
     * @var RequestHandlerInterface
     */
    private $handler;
    
    /**
     *
     * @param ContainerInterface $container
     * @param array $middlewares
     */

    public function __construct(ContainerInterface $container, array $middlewares)
    {
        $this->container = $container;
        $this->middlewares = $middlewares;
    }

    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
    {
        $this->handler = $handler;
        return $this->handle($request);
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $middleware = $this->getMiddleware();
        
        if (is_null($middleware)) {
            return $this->handler->handle($request);
        } elseif (is_callable($middleware)) {
            $response = call_user_func_array($middleware, [$request, [$this, 'handle']]);
            if (is_string($response)) {
                return new Response(200, [], $response);
            }
            return $response;
        } elseif ($middleware instanceof \Psr\Http\Server\MiddlewareInterface) {
            return $middleware->process($request, $this);
        }
    }
    
    /**
/var/www/www.cadi-tco.re/src/Framework/App.php
     */
    public function pipe($routePrefix, $middleware = null): self
    {
        if ($middleware === null) {//Si le middleware n'est pas renseigné
        // Le middleware est renseigné au premier paramètre.
            $this->middlewares[] = $routePrefix;
        } else {
            $this->middlewares[] = new RoutePrefixedMiddleware($this->getContainer(), $routePrefix, $middleware);
        }
        return $this;
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $this->index++;
        if ($this->index > 1) {
            throw new \Exception();
        }
        $middleware = new CombinedMiddleware($this->getContainer(), $this->middlewares);
        return $middleware->process($request, $this);
    }
    
    public function run(ServerRequestInterface $request): ResponseInterface
    {
        foreach ($this->modules as $module) {
            $this->getContainer()->get($module);
        }
        
        return $this->handle($request);
    }
    
    public function getContainer():ContainerInterface
    {
        if ($this->container === null) {
            $builder = new \DI\ContainerBuilder();
            $env = getenv('ENV') ?: 'production';
            if ($env === 'production') {
                $builder->enableCompilation('tmp/di');
                $builder->writeProxiesToFile(true, 'tmp/proxies');
                //$builder->enableDefinitionCache();
/var/www/www.cadi-tco.re/src/Framework/App.php
        return $this;
    }
    
    public function handle(ServerRequestInterface $request): ResponseInterface
    {
        $this->index++;
        if ($this->index > 1) {
            throw new \Exception();
        }
        $middleware = new CombinedMiddleware($this->getContainer(), $this->middlewares);
        return $middleware->process($request, $this);
    }
    
    public function run(ServerRequestInterface $request): ResponseInterface
    {
        foreach ($this->modules as $module) {
            $this->getContainer()->get($module);
        }
        
        return $this->handle($request);
    }
    
    public function getContainer():ContainerInterface
    {
        if ($this->container === null) {
            $builder = new \DI\ContainerBuilder();
            $env = getenv('ENV') ?: 'production';
            if ($env === 'production') {
                $builder->enableCompilation('tmp/di');
                $builder->writeProxiesToFile(true, 'tmp/proxies');
                //$builder->enableDefinitionCache();
            }
            
            if ($this->definition) {
                $builder->addDefinitions($this->definition);
            }

            foreach ($this->modules as $module) {
                if ($module::DEFINITIONS) {
                    $builder->addDefinitions($module::DEFINITIONS);
/var/www/www.cadi-tco.re/public/index.php
    )
    ->pipe(
        $container->get('superadmin.prefix'),
        $container->get(Framework\Auth\RoleMiddlewareFactory::class)->makeForRole('superadmin')
    )
    ->pipe(PostMaxSizeMiddleware::class)
    ->pipe(MethodMiddleware::class)
    ->pipe(RendererRequestMiddleware::class)//Ajoute des variables globales
    ->pipe(CsrfMiddleware::class)
    ->pipe(RouterMiddleware::class)
    ->pipe(DispatcherMiddleware::class)
    ->pipe(NotFoundMiddleware::class);
        
if(!empty($_COOKIE['cookie-debug'])) {
    $fichier = fopen('timeScript.txt', 'a');
    fwrite($fichier, 'pipes ok : '.date('H:i:s')."\n");
}
 
if (php_sapi_name() !=="cli") {
    $response = $app->run(\GuzzleHttp\Psr7\ServerRequest::fromGlobals());
    Http\Response\send($response);
    if(!empty($_COOKIE['cookie-debug'])) {
        $fichier = fopen('timeScript.txt', 'a');
        fwrite($fichier, 'End : '.date('H:i:s')."\n");
    }
}
 

Environment & details:

empty
empty
empty
empty
empty
Key Value
REDIRECT_HTTPS on
REDIRECT_SSL_TLS_SNI www.cadi.re
REDIRECT_STATUS 200
HTTPS on
SSL_TLS_SNI www.cadi.re
HTTP_ACCEPT */*
HTTP_USER_AGENT claudebot
HTTP_HOST www.cadi.re
PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SERVER_SIGNATURE <address>Apache/2.4.25 (Debian) Server at www.cadi.re Port 443</address>
SERVER_SOFTWARE Apache/2.4.25 (Debian)
SERVER_NAME www.cadi.re
SERVER_ADDR 10.254.252.98
SERVER_PORT 443
REMOTE_ADDR 3.94.102.228
DOCUMENT_ROOT /var/www/www.cadi-tco.re/public
REQUEST_SCHEME https
CONTEXT_PREFIX
CONTEXT_DOCUMENT_ROOT /var/www/www.cadi-tco.re/public
SERVER_ADMIN webmaster@localhost
SCRIPT_FILENAME /var/www/www.cadi-tco.re/public/index.php
REMOTE_PORT 51034
REDIRECT_URL /produits/12915-huawei-mediapad-m5-lite/compatibles.html
GATEWAY_INTERFACE CGI/1.1
SERVER_PROTOCOL HTTP/1.1
REQUEST_METHOD GET
QUERY_STRING
REQUEST_URI /produits/12915-huawei-mediapad-m5-lite/compatibles.html
SCRIPT_NAME /index.php
PHP_SELF /index.php
REQUEST_TIME_FLOAT 1711631197.757
REQUEST_TIME 1711631197
empty
0. Whoops\Handler\PrettyPageHandler