SearchComponent::run()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 10
nc 2
nop 1
dl 0
loc 14
rs 9.9332
c 0
b 0
f 0
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
}