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
unknown
14:30 queued 04:03
created

Tabs::getTabsType()   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 0
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
    /**
109
     * @deprecated Do not use this method as it will be removed in future versions!
110
     * Instead, use $this->getElementsWithoutATab($this->getCurrentFields())
111
     *
112
     * @return \Illuminate\Support\Collection
113
     */
114
    public function getFieldsWithoutATab()
115
    {
116
        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

116
        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...
117
    }
118
119
    /**
120
     * @return \Illuminate\Support\Collection
121
     */
122
    public function getElementsWithoutATab(array $elements)
123
    {
124
        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

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

142
        return $this->getTabElements($label, $this->/** @scrutinizer ignore-call */ columns());
Loading history...
143
    }
144
145
    /**
146
     * @return array|\Illuminate\Support\Collection
147
     */
148
    public function getTabElements(string $label, array $elements)
149
    {
150
        if ($this->tabExists($label)) {
151
            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

151
            return collect(/** @scrutinizer ignore-type */ $elements)->filter(function ($value) use ($label) {
Loading history...
152
                return isset($value['tab']) && $value['tab'] == $label;
153
            });
154
        }
155
156
        return [];
157
    }
158
159
    public function getTabs(): array
160
    {
161
        $tabs = [];
162
163
        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

163
        collect(/** @scrutinizer ignore-type */ $this->getCurrentFieldsOrColumns())
Loading history...
164
            ->filter(function ($value) {
165
                return isset($value['tab']);
166
            })
167
            ->each(function ($value) use (&$tabs) {
168
                if (! in_array($value['tab'], $tabs)) {
169
                    $tabs[] = $value['tab'];
170
                }
171
            });
172
173
        return $tabs;
174
    }
175
176
    public function getCurrentFieldsOrColumns(): array
177
    {
178
        return $this->getCurrentOperation() === 'show'
179
            ? $this->columns()
180
            : $this->getCurrentFields();
181
    }
182
}
183