PageController   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 78
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Importance

Changes 5
Bugs 3 Features 2
Metric Value
wmc 7
c 5
b 3
f 2
lcom 1
cbo 6
dl 0
loc 78
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A indexAction() 0 10 1
A documentAction() 0 22 2
A assetAction() 0 6 1
A loadDocsAction() 0 10 3
1
<?php
2
3
/*
4
 * This file is part of the Knowledge Base package.
5
 *
6
 * Copyright (c) 2015 LIN3S <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace LIN3S\KnowledgeBaseBundle\Controller;
13
14
use LIN3S\KnowledgeBase\Process\GitProcess;
15
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
16
use Symfony\Component\Console\Input\ArrayInput;
17
use Symfony\Component\Console\Output\NullOutput;
18
use Symfony\Component\HttpFoundation\Response;
19
20
/**
21
 * Page controller class.
22
 *
23
 * @author Gorka Laucirica <[email protected]>
24
 * @author Beñat Espiña <[email protected]>
25
 */
26
class PageController extends Controller
27
{
28
    /**
29
     * Index action.
30
     *
31
     * @return \Symfony\Component\HttpFoundation\Response
32
     */
33
    public function indexAction()
34
    {
35
        $configuration = $this->get('lin3s_knowledge_base.configuration');
36
37
        return new Response($configuration->template()->render([
38
            'menu'          => $this->get('lin3s_knowledge_base.loader.menu')->get('/'),
39
            'html'          => '<h1>This is our Knowledge Base landing page</h1>',
40
            'configuration' => $configuration
41
        ]));
42
    }
43
44
    /**
45
     * Document action, renders the page of request given.
46
     *
47
     * @param string $path Path to the requested document
48
     *
49
     * @return \Symfony\Component\HttpFoundation\Response
50
     */
51
    public function documentAction($path)
52
    {
53
        $absolutePathFile = $this->get('kernel')->getRootDir() . '/../docs/' . $path;
54
        if (file_exists($absolutePathFile)) {
55
            $response = new Response();
56
            $response->headers->set('Content-Type', mime_content_type($absolutePathFile));
57
            $response->headers->set('Content-Disposition', 'inline;filename="' . $path . '";');
58
            $response->headers->set('Content-length', filesize($absolutePathFile));
59
            $response->sendHeaders();
60
            $response->sendContent(readfile($absolutePathFile));
0 ignored issues
show
Unused Code introduced by
The call to Response::sendContent() has too many arguments starting with readfile($absolutePathFile).

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress.

In this case you can add the @ignore PhpDoc annotation to the duplicate definition and it will be ignored.

Loading history...
61
62
            return $response;
63
        }
64
65
        $configuration = $this->get('lin3s_knowledge_base.configuration');
66
67
        return new Response($configuration->template()->render([
68
            'menu'          => $this->get('lin3s_knowledge_base.loader.menu')->get($path),
69
            'html'          => $this->get('lin3s_knowledge_base.loader.html')->get($path),
70
            'configuration' => $configuration
71
        ]));
72
    }
73
74
    /**
75
     * Asset action, gets the asset of request given.
76
     *
77
     * @param string $path Path to the requested document
78
     *
79
     * @return \Symfony\Component\HttpFoundation\Response
80
     */
81
    public function assetAction($path)
82
    {
83
        $configuration = $this->get('lin3s_knowledge_base.configuration');
84
85
        return new Response(file_get_contents($configuration->docsPath() . $path));
86
    }
87
88
    /**
89
     * Action that wrappers the logic about loading the docs.
90
     *
91
     * @return \Symfony\Component\HttpFoundation\Response
92
     */
93
    public function loadDocsAction()
94
    {
95
        if (true === $result = GitProcess::updateModules()) {
96
            $result = 0 === $this->get('lin3s_knowledge_base.command.doc')->run(new ArrayInput([]), new NullOutput())
97
                ? 'The docs are successfully loaded'
98
                : 'Something wrong happens during the loading process';
99
        }
100
101
        return new Response($result);
102
    }
103
}
104