Completed
Push — master ( 261f00...a2b53b )
by Adam
02:35
created

Filter::addFilter()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 6

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 9
cts 9
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 6
nc 4
nop 2
crap 3
1
<?php
2
3
namespace BestServedCold\LaravelZendSearch\Lucene;
4
5
use BestServedCold\LaravelZendSearch\Lucene\Filter\Factory;
6
use ZendSearch\Lucene\Analysis\Analyzer\Analyzer;
7
use ZendSearch\Lucene\Analysis\Analyzer\Common\AbstractCommon;
8
use ZendSearch\Lucene\Analysis\Analyzer\Common\Utf8Num\CaseInsensitive;
9
use ZendSearch\Lucene\Search\QueryParser;
10
11
/**
12
 * Class Filter
13
 *
14
 * @package BestServedCold\LaravelZendSearch\Lucene
15
 */
16
class Filter
17
{
18
    /**
19
     * @var null|AbstractCommon
20
     */
21
    private static $analyzer = null;
22
23
    /**
24
     * @var array
25
     */
26
    private static $filters = [];
27
28
    /**
29
     * Filter constructor.
30
     *
31
     * @param CaseInsensitive $caseInsensitive
32
     */
33 29
    public function __construct(CaseInsensitive $caseInsensitive)
34
    {
35 29
        self::$analyzer = self::$analyzer ?: $caseInsensitive;
36 29
    }
37
38
    /**
39
     * @param AbstractCommon $analyzer
40
     */
41 1
    public static function setAnalyzer(AbstractCommon $analyzer)
42
    {
43 1
        self::$analyzer = $analyzer;
44 1
    }
45
46
    /**
47
     * @return null|AbstractCommon|CaseInsensitive
48
     */
49 2
    public static function getAnalyzer()
50
    {
51 2
        return self::$analyzer;
52
    }
53
54
    /**
55
     * @param string $filter
56
     * @param mixed  $option
57
     */
58 22
    public static function addFilter($filter, $option)
59
    {
60 22
        if (self::$analyzer === null) {
61 1
            self::$analyzer = new CaseInsensitive;
62 1
        }
63
64 22
        if (!in_array($filter, self::$filters)) {
65 1
            self::$analyzer->addFilter(Factory::getFilter($filter, $option));
66 1
            self::$filters[] = $filter;
67 1
        }
68 22
    }
69
70
    /**
71
     * @return void
72
     */
73 7
    public function setFilters()
74
    {
75 7
        QueryParser::setDefaultEncoding('UTF-8');
76 7
        if (self::$analyzer instanceof AbstractCommon) {
77 7
            Analyzer::setDefault(self::$analyzer);
78 7
        }
79
80 7
    }
81
82
    /**
83
     * @return array
84
     */
85 1
    public static function getFilters()
86
    {
87 1
        return self::$filters;
88
    }
89
}
90