GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.

ContentBlock_ColumnLayout   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 143
Duplicated Lines 11.19 %

Coupling/Cohesion

Components 1
Dependencies 9

Importance

Changes 0
Metric Value
wmc 9
lcom 1
cbo 9
dl 16
loc 143
rs 10
c 0
b 0
f 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A getCMSFields() 0 63 1
A ColumnColour() 0 6 1
A IsLayout() 0 3 1
A ColumnClasses() 8 8 2
A RowClasses() 8 8 2
A getBlockType() 0 4 1
A RenderBlock() 0 5 1

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
3
/**
4
 * Models a Content Block Column Layout
5
 *
6
 * @since 1.0.0
7
 */
8
class ContentBlock_ColumnLayout extends ContentBlock
0 ignored issues
show
Coding Style Compatibility introduced by
PSR1 recommends that each class must be in a namespace of at least one level to avoid collisions.

You can fix this by adding a namespace to your class:

namespace YourVendor;

class YourClass { }

When choosing a vendor namespace, try to pick something that is not too generic to avoid conflicts with other libraries.

Loading history...
9
{
10
11
    private static $db = [
0 ignored issues
show
Comprehensibility introduced by
Consider using a different property name as you override a private property of the parent class.
Loading history...
Unused Code introduced by
The property $db is not used and could be removed.

This check marks private properties in classes that are never used. Those properties can be removed.

Loading history...
12
        'Layout' => 'Enum("One Column, Two Column, Three Column")',
13
        'ColumnOneContent' => 'HTMLText',
14
        'ColumnTwoContent' => 'HTMLText',
15
        'ColumnThreeContent' => 'HTMLText',
16
        'ColumnOneColour' => 'Varchar',
17
        'ColumnTwoColour' => 'Varchar',
18
        'ColumnThreeColour' => 'Varchar',
19
    ];
20
21
    public function getCMSFields()
22
    {
23
        $fields = parent::getCMSFields();
24
25
        $fields->push(
26
            DropdownField::create('Layout')
27
            ->setSource(
28
                singleton('ContentBlock_ColumnLayout')
29
                ->dbObject('Layout')
30
                ->enumValues()
31
            )
32
        );
33
34
        $colourSource = Config::inst()->get('ContentBlock_ColumnLayout', 'colour_options');
35
36
        //Column One -------
37
        $columnOne = DisplayLogicWrapper::create(CompositeField::create([
38
             HeaderField::create('ColumnOne', 'Column One'),
39
             DropdownField::create(
40
                 'ColumnOneColour',
41
                 'Colour',
42
                 $colourSource
43
             ),
44
             HTMLEditorField::create('ColumnOneContent', 'Content'),
45
        ]));
46
        //Display if One Column || Two Column || Three Column
47
        $columnOne->displayIf('Layout')->isEqualTo('One Column')
48
            ->orIf('Layout')->isEqualTo('Two Column')
49
            ->orIf('Layout')->isEqualTo('Three Column');
50
        $fields->push($columnOne);
51
52
        //Column Two -------
53
        //Display if Two Column
54
        $columnTwo = DisplayLogicWrapper::create(CompositeField::create([
55
             HeaderField::create('ColumnTwo', 'Column Two'),
56
             DropdownField::create(
57
                 'ColumnTwoColour',
58
                 'Colour',
59
                 $colourSource
60
             ),
61
             HTMLEditorField::create('ColumnTwoContent', 'Content'),
62
        ]));
63
        $columnTwo->displayIf('Layout')->isEqualTo('Two Column')
64
            ->orIf('Layout')->isEqualTo('Three Column');
65
        $fields->push($columnTwo);
66
67
        //Column Three -------
68
        $columnThree =  DisplayLogicWrapper::create(CompositeField::create([
69
             HeaderField::create('ColumnThree', 'Column Three'),
70
             DropdownField::create(
71
                 'ColumnThreeColour',
72
                 'Colour',
73
                 $colourSource
74
             ),
75
             HTMLEditorField::create('ColumnThreeContent', 'Content'),
76
        ]));
77
        $columnThree->displayIf('Layout')->isEqualTo('Three Column');
78
        $fields->push($columnThree);
79
80
        $this->extend('updateCMSFields', $fields);
81
82
        return $fields;
83
    }
84
85
    /**
86
     * Get the colour for a column
87
     *
88
     * @return string
89
     */
90
    public function ColumnColour($column)
91
    {
92
        $property = sprintf('Column%sColour', $column);
93
        $colour = $this->getField($property);
94
        return sprintf('#%s', $colour);
95
    }
96
97
    public function IsLayout($layout){
98
        return ($this->getField('Layout') == $layout);
99
    }
100
101
    /**
102
     * Gets the configured classes for a column
103
     *
104
     * @return string
105
     */
106 View Code Duplication
    public function ColumnClasses()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
107
    {
108
        $classesArray = Config::inst()->get('ContentBlock_ColumnLayout', 'column_classes');
109
110
        $this->extend('updateColumnClasses', $classes);
111
112
        return (!empty($classesArray)) ? implode(' ', $classesArray) : '' ;
113
    }
114
115
    /**
116
     * Gets the configured classes for a row
117
     *
118
     * @return string
119
     */
120 View Code Duplication
    public function RowClasses()
0 ignored issues
show
Duplication introduced by
This method seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
121
    {
122
        $classesArray = Config::inst()->get('ContentBlock_ColumnLayout', 'row_classes');
123
124
        $this->extend('updateRowClasses', $classes);
125
126
        return (!empty($classesArray)) ? implode(' ', $classesArray) : '' ;
127
    }
128
129
    /**
130
     * Gets the block type for CMS display
131
     *
132
     * @return string
133
     */
134
    public function getBlockType()
135
    {
136
        return 'Column Layout';
137
    }
138
139
    /**
140
     * Renders the block for template
141
     *
142
     * @return string
143
     */
144
    public function RenderBlock()
145
    {
146
        Requirements::javascript(CONTENTBLOCKS_DIR . '/javascript/lib/jquery.matchHeight-min.js');
147
        return parent::RenderBlock();
148
    }
149
150
}
151