SearchComponent   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
eloc 17
c 1
b 1
f 0
dl 0
loc 37
rs 10
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A run() 0 14 2
A checkParameters() 0 8 3
1
<?php
2
/**
3
 * User: jensk
4
 * Date: 21-2-2017
5
 * Time: 16:55
6
 */
7
8
namespace CloudControl\Cms\components;
9
10
use CloudControl\Cms\search\CharacterFilter;
11
use CloudControl\Cms\search\Search;
12
use CloudControl\Cms\search\Tokenizer;
13
use CloudControl\Cms\storage\Storage;
14
15
class SearchComponent extends CachableBaseComponent
16
{
17
    protected $searchParameterName = 'q';
18
    protected $searchResultsParameterName = 'searchResults';
19
20
    /**
21
     * @param \CloudControl\Cms\storage\Storage $storage
22
     * @throws \Exception
23
     */
24
    public function run(Storage $storage)
25
    {
26
        parent::run($storage);
27
28
        $this->checkParameters();
29
30
        $request = $this->request;
31
        if (isset($request::$get[$this->searchParameterName])) {
32
            $query = $_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
    protected 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
}