Scrutinizer GitHub App not installed

We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.

Install GitHub App

Passed
Pull Request — main (#5043)
by Cristian
29:10 queued 14:13
created

Tabs::getTabColumns()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Backpack\CRUD\app\Library\CrudPanel\Traits;
4
5
trait Tabs
6
{
7
    public function enableTabs()
8
    {
9
        $this->setOperationSetting('tabsEnabled', true);
0 ignored issues
show
Bug introduced by
It seems like setOperationSetting() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

9
        $this->/** @scrutinizer ignore-call */ 
10
               setOperationSetting('tabsEnabled', true);
Loading history...
10
        $this->setOperationSetting('tabsType', config('backpack.crud.operations.'.$this->getCurrentOperation().'.tabsType', 'horizontal'));
0 ignored issues
show
Bug introduced by
It seems like getCurrentOperation() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

10
        $this->setOperationSetting('tabsType', config('backpack.crud.operations.'.$this->/** @scrutinizer ignore-call */ getCurrentOperation().'.tabsType', 'horizontal'));
Loading history...
11
12
        return $this->tabsEnabled();
13
    }
14
15
    public function disableTabs()
16
    {
17
        $this->setOperationSetting('tabsEnabled', false);
18
19
        return $this->tabsEnabled();
20
    }
21
22
    /**
23
     * @return bool
24
     */
25
    public function tabsEnabled()
26
    {
27
        return $this->getOperationSetting('tabsEnabled');
0 ignored issues
show
Bug introduced by
It seems like getOperationSetting() must be provided by classes using this trait. How about adding it as abstract method to this trait? ( Ignorable by Annotation )

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

27
        return $this->/** @scrutinizer ignore-call */ getOperationSetting('tabsEnabled');
Loading history...
28
    }
29
30
    /**
31
     * @return bool
32
     */
33
    public function tabsDisabled()
34
    {
35
        return ! $this->tabsEnabled();
36
    }
37
38
    public function setTabsType($type)
39
    {
40
        $this->enableTabs();
41
        $this->setOperationSetting('tabsType', $type);
42
43
        return $this->getOperationSetting('tabsType');
44
    }
45
46
    /**
47
     * @return string
48
     */
49
    public function getTabsType()
50
    {
51
        return $this->getOperationSetting('tabsType');
52
    }
53
54
    public function enableVerticalTabs()
55
    {
56
        return $this->setTabsType('vertical');
57
    }
58
59
    public function disableVerticalTabs()
60
    {
61
        return $this->setTabsType('horizontal');
62
    }
63
64
    public function enableHorizontalTabs()
65
    {
66
        return $this->setTabsType('horizontal');
67
    }
68
69
    public function disableHorizontalTabs()
70
    {
71
        return $this->setTabsType('vertical');
72
    }
73
74
    /**
75
     * @param  string  $label
76
     * @return bool
77
     */
78
    public function tabExists($label)
79
    {
80
        $tabs = $this->getTabs();
81
82
        return in_array($label, $tabs);
83
    }
84
85
    /**
86
     * @return bool|string
87
     */
88
    public function getLastTab()
89
    {
90
        $tabs = $this->getTabs();
91
92
        if (count($tabs)) {
93
            return last($tabs);
94
        }
95
96
        return false;
97
    }
98
99
    /**
100
     * @param $label
101
     * @return bool
102
     */
103
    public function isLastTab($label)
104
    {
105
        return $this->getLastTab() == $label;
106
    }
107
108
    public function getFieldsWithoutATab(): \Illuminate\Support\Collection
109
    {
110
        return $this->getElementsWithoutATab($this->getCurrentFields());
0 ignored issues
show
Bug introduced by
The method getCurrentFields() does not exist on Backpack\CRUD\app\Library\CrudPanel\Traits\Tabs. Did you maybe mean getCurrentFieldsOrColumns()? ( Ignorable by Annotation )

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

110
        return $this->getElementsWithoutATab($this->/** @scrutinizer ignore-call */ getCurrentFields());

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...
111
    }
112
113
    public function getColumnsWithoutATab(): \Illuminate\Support\Collection
114
    {
115
        return $this->getElementsWithoutATab($this->getCurrentColumns());
0 ignored issues
show
Bug introduced by
The method getCurrentColumns() does not exist on Backpack\CRUD\app\Library\CrudPanel\Traits\Tabs. Did you maybe mean getCurrentFieldsOrColumns()? ( Ignorable by Annotation )

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

115
        return $this->getElementsWithoutATab($this->/** @scrutinizer ignore-call */ getCurrentColumns());

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...
116
    }
117
118
    public function getElementsWithoutATab(array $elements): \Illuminate\Support\Collection
119
    {
120
        return collect($elements)->filter(function ($value) {
0 ignored issues
show
Bug introduced by
$elements 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

120
        return collect(/** @scrutinizer ignore-type */ $elements)->filter(function ($value) {
Loading history...
121
            return ! isset($value['tab']);
122
        });
123
    }
124
125
    public function getTabFields($label): \Illuminate\Support\Collection
126
    {
127
        return $this->getTabElements($label, $this->getCurrentFields());
128
    }
129
130
    public function getTabColumns(string $label): \Illuminate\Support\Collection
131
    {
132
        return $this->getTabElements($label, $this->getCurrentColumns());
133
    }
134
135
    public function getTabElements(string $label, array $elements): \Illuminate\Support\Collection
136
    {
137
        if ($this->tabExists($label)) {
138
            return collect($elements)->filter(function ($value) use ($label) {
0 ignored issues
show
Bug introduced by
$elements 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

138
            return collect(/** @scrutinizer ignore-type */ $elements)->filter(function ($value) use ($label) {
Loading history...
139
                return isset($value['tab']) && $value['tab'] == $label;
140
            });
141
        }
142
143
        return collect([]);
0 ignored issues
show
Bug introduced by
array() 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

143
        return collect(/** @scrutinizer ignore-type */ []);
Loading history...
144
    }
145
146
    public function getTabs(): array
147
    {
148
        $tabs = [];
149
150
        collect($this->getCurrentFieldsOrColumns())
0 ignored issues
show
Bug introduced by
$this->getCurrentFieldsOrColumns() 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

150
        collect(/** @scrutinizer ignore-type */ $this->getCurrentFieldsOrColumns())
Loading history...
151
            ->filter(function ($value) {
152
                return isset($value['tab']);
153
            })
154
            ->each(function ($value) use (&$tabs) {
155
                if (! in_array($value['tab'], $tabs)) {
156
                    $tabs[] = $value['tab'];
157
                }
158
            });
159
160
        return $tabs;
161
    }
162
163
    public function getCurrentFieldsOrColumns(): array
164
    {
165
        return $this->getCurrentOperation() === 'show'
166
            ? $this->getCurrentColumns()
167
            : $this->getCurrentFields();
168
    }
169
}
170