Completed
Push — master ( e43f1a...57db71 )
by Arman
26s queued 12s
created

File::fileExtension()   A

Complexity

Conditions 5
Paths 5

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 8
c 1
b 0
f 0
dl 0
loc 12
rs 9.6111
cc 5
nc 5
nop 3
1
<?php
2
3
/**
4
 * Quantum PHP Framework
5
 *
6
 * An open source software development framework for PHP
7
 *
8
 * @package Quantum
9
 * @author Arman Ag. <[email protected]>
10
 * @copyright Copyright (c) 2018 Softberg LLC (https://softberg.org)
11
 * @link http://quantum.softberg.org/
12
 * @since 2.4.0
13
 */
14
15
namespace Quantum\Libraries\Validation\Rules;
16
17
use Quantum\Libraries\Upload\File as FileUpload;
18
19
/**
20
 * Trait File
21
 * @package Quantum\Libraries\Validation\Rules
22
 */
23
trait File
24
{
25
26
    /**
27
     * Adds validation Error
28
     * @param string $field
29
     * @param string $rule
30
     * @param mixed|null $param
31
     */
32
    abstract protected function addError(string $field, string $rule, $param = null);
33
34
    /**
35
     * Validates file size
36
     * @param string $field
37
     * @param object $value
38
     * @param mixed $param
39
     */
40
    protected function fileSize(string $field, object $value, $param)
41
    {
42
        if (!empty($value)) {
43
            $file = new FileUpload($value);
44
45
            if (!is_array($param)) {
46
                if ($file->getSize() > $param) {
47
                    $this->addError($field, 'fileSize', $param);
48
                }
49
            } else {
50
                if ($file->getSize() < $param[0] || $file->getSize() > $param[1]) {
51
                    $this->addError($field, 'fileSize', $param);
52
                }
53
            }
54
        }
55
    }
56
57
    /**
58
     * Validates file mime type
59
     * @param string $field
60
     * @param object $value
61
     * @param mixed $param
62
     */
63
    protected function fileMimeType(string $field, object $value, $param)
64
    {
65
        if (!empty($value)) {
66
            $file = new FileUpload($value);
67
68
            if (!is_array($param)) {
69
                if ($file->getMimetype() != $param) {
70
                    $this->addError($field, 'fileMimeType', $param);
71
                }
72
            } else {
73
                if (!in_array($file->getMimetype(), $param)) {
74
                    $this->addError($field, 'fileMimeType', $param);
75
                }
76
            }
77
        }
78
    }
79
80
    /**
81
     * Validates file extension
82
     * @param string $field
83
     * @param object $value
84
     * @param mixed $param
85
     */
86
    protected function fileExtension(string $field, object $value, $param)
87
    {
88
        if (!empty($value)) {
89
            $file = new FileUpload($value);
90
91
            if (!is_array($param)) {
92
                if ($file->getExtension() != $param) {
93
                    $this->addError($field, 'fileExtension', $param);
94
                }
95
            } else {
96
                if (!in_array($file->getExtension(), $param)) {
97
                    $this->addError($field, 'fileExtension', $param);
98
                }
99
            }
100
        }
101
    }
102
103
    /**
104
     * Validates image dimensions
105
     * @param string $field
106
     * @param object $value
107
     * @param array $param
108
     */
109
    protected function imageDimensions(string $field, object $value, array $param)
110
    {
111
        if (!empty($value)) {
112
            $file = new FileUpload($value);
113
114
            $dimensions = $file->getDimensions();
115
116
            if (!empty($dimensions)) {
117
                if ($dimensions['width'] != $param[0] || $dimensions['height'] != $param[1]) {
118
                    $this->addError($field, 'imageDimensions', $param);
119
                }
120
            }
121
        }
122
    }
123
124
}