AddToCampaignValidator   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 10
eloc 22
c 1
b 0
f 0
dl 0
loc 48
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
B php() 0 38 10
1
<?php
2
3
namespace SilverStripe\CampaignAdmin;
4
5
use SilverStripe\Forms\Validator;
6
7
class AddToCampaignValidator extends Validator
8
{
9
    /**
10
     * Allows validation of fields via specification of a php function for
11
     * validation which is executed after the form is submitted.
12
     *
13
     * @param array $data
14
     *
15
     * @return boolean
16
     */
17
    public function php($data)
18
    {
19
        $valid = true;
20
        $fields = $this->form->Fields();
21
22
        // Check field validation
23
        foreach ($fields as $field) {
24
            $valid = ($field->validate($this) && $valid);
25
        }
26
        if (!$valid) {
27
            return $valid;
28
        }
29
        $hasSelectField = $fields->dataFieldByName('Campaign') !== null;
30
        $hasNewField = $fields->dataFieldByName('NewTitle') !== null;
31
32
        // Guess best field to display error against
33
        if ((!empty($data['AddNewSelect']) || !$hasSelectField) && $hasNewField) {
34
            // Error: - Enter a title, either if the checkbox is checked, or no option dropdown is present
35
            // but only if NewTitle is set and empty
36
            if (empty($data['NewTitle'])) {
37
                $valid = false;
38
                $this->result->addFieldError(
39
                    'NewTitle',
40
                    _t(__CLASS__ . '.NEW_TITLE_EMPTY', 'Please enter a title for the new campaign')
41
                );
42
            }
43
        } elseif ($hasSelectField) {
44
            // Error: - Campaign dropdown is posted but empty
45
            if (empty($data['Campaign'])) {
46
                $valid = false;
47
                $this->result->addFieldError(
48
                    'Campaign',
49
                    _t(__CLASS__ . '.SELECT_CAMPAIGN_EMPTY', 'Please select a campaign')
50
                );
51
            }
52
        }
53
54
        return $valid;
55
    }
56
}
57