RendererDefaultsMiddleware::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 3
nc 1
nop 2
1
<?php
2
/**
3
 * Lichtenwallner  (https://lichtenwallner.at)
4
 *
5
 * @see https://github.com/jolicht/markdown-cms for the canonical source repository
6
 * @license https://github.com/jolicht/markdown-cms/blob/master/LICENSE MIT
7
 * @copyright Copyright (c) Johannes Lichtenwallner
8
 */
9
declare(strict_types = 1);
10
namespace Jolicht\MarkdownCms\Middleware;
11
12
use Psr\Http\Message\ServerRequestInterface;
13
use Psr\Http\Message\ResponseInterface;
14
use Zend\Expressive\Template\TemplateRendererInterface;
15
16
class RendererDefaultsMiddleware
17
{
18
    /**
19
     * Template renderer
20
     *
21
     * @var TemplateRendererInterface
22
     */
23
    private $templateRenderer;
24
25
    /**
26
     * Base uri
27
     *
28
     * @var string
29
     */
30
    private $baseUri;
31
32
    /**
33
     * Constructor
34
     *
35
     * @param TemplateRendererInterface $templateRenderer
36
     * @param string $baseUri
37
     */
38
    public function __construct(TemplateRendererInterface $templateRenderer, string $baseUri)
39
    {
40
        $this->templateRenderer = $templateRenderer;
41
        $this->baseUri = rtrim($baseUri, '/');
42
    }
43
44
    /**
45
     * Get template renderer
46
     *
47
     * @return TemplateRendererInterface
48
     */
49
    public function getTemplateRenderer() : TemplateRendererInterface
50
    {
51
        return $this->templateRenderer;
52
    }
53
54
    /**
55
     * Get base uri
56
     *
57
     * @return string
58
     */
59
    public function getBaseUri() : string
60
    {
61
        return $this->baseUri;
62
    }
63
64
    /**
65
     * Add default values to renderer
66
     * @param ServerRequestInterface $request
67
     * @param ResponseInterface $response
68
     * @param callable $next
69
     */
70
    public function __invoke(ServerRequestInterface $request, ResponseInterface $response, callable $next)
71
    {
72
        $params = $request->getServerParams();
73
        $this->getTemplateRenderer()->addDefaultParam(
74
            TemplateRendererInterface::TEMPLATE_ALL,
75
            'canonical_url',
76
            $this->getBaseUri() . $params['REQUEST_URI']
77
        );
78
        return $next($request, $response);
79
    }
80
}