MessageProvider::customMessage()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 3
c 1
b 0
f 0
dl 0
loc 7
rs 10
cc 3
nc 2
nop 0
1
<?php
2
3
namespace Cube\SilverStripe\Validation;
4
5
/**
6
 * Class MessageProvider
7
 * @package SilverStripe\Validation
8
 */
9
class MessageProvider
10
{
11
    /**
12
     * @var
13
     */
14
    private $rule;
15
16
    /**
17
     * @var
18
     */
19
    private $field;
20
21
    /**
22
     * @var
23
     */
24
    private $arguments;
25
26
    /**
27
     * @var
28
     */
29
    private $messages;
30
31
32
    /**
33
     * MessageProvider constructor.
34
     * @param string $rule
35
     * @param string $field
36
     * @param array $arguments
37
     * @param array|null $messages
38
     */
39
    public function __construct(string $rule, string $field = '', array $arguments = [], array $messages = null)
40
    {
41
        $this->rule = $rule;
42
        $this->field = $field;
43
        $this->arguments = $arguments;
44
        $this->messages = $messages;
45
    }
46
47
    /**
48
     * @return string
49
     */
50
    public function get()
51
    {
52
        $field = _t(__CLASS__.".{$this->field}", $this->field);
53
54
        if ($message = $this->customMessage()) {
55
            return $message;
56
        }
57
58
        return _t(
59
            __CLASS__.".{$this->rule}",
60
            $this->rule,
61
            array_merge(['field' => $field], $this->arguments)
62
        );
63
    }
64
65
    /**
66
     * @return false|string
67
     */
68
    private function customMessage()
69
    {
70
        if (isset($this->messages[$this->field]) && isset($this->messages[$this->field][$this->rule])) {
71
            return (string) $this->messages[$this->field][$this->rule];
72
        }
73
74
        return false;
75
    }
76
77
    /**
78
     * @param string $rule
79
     * @param string $field
80
     * @param array $arguments
81
     * @param array $messages
82
     * @return MessageProvider
83
     */
84
    public static function make(string $rule, string $field = '', array $arguments = [], array $messages = [])
85
    {
86
        return new static($rule, $field, $arguments, $messages);
87
    }
88
}
89