Lines 98.21% 55 / 56
Methods 83.33% 5 / 6
Classes 0.00% 0 / 1
Name Lines Methods CRAP
 readResponse 95.23% 20 / 21 0.00% 0 / 1 4
 getDefaultParamters 100.00% 9 / 9 100.00% 1 / 1 1
 [BO\Zmscalldisplay\BaseController] __invoke 100.00% 3 / 3 100.00% 1 / 1 1
 [BO\Zmscalldisplay\BaseController] buildQuery 100.00% 8 / 8 100.00% 1 / 1 4
 [BO\Zmscalldisplay\BaseController] buildHashFromParameterList 100.00% 10 / 10 100.00% 1 / 1 4
 [BO\Zmscalldisplay\BaseController] getWebcallDisplayUrl 100.00% 5 / 5 100.00% 1 / 1 1
19class Index extends BaseController
20{
21    /**
22     * @SuppressWarnings(UnusedFormalParameter)
23     * @param RequestInterface|SlimRequest $request
24     * @param ResponseInterface $response
25     * @return ResponseInterface
26     * @psalm-api
27     */
28    public function readResponse(
29        RequestInterface $request,
30        ResponseInterface $response,
31        array $args
32    ) {
33        $validator = $request->getAttribute('validator');
34        $defaultTemplate = $validator->getParameter("template")
35            ->isPath()
36            ->setDefault('default_platz')
37            ->getValue();
38
39        $calldisplayHelper = (new Helper\Calldisplay($request));
40        $parameters = $this->getDefaultParamters($request, $calldisplayHelper);
41
42        $zoom = $validator->getParameter('zoom')->isString()->getValue();
43        if ($zoom) {
44            $parameters['zoom'] = (float) $zoom;
45        }
46
47        if ($request->getParam('qrcode') && $request->getParam('qrcode') == 1) {
48            $parameters['showQrCode'] = true;
49            $parameters['webcalldisplay'] = $this->getWebcallDisplayUrl($request, $parameters);
50        }
51        $calldisplay = $calldisplayHelper->getEntity();
52
53        $template = (new Helper\TemplateFinder($defaultTemplate))->setCustomizedTemplate($calldisplay);
54        $parameters['displayNumber'] = $request->getParam('display') ?? null;
55
56        return \BO\Slim\Render::withHtml(
57            $response,
58            $template->getTemplate(),
59            $parameters
60        );
61    }
62
63    /**
64     * @param RequestInterface $request
65     * @param Helper\Calldisplay $calldisplayHelper
66     * @return array
67     */
68    protected function getDefaultParamters(RequestInterface $request, $calldisplayHelper)
69    {
70        $calldisplay = $calldisplayHelper->getEntity();
71
72        return [
73            'debug' => \App::DEBUG,
74            'queueStatusRequested' => implode(',', $calldisplayHelper::getRequestedQueueStatus($request)),
75            'scopeList' => $calldisplay->getFullScopeList()->getIdsCsv(),
76            'title' => 'Aufrufanzeige',
77            'calldisplay' => $calldisplay,
78            'showQrCode' => false,
79        ];
80    }
81}

Inherited from BO\Zmscalldisplay\BaseController

24    public function __invoke(RequestInterface $request, ResponseInterface $response, array $args)
25    {
26        $request = $this->initRequest($request);
27        $noCacheResponse = \BO\Slim\Render::withLastModified($response, time(), '0');
28        return $this->readResponse($request, $noCacheResponse, $args);
29    }
31    protected function buildQuery(string $target, RequestInterface $request): string
32    {
33        $queryArr  = [];
34        $allParams = array_merge(static::$hashParameter[$target], ['template']);
35        $currentQP = $request->getQueryParams();
36        foreach ($allParams as $parameter) {
37            if (isset($currentQP[$parameter]) && $currentQP[$parameter]) {
38                $queryArr[$parameter] = $currentQP[$parameter];
39            }
40        }
41
42        $queryArr['hmac'] = $this->buildHashFromParameterList($target, $request);
43
44        return http_build_query($queryArr);
45    }
47    protected function buildHashFromParameterList(string $target, RequestInterface $request)
48    {
49        $paramsToHash = [];
50        $currentQP = $request->getQueryParams();
51        foreach (static::$hashParameter[$target] as $parameter) {
52            if (isset($currentQP[$parameter]) && $currentQP[$parameter]) {
53                $paramsToHash[$parameter] = $currentQP[$parameter];
54            }
55        }
56
57        return SlimHelper::hashQueryParameters(
58            $target,
59            $paramsToHash,
60            static::$hashParameter[$target]
61        );
62    }
71    protected function getWebcallDisplayUrl(RequestInterface $request, array $parameters)
72    {
73        $target = 'webcalldisplay';
74        $config = \App::$http->readGetResult('/config/')->getEntity();
75
76        $url = '' . $config->toProperty()->webcalldisplay->baseUrl->get();
77        $url .= '?' . $this->buildQuery($target, $request);
78
79        return $url;
80    }