Passed
Push — hans/elevation ( ec80bc )
by Simon
06:00
created

ElevatedItem   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 32
c 1
b 0
f 0
dl 0
loc 51
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A getCMSFields() 0 24 3
1
<?php
2
3
namespace Firesphere\SolrSearch\Models;
4
5
use Firesphere\SolrSearch\Indexes\BaseIndex;
6
use SilverStripe\Dev\Debug;
7
use SilverStripe\Forms\DropdownField;
8
use SilverStripe\ORM\DataObject;
9
use SilverStripe\ORM\ManyManyList;
10
11
/**
12
 * Class \Firesphere\SolrSearch\Models\ElevatedItem
13
 *
14
 * @property int $Rank
15
 * @property string $Title
16
 * @property string $ObjectClass
17
 * @property int $ObjectID
18
 * @property string $SolrID
19
 * @property boolean $Include
20
 * @property boolean $Exclude
21
 * @method ManyManyList|Elevation[] Keywords()
22
 */
23
class ElevatedItem extends DataObject
24
{
25
    private static $table_name = 'ElevatedItem';
26
27
    private static $db = [
28
        'Rank'        => 'Int',
29
        'Title'       => 'Varchar(255)',
30
        'ObjectClass' => 'Varchar(255)',
31
        'ObjectID'    => 'Int',
32
        'SolrID'      => 'Varchar(255)',
33
        'Include'     => 'Boolean(1)',
34
        'Exclude'     => 'Boolean(0)',
35
    ];
36
37
    private static $belongs_many_many = [
38
        'Keywords' => Elevation::class,
39
    ];
40
41
    private static $summary_fields = [
1 ignored issue
show
introduced by
The private property $summary_fields is not used, and could be removed.
Loading history...
42
        'Title',
43
        'Rank',
44
        'ObjectClass',
45
        'SolrID',
46
        'Include',
47
        'Exclude',
48
    ];
49
50
    public function getCMSFields()
51
    {
52
        $fields = parent::getCMSFields();
53
54
        $indexes = $this->Keywords()->column('Index');
55
56
        $classList = [];
57
        foreach ($indexes as $index) {
58
            /** @var BaseIndex $index */
59
            $index = new $index();
60
            $classes = $index->getClasses();
61
62
            foreach ($classes as $class) {
63
                $classList[$class] = singleton($class)->singular_name();
64
            }
65
        }
66
        $field = DropdownField::create('ObjectClass', _t(self::class . '.OBJECTCLASS', 'Object type'), $classList);
67
        $field->setEmptyString(_t(self::class . '.OBJECTSTRING', 'Select an object to elevate'));
68
69
        $fields->replaceField('ObjectClass', $field);
70
71
        $fields->dataFieldByName('SolrID')->setReadonly(true);
72
73
        return $fields;
74
    }
75
}
76