Passed
Push — master ( 081d39...3cb69a )
by Nicolaas
03:44
created

QuickSearchBaseClass   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 14
dl 0
loc 34
rs 10
c 2
b 0
f 0
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A IsEnabled() 0 3 1
A available_quick_searches() 0 3 1
A getSortOverride() 0 3 1
A get_list_of_quick_searches() 0 13 3
1
<?php
2
3
namespace Sunnysideup\SiteWideSearch\QuickSearches;
4
5
use SilverStripe\Control\Controller;
6
use SilverStripe\Core\ClassInfo;
7
use SilverStripe\Core\Config\Configurable;
8
use SilverStripe\Core\Injector\Injector;
9
use SilverStripe\Forms\Form;
10
11
abstract class QuickSearchBaseClass
12
{
13
    use Configurable;
14
15
    private static $is_enabled = true;
16
    public static function available_quick_searches()
17
    {
18
        return ClassInfo::subclassesFor(self::class, false);
19
    }
20
    public function IsEnabled(): bool
21
    {
22
        return $this->Config()->get('is_enabled');
23
    }
24
25
    abstract public function getTitle(): string;
26
    abstract public function getClassesToSearch(): array;
27
    abstract public function getFieldsToSearch(): array;
28
    public function getSortOverride(): ?array
29
    {
30
        return null;
31
    }
32
    public static function get_list_of_quick_searches(): array
33
    {
34
        $array = [
35
            'all' => 'All',
36
            'limited' => 'Limited search',
37
        ];
38
        $availableSearchClasses = self::available_quick_searches();
39
        if(!empty($availableSearchClasses) > 0) {
40
            foreach($availableSearchClasses as $availableSearchClass) {
41
                $array[$availableSearchClass] =  Injector::inst()->get($availableSearchClass)->getTitle();
42
            }
43
        }
44
        return $array;
45
46
    }
47
48
}
49