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)); |
|
|
|
|
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
|
|
|
|
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.