Completed
Push — master ( 6266cf...8ff1a9 )
by Lorenzo
02:01
created

RequestHelper::getFileSafe()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 17
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 9
nc 3
nop 2
1
<?php
2
3
namespace Padosoft\Laravel\Request;
4
5
use Illuminate\Http\Request;
6
use Illuminate\Http\UploadedFile;
7
8
/**
9
 * Illuminate\Http\Request helper
10
 * @package Padosoft\Laravel\Request
11
 */
12
class RequestHelper
13
{
14
    /**
15
     * Check if the current request has at least one file
16
     * @return bool
17
     */
18
    public static function currentRequestHasFiles() : bool
19
    {
20
        return self::requestHasFiles(request());
21
    }
22
23
    /**
24
     * Check if the passed request has at least one file
25
     * @param Request $request
26
     * @return bool
27
     */
28
    public static function requestHasFiles(Request $request) : bool
29
    {
30
        return ($request && $request->allFiles() && count($request->allFiles()) > 0);
31
    }
32
33
    /**
34
     * Check if uploaded File in current request is valid and has a valid Mime Type.
35
     * Return true is all ok, otherwise return false.
36
     * @param string $uploadField
37
     * @param array $arrMimeType
38
     * @return bool
39
     */
40
    public static function isValidCurrentRequestUploadFile(string $uploadField, array $arrMimeType = array()) : bool
41
    {
42
        return self::isValidUploadFile($uploadField, $arrMimeType, request());
43
    }
44
45
    /**
46
     * Check if uploaded File is valid and has a valid Mime Type.
47
     * Return true is all ok, otherwise return false.
48
     * @param string $uploadField
49
     * @param array $arrMimeType
50
     * @param Request $request
51
     * @return bool
52
     */
53
    public static function isValidUploadFile(string $uploadField, array $arrMimeType = array(), Request $request) : bool
54
    {
55
        $uploadedFile = self::getFileSafe($uploadField, $request);
56
57
        if (!is_a($uploadedFile, UploadedFile::class)) {
58
            return false;
59
        }
60
61
        return UploadedFileHelper::isValidUploadFile($uploadedFile, $arrMimeType);
62
    }
63
64
    /**
65
     * Return File in Current Request if ok, otherwise return null
66
     * @param string $uploadField
67
     * @return null|UploadedFile
68
     */
69
    public static function getCurrentRequestFileSafe(string $uploadField)
70
    {
71
        return self::getFileSafe($uploadField, request());
72
    }
73
74
    /**
75
     * Return File in passed request if ok, otherwise return null
76
     * @param string $uploadField
77
     * @param Request $request
78
     * @return null|UploadedFile
79
     */
80
    public static function getFileSafe(
81
        string $uploadField,
82
        Request $request
83
    ) {
84
        if (!$request) {
85
            return null;
86
        }
87
88
        $uploadedFile = $request->file($uploadField);
89
90
        //check type because request file method, may returns UploadedFile, array or null
91
        if (!is_a($uploadedFile, UploadedFile::class)) {
92
            return null;
93
        }
94
95
        return $uploadedFile;
96
    }
97
}
98