DateIntervalField::render()   B
last analyzed

Complexity

Conditions 4
Paths 1

Size

Total Lines 25
Code Lines 23

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 25
c 0
b 0
f 0
rs 8.5806
cc 4
eloc 23
nc 1
nop 2
1
<?php namespace rtens\domin\delivery\web\fields;
2
3
use rtens\domin\delivery\web\Element;
4
use rtens\domin\delivery\web\WebField;
5
use \rtens\domin\delivery\cli\fields\DateIntervalField as CliDateIntervalField;
6
use rtens\domin\Parameter;
7
8
class DateIntervalField extends CliDateIntervalField implements WebField {
9
10
    /**
11
     * @param Parameter $parameter
12
     * @param \DateInterval $value
13
     * @return string
14
     */
15
    public function render(Parameter $parameter, $value) {
16
        return (string)new Element('div', ['class' => 'form-inline'], [
17
            new Element('input', [
18
                'class' => 'form-control',
19
                'type' => 'number',
20
                'size' => 3,
21
                'name' => $parameter->getName() . '[d]',
22
                'value' => $value ? $value->d : null]),
23
            new Element('span', [], ['days']),
24
            new Element('input', [
25
                'class' => 'form-control',
26
                'type' => 'number',
27
                'size' => 3,
28
                'name' => $parameter->getName() . '[h]',
29
                'value' => $value ? $value->h : null]),
30
            new Element('span', [], ['hours']),
31
            new Element('input', [
32
                'class' => 'form-control',
33
                'type' => 'number',
34
                'size' => 3,
35
                'name' => $parameter->getName() . '[i]',
36
                'value' => $value ? $value->i : null]),
37
            new Element('span', [], ['minutes']),
38
        ]);
39
    }
40
41
    /**
42
     * @param Parameter $parameter
43
     * @param string $serialized
44
     * @return \DateInterval
45
     */
46
    public function inflate(Parameter $parameter, $serialized) {
47
        if (!$serialized) {
48
            return $parameter->isRequired() ? new \DateInterval('P0D') : null;
49
        }
50
51
        $days = isset($serialized['d']) ? intval($serialized['d']) : 0;
52
        $hours = isset($serialized['h']) ? intval($serialized['h']) : 0;
53
        $minutes = isset($serialized['i']) ? intval($serialized['i']) : 0;
54
55
        return new \DateInterval("P{$days}DT{$hours}H{$minutes}M");
56
    }
57
58
    /**
59
     * @param Parameter $parameter
60
     * @return array|\rtens\domin\delivery\web\Element[]
61
     */
62
    public function headElements(Parameter $parameter) {
63
        return [];
64
    }
65
}