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.

Issues (389)

Branch: master

src/Display/TableColumn.php (6 issues)

1
<?php
2
3
namespace SleepingOwl\Admin\Display;
4
5
use Closure;
6
use Illuminate\Database\Eloquent\Builder;
7
use Illuminate\Database\Eloquent\Model;
8
use InvalidArgumentException;
9
use KodiComponents\Support\HtmlAttributes;
10
use SleepingOwl\Admin\Contracts\Display\ColumnInterface;
11
use SleepingOwl\Admin\Contracts\Display\OrderByClauseInterface;
12
use SleepingOwl\Admin\Contracts\Display\TableHeaderColumnInterface;
13
use SleepingOwl\Admin\Contracts\ModelConfigurationInterface;
14
use SleepingOwl\Admin\Contracts\WithModelInterface;
15
use SleepingOwl\Admin\Display\Column\OrderByClause;
16
use SleepingOwl\Admin\Traits\Assets;
17
use SleepingOwl\Admin\Traits\Renderable;
18
19
abstract class TableColumn implements ColumnInterface
20
{
21
    use HtmlAttributes, Assets, Renderable;
0 ignored issues
show
The trait SleepingOwl\Admin\Traits\Renderable requires the property $view which is not provided by SleepingOwl\Admin\Display\TableColumn.
Loading history...
22
23
    /**
24
     * @var \Closure
25
     */
26
    protected $searchCallback = null;
27
28
    /**
29
     * @var \Closure
30
     */
31
    protected $orderCallback = null;
32
33
    /**
34
     * @var \Closure
35
     */
36
    protected $filterCallback = null;
37
38
    /**
39
     * @var null
40
     */
41
    protected $columMetaClass = null;
42
    /**
43
     * Column header.
44
     *
45
     * @var TableHeaderColumnInterface
46
     */
47
    protected $header;
48
49
    /**
50
     * Model instance currently rendering.
51
     *
52
     * @var Model
53
     */
54
    protected $model;
55
56
    /**
57
     * Column appendant.
58
     *
59
     * @var ColumnInterface
60
     */
61
    protected $append;
62
63
    /**
64
     * Column width.
65
     *
66
     * @var string
67
     */
68
    protected $width = null;
69
70
    /**
71
     * @var OrderByClauseInterface
72
     */
73
    protected $orderByClause;
74
75
    /**
76
     * @var bool
77
     */
78 45
    protected $visible = true;
79
80 45
    /**
81
     * @var bool
82 45
     */
83 11
    protected $isSearchable = false;
84 11
85
    /**
86 45
     * TableColumn constructor.
87 45
     *
88
     * @param string|null $label
89
     */
90
    public function __construct($label = null)
91
    {
92 2
        $this->header = app(TableHeaderColumnInterface::class);
93
94 2
        if (! is_null($label)) {
95 2
            $this->setLabel($label);
96
        }
97
98
        $this->initializePackage();
99
    }
100
101
    /**
102
     * Initialize column.
103
     */
104
    public function initialize()
105
    {
106
        $this->includePackage();
107
    }
108
109
    /**
110
     * @param $columnMetaClass
111
     * @return $this
112
     */
113
    public function setMetaData($columnMetaClass)
114
    {
115
        $this->columMetaClass = $columnMetaClass;
116
117
        return $this;
118
    }
119
120
    /**
121
     * @return mixed
122
     */
123
    public function getMetaData()
124
    {
125
        return $this->columMetaClass
126
            ? app()->make($this->columMetaClass)
127
            : false;
128
    }
129
130
    /**
131
     * @param \Closure $callable
132
     * @return $this
133
     */
134
    public function setOrderCallback(Closure $callable)
135
    {
136
        $this->orderCallback = $callable;
137
138
        return $this->setOrderable($callable);
139
    }
140
141
    /**
142
     * @param \Closure $callable
143
     * @return $this
144
     */
145
    public function setSearchCallback(Closure $callable)
146
    {
147
        $this->searchCallback = $callable;
148
149
        return $this;
150
    }
151
152
    /**
153
     * @param \Closure $callable
154
     * @return $this
155
     */
156
    public function setFilterCallback(Closure $callable)
157
    {
158
        $this->filterCallback = $callable;
159
160
        return $this;
161
    }
162
163
    /**
164
     * @return \Closure
165
     */
166
    public function getOrderCallback()
167
    {
168
        return $this->orderCallback;
169
    }
170
171
    /**
172
     * @return \Closure
173
     */
174
    public function getSearchCallback()
175
    {
176
        return $this->searchCallback;
177
    }
178 24
179
    /**
180 24
     * @return \Closure
181
     */
182
    public function getFilterCallback()
183
    {
184
        return $this->filterCallback;
185
    }
186 1
187
    /**
188 1
     * @return TableHeaderColumnInterface
189
     */
190
    public function getHeader()
191
    {
192
        return $this->header;
193
    }
194
195
    /**
196 1
     * @return int|string
197
     */
198 1
    public function getWidth()
199 1
    {
200 1
        return $this->width;
201
    }
202 1
203
    /**
204 1
     * @param int|string $width
205
     *
206
     * @return $this
207
     */
208
    public function setWidth($width)
209
    {
210 16
        if (is_int($width)) {
211
            $width = $width.'px';
212 16
        }
213
214
        $this->width = $width;
215
216
        return $this;
217
    }
218
219
    /**
220 3
     * @param $isSearchable
221
     *
222 3
     * @return TableColumn
223
     */
224 3
    public function setSearchable($isSearchable)
225
    {
226
        $this->isSearchable = $isSearchable;
227
228
        return $this;
229
    }
230 15
231
    /**
232 15
     * @param bool $visible
233
     * @return $this
234
     */
235
    public function setVisible($visible)
236
    {
237
        $this->visible = $visible;
238
239
        return $this;
240 13
    }
241
242 13
    /**
243 13
     * @return ColumnInterface
244
     */
245 13
    public function getAppends()
246 1
    {
247 1
        return $this->append;
248
    }
249 13
250
    /**
251
     * @param ColumnInterface $append
252
     *
253
     * @return $this
254
     */
255
    public function append(ColumnInterface $append)
256
    {
257
        $this->append = $append;
258
259 14
        return $this;
260
    }
261 14
262
    /**
263 14
     * @return Model $model
264
     */
265
    public function getModel()
266
    {
267
        return $this->model;
268
    }
269
270
    /**
271 24
     * @param Model $model
272
     *
273 24
     * @return $this
274 17
     */
275 17
    public function setModel(Model $model)
276
    {
277 24
        $this->model = $model;
278 2
        $append = $this->getAppends();
279
280
        if ($append instanceof WithModelInterface) {
0 ignored issues
show
$append is always a sub-type of SleepingOwl\Admin\Contracts\WithModelInterface.
Loading history...
281 22
            $append->setModel($model);
282 22
        }
283
284 22
        return $this;
285
    }
286
287
    /**
288
     * Set column header label.
289
     *
290 4
     * @param string $title
291
     *
292 4
     * @return $this
293
     */
294
    public function setLabel($title)
295
    {
296
        $this->getHeader()->setTitle($title);
297
298
        return $this;
299 22
    }
300
301 22
    /**
302
     * @param OrderByClauseInterface|bool|string|\Closure $orderable
303
     * @return $this
304
     */
305
    public function setOrderable($orderable)
306
    {
307
        if ($orderable instanceof Closure || is_string($orderable)) {
308
            $orderable = new OrderByClause($orderable);
0 ignored issues
show
It seems like $orderable can also be of type Closure; however, parameter $name of SleepingOwl\Admin\Displa...ByClause::__construct() does only seem to accept Mockery\Matcher\Closure|string, maybe add an additional type check? ( Ignorable by Annotation )

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

308
            $orderable = new OrderByClause(/** @scrutinizer ignore-type */ $orderable);
Loading history...
309
        }
310 1
311
        if ($orderable !== false && ! $orderable instanceof OrderByClauseInterface) {
312 1
            throw new InvalidArgumentException('Argument must be instance of SleepingOwl\Admin\Contracts\Display\OrderByClauseInterface interface');
313
        }
314
315
        $this->orderByClause = $orderable;
0 ignored issues
show
Documentation Bug introduced by
It seems like $orderable can also be of type boolean. However, the property $orderByClause is declared as type SleepingOwl\Admin\Contra...\OrderByClauseInterface. Maybe add an additional type check?

Our type inference engine has found a suspicous assignment of a value to a property. This check raises an issue when a value that can be of a mixed type is assigned to a property that is type hinted more strictly.

For example, imagine you have a variable $accountId that can either hold an Id object or false (if there is no account id yet). Your code now assigns that value to the id property of an instance of the Account class. This class holds a proper account, so the id value must no longer be false.

Either this assignment is in error or a type check should be added for that assignment.

class Id
{
    public $id;

    public function __construct($id)
    {
        $this->id = $id;
    }

}

class Account
{
    /** @var  Id $id */
    public $id;
}

$account_id = false;

if (starsAreRight()) {
    $account_id = new Id(42);
}

$account = new Account();
if ($account instanceof Id)
{
    $account->id = $account_id;
}
Loading history...
316 1
        $this->getHeader()->setOrderable($this->isOrderable());
0 ignored issues
show
The method setOrderable() does not exist on SleepingOwl\Admin\Contra...leHeaderColumnInterface. Since it exists in all sub-types, consider adding an abstract or default implementation to SleepingOwl\Admin\Contra...leHeaderColumnInterface. ( Ignorable by Annotation )

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

316
        $this->getHeader()->/** @scrutinizer ignore-call */ setOrderable($this->isOrderable());
Loading history...
317
318 1
        return $this;
319
    }
320
321
    /**
322
     * @return OrderByClauseInterface
323
     */
324
    public function getOrderByClause()
325
    {
326 5
        return $this->orderByClause;
327
    }
328
329 5
    /**
330 5
     * Check if column is orderable.
331 5
     * @return bool
332 5
     */
333
    public function isOrderable()
334
    {
335
        return $this->orderByClause instanceof OrderByClauseInterface;
336
    }
337
338
    /**
339
     * Check if column is visible.
340
     * @return bool
341
     */
342
    public function isVisible()
343
    {
344
        return $this->visible;
345
    }
346
347
    /**
348
     * Check if column is Searchable.
349
     * @return bool
350
     */
351
    public function isSearchable()
352
    {
353
        return $this->isSearchable;
354
    }
355
356
    /**
357
     * @param Builder $query
358
     * @param string $direction
359
     * @return $this
360
     * @deprecated
361
     */
362
    public function orderBy(Builder $query, $direction)
363
    {
364
        if (! $this->isOrderable()) {
365
            throw new InvalidArgumentException('Argument must be instance of SleepingOwl\Admin\Contracts\Display\OrderByClauseInterface interface');
366
        }
367
368
        $this->orderByClause->modifyQuery($query, $direction);
369
370
        return $this;
371
    }
372
373
    /**
374
     * Get the instance as an array.
375
     *
376
     * @return array
377
     */
378
    public function toArray()
379
    {
380
        return [
381
            'attributes' => $this->htmlAttributesToString(),
382
            'model' => $this->getModel(),
383
            'append' => $this->getAppends(),
384
        ];
385
    }
386
387
    /**
388
     * Get related model configuration.
389
     * @return ModelConfigurationInterface
390
     */
391
    protected function getModelConfiguration()
392
    {
393
        return app('sleeping_owl')->getModel(
0 ignored issues
show
The method getModel() does not exist on Illuminate\Contracts\Foundation\Application. ( Ignorable by Annotation )

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

393
        return app('sleeping_owl')->/** @scrutinizer ignore-call */ getModel(

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
394
            $this->getModel()
395
        );
396
    }
397
}
398