Passed
Push — develop ( 169afe...f2bd80 )
by Jens
02:39
created

SearchComponent   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 40
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
dl 0
loc 40
rs 10
c 0
b 0
f 0
wmc 5
lcom 1
cbo 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A run() 0 16 2
A checkParameters() 0 10 3
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 21-2-2017
5
 * Time: 16:55
6
 */
7
8
namespace library\components;
9
10
use library\cc\Request;
11
use library\search\CharacterFilter;
12
use library\search\Search;
13
use library\search\Tokenizer;
14
use library\storage\JsonStorage;
15
16
class SearchComponent extends BaseComponent
17
{
18
	protected $searchParameterName = 'q';
19
	protected $searchResultsParameterName = 'searchResults';
20
21
	/**
22
	 * @param \library\storage\JsonStorage $storage
23
	 */
24
	public function run(JsonStorage $storage)
25
	{
26
		parent::run($storage);
27
28
		$this->checkParameters();
29
30
		$request = $this->request;
31
		if (isset($request::$get[$this->searchParameterName])) {
32
			$query = $request::$get[$this->searchParameterName];
33
			$filteredQuery = new CharacterFilter($query);
34
			$tokenizer = new Tokenizer($filteredQuery);
35
			$search = new Search($storage);
36
			$results = $search->getDocumentsForTokenizer($tokenizer);
37
			$this->parameters[$this->searchResultsParameterName] = $results;
38
		}
39
	}
40
41
	/**
42
	 * Checks to see if any parameters were defined in the cms and acts according
43
	 */
44
	private function checkParameters()
45
	{
46
		if (isset($this->parameters['searchParameterName'])) {
47
			$this->searchParameterName = $this->parameters['searchParameterName'];
48
		}
49
50
		if (isset($this->parameters['searchResultsParameterName'])) {
51
			$this->searchParameterName = $this->parameters['searchResultsParameterName'];
52
		}
53
	}
54
55
}