GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 4f0198...17f4cd )
by Mehdi
12:14
created

RequestFilter::requestAlter()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 11
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 5
dl 0
loc 11
rs 10
c 0
b 0
f 0
cc 3
nc 4
nop 5
1
<?php
2
3
namespace eloquentFilter\QueryFilter\Core\FilterBuilder;
4
5
use eloquentFilter\QueryFilter\Core\HelperFilter;
6
use Illuminate\Support\Arr;
7
8
/**
9
 *
10
 */
11
class RequestFilter
12
{
13
    /**
14
     * @var
15
     */
16
    protected $builder;
17
18
    /**
19
     * @var
20
     */
21
    protected $request;
22
23
    /**
24
     * @var
25
     */
26
    protected $accept_request;
27
28
    /**
29
     * @var
30
     */
31
    protected $ignore_request;
32
33
    /**
34
     * @param $request
35
     */
36
    public function __construct($request)
37
    {
38
        $this->request = $request;
39
    }
40
41
    /**
42
     * @return void
43
     */
44
    public function handelSerializeRequestFilter($request)
45
    {
46
        $this->setRequest($request);
47
    }
48
49
    /**
50
     * @param array|null $request
51
     */
52
    public function setRequest(?array $request): void
53
    {
54
        if (!empty($request['page'])) {
55
            unset($request['page']);
56
        }
57
58
        $request_key_filter = config('eloquentFilter.request_filter_key');
59
60
        if (!empty($request_key_filter)) {
61
            $request = (!empty($request[$request_key_filter])) ? $request[$request_key_filter] : [];
62
        }
63
64
        $request = array_filter($request, function ($value) {
65
            return !is_null($value) && $value !== '';
66
        });
67
68
        foreach ($request as $key => $item) {
69
            if (is_array($item)) {
70
                if (array_key_exists('start', $item) && array_key_exists('end', $item)) {
71
                    if (!isset($item['start']) && !isset($item['end'])) {
72
                        unset($request[$key]);
73
                    }
74
                }
75
            }
76
        }
77
78
        $this->request = $request;
79
    }
80
81
    /**
82
     * @return array|null
83
     */
84
    public function getRequest(): ?array
85
    {
86
        return $this->request;
87
    }
88
89
    /**
90
     * @param array|null $ignore_request
91
     * @param array|null $accept_request
92
     * @param            $builder_model
93
     *
94
     * @return array|null
95
     */
96
    public function setFilterRequests(array $ignore_request = null, array $accept_request = null, $builder_model): ?array
97
    {
98
        if (!empty($this->getRequest())) {
99
            if (!empty(config('eloquentFilter.ignore_request'))) {
100
                $ignore_request = array_merge(config('eloquentFilter.ignore_request'), (array)$ignore_request);
101
            }
102
            if (!empty($ignore_request)) {
103
                $this->updateRequestByIgnoreRequest($ignore_request);
104
            }
105
            if (!empty($accept_request)) {
106
                $this->setAcceptRequest($accept_request);
107
                $this->updateRequestByAcceptRequest($this->getAcceptRequest());
108
            }
109
110
            foreach ($this->getRequest() as $name => $value) {
111
                if (is_array($value) && method_exists($builder_model, $name)) {
112
                    if (HelperFilter::isAssoc($value)) {
113
                        unset($this->request[$name]);
114
                        $out = HelperFilter::convertRelationArrayRequestToStr($name, $value);
115
                        $this->setRequest(array_merge($out, $this->request));
116
                    }
117
                }
118
            }
119
        }
120
121
        return $this->getRequest();
122
    }
123
124
    /**
125
     * @param $alias_list_filter
126
     * @return void
127
     */
128
    public function makeAliasRequestFilter($alias_list_filter)
129
    {
130
        if (empty($this->getRequest())) {
131
            return;
132
        }
133
        $req = $this->getRequest();
134
135
        $req = collect($req)->mapWithKeys(function ($item, $key) use ($alias_list_filter) {
0 ignored issues
show
Bug introduced by
$req of type array is incompatible with the type Illuminate\Contracts\Support\Arrayable expected by parameter $value of collect(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

135
        $req = collect(/** @scrutinizer ignore-type */ $req)->mapWithKeys(function ($item, $key) use ($alias_list_filter) {
Loading history...
136
            $key1 = array_search($key, $alias_list_filter);
137
138
            if (!empty($alias_list_filter[$key1])) {
139
                $req[$key1] = $this->getRequest()[$key];
0 ignored issues
show
Comprehensibility Best Practice introduced by
$req was never initialized. Although not strictly required by PHP, it is generally a good practice to add $req = array(); before regardless.
Loading history...
140
            } else {
141
                $req[$key] = $item;
142
            }
143
144
            return $req;
145
        })->toArray();
146
147
        if (!empty($req)) {
148
            $this->setRequest($req);
149
        }
150
    }
151
152
    /**
153
     * @param $ignore_request
154
     */
155
    private function updateRequestByIgnoreRequest($ignore_request)
156
    {
157
        $this->setIgnoreRequest($ignore_request);
158
        $data = Arr::except($this->getRequest(), $ignore_request);
159
        $this->setRequest($data);
160
    }
161
162
    /**
163
     * @param $accept_request
164
     */
165
    private function updateRequestByAcceptRequest($accept_request)
166
    {
167
        $accept_request_new = HelperFilter::array_slice_keys($this->getRequest(), $accept_request);
168
        if (!empty($accept_request_new)) {
169
            $this->setAcceptRequest(HelperFilter::array_slice_keys($this->getRequest(), $accept_request));
170
            $this->setRequest($this->getAcceptRequest());
171
        } else {
172
            $this->setRequest([]);
173
        }
174
    }
175
176
    /**
177
     * @param array|null $ignore_request
178
     * @param array|null $accept_request
179
     * @param $serializeRequestFilter
180
     * @param $alias_list_filter
181
     * @return void
182
     */
183
    public function requestAlter(?array $ignore_request, ?array $accept_request, $serializeRequestFilter, $alias_list_filter,$model): void
184
    {
185
        if (!empty($serializeRequestFilter)) {
186
            $this->handelSerializeRequestFilter($serializeRequestFilter);
187
        }
188
189
        if ($alias_list_filter) {
190
            $this->makeAliasRequestFilter($alias_list_filter);
191
        }
192
193
        $this->setFilterRequests($ignore_request, $accept_request,$model);
194
    }
195
196
    /**
197
     * @param array $ignore_request
198
     */
199
    private function setIgnoreRequest(array $ignore_request): void
200
    {
201
        $this->ignore_request = $ignore_request;
202
    }
203
204
    /**
205
     * @param array $accept_request
206
     */
207
    private function setAcceptRequest(array $accept_request): void
208
    {
209
        if (!empty($accept_request)) {
210
            $this->accept_request = $accept_request;
211
        }
212
    }
213
214
    /**
215
     * @return mixed
216
     */
217
    public function getAcceptRequest()
218
    {
219
        return $this->accept_request;
220
    }
221
222
223
    /**
224
     * @return mixed
225
     */
226
    public function getIgnoreRequest()
227
    {
228
        return $this->ignore_request;
229
    }
230
}
231