Completed
Push — master ( ad1796...bd124e )
by Daniel
02:10
created

InputValidation::buildYMvalues()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 13
rs 9.2
cc 4
eloc 8
nc 4
nop 0
1
<?php
2
3
/**
4
 *
5
 * The MIT License (MIT)
6
 *
7
 * Copyright (c) 2016 Daniel Popiniuc
8
 *
9
 * Permission is hereby granted, free of charge, to any person obtaining a copy
10
 * of this software and associated documentation files (the "Software"), to deal
11
 * in the Software without restriction, including without limitation the rights
12
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
 * copies of the Software, and to permit persons to whom the Software is
14
 * furnished to do so, subject to the following conditions:
15
 *
16
 * The above copyright notice and this permission notice shall be included in all
17
 * copies or substantial portions of the Software.
18
 *
19
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
 *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
 * SOFTWARE.
26
 *
27
 */
28
29
namespace danielgp\salariu;
30
31
trait InputValidation
32
{
33
34
    private function applyYMvalidations(\Symfony\Component\HttpFoundation\Request $tCSG, $ymValues)
35
    {
36
        $validOpt = [
37
            'options' => [
38
                'default'   => mktime(0, 0, 0, date('m'), 1, date('Y')),
39
                'max_range' => mktime(0, 0, 0, date('m'), 1, date('Y')),
40
                'min_range' => mktime(0, 0, 0, 1, 1, 2001),
41
            ]
42
        ];
43
        $validYM  = filter_var($tCSG->get('ym'), FILTER_VALIDATE_INT, $validOpt);
44
        if (!array_key_exists($validYM, $ymValues)) {
45
            $validYM = mktime(0, 0, 0, date('m'), 1, date('Y'));
46
        }
47
        $tCSG->request->set('ym', $validYM);
48
    }
49
50
    private function buildYMvalues()
51
    {
52
        $temp = [];
53
        for ($counter = date('Y'); $counter >= 2001; $counter--) {
54
            for ($counter2 = 12; $counter2 >= 1; $counter2--) {
55
                $crtDate = mktime(0, 0, 0, $counter2, 1, $counter);
56
                if ($crtDate <= mktime(0, 0, 0, date('m'), 1, date('Y'))) {
57
                    $temp[$crtDate] = strftime('%Y, %m (%B)', $crtDate);
58
                }
59
            }
60
        }
61
        return $temp;
62
    }
63
64
    private function establishValidValue(\Symfony\Component\HttpFoundation\Request $tCSG, $key, $value, $inVlsFltrRls)
65
    {
66
        $validation                      = FILTER_DEFAULT;
67
        $validOpts                       = [];
68
        $validOpts['options']['default'] = $value;
69
        switch ($inVlsFltrRls['validation_filter']) {
70
            case "int":
71
                $inVFR                             = $inVlsFltrRls['validation_options'];
72
                $validOpts['options']['max_range'] = $this->getValidOption($value, $inVFR, 'max_range');
73
                $validOpts['options']['min_range'] = $this->getValidOption($value, $inVFR, 'min_range');
74
                $validation                        = FILTER_VALIDATE_INT;
75
                break;
76
            case "float":
77
                $validOpts['options']['decimal']   = 2;
78
                $validation                        = FILTER_VALIDATE_FLOAT;
79
                break;
80
        }
81
        $validValue = filter_var($tCSG->get($key), $validation, $validOpts);
82
        return $validValue;
83
    }
84
85
    private function getValidOption($value, $inValuesFilterRules, $optionLabel)
86
    {
87
        $valReturn = $inValuesFilterRules[$optionLabel];
88
        if ($valReturn == 'default') {
89
            $valReturn = $value;
90
        }
91
        return $valReturn;
92
    }
93
94
    protected function processFormInputDefaults(\Symfony\Component\HttpFoundation\Request $tCSG, $inVFR, $ymValues)
95
    {
96
        $this->applyYMvalidations($tCSG, $ymValues);
97
        foreach ($inVFR as $key => $value) {
98
            $validValue = trim($tCSG->get($key));
99
            if (array_key_exists('validation_options', $value)) {
100
                $validValue = $this->establishValidValue($tCSG, $key, $value['default'], $value);
101
            }
102
            $tCSG->request->set($key, $validValue);
103
        }
104
    }
105
}
106