Passed
Push — devel-3.0 ( 4622e9...e92637 )
by Rubén
03:18
created

PluginGrid::getDisableAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 14
rs 9.9
c 0
b 0
f 0
1
<?php
2
/**
3
 * sysPass
4
 *
5
 * @author    nuxsmin
6
 * @link      https://syspass.org
7
 * @copyright 2012-2018, Rubén Domínguez nuxsmin@$syspass.org
8
 *
9
 * This file is part of sysPass.
10
 *
11
 * sysPass is free software: you can redistribute it and/or modify
12
 * it under the terms of the GNU General Public License as published by
13
 * the Free Software Foundation, either version 3 of the License, or
14
 * (at your option) any later version.
15
 *
16
 * sysPass is distributed in the hope that it will be useful,
17
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19
 * GNU General Public License for more details.
20
 *
21
 * You should have received a copy of the GNU General Public License
22
 *  along with sysPass.  If not, see <http://www.gnu.org/licenses/>.
23
 */
24
25
namespace SP\Modules\Web\Controllers\Helpers\Grid;
26
27
28
use SP\Core\Acl\Acl;
29
use SP\Core\Acl\ActionsInterface;
30
use SP\Html\DataGrid\DataGridAction;
31
use SP\Html\DataGrid\DataGridActionSearch;
32
use SP\Html\DataGrid\DataGridActionType;
33
use SP\Html\DataGrid\DataGridData;
34
use SP\Html\DataGrid\DataGridHeader;
35
use SP\Html\DataGrid\DataGridInterface;
36
use SP\Html\DataGrid\DataGridTab;
37
use SP\Storage\Database\QueryResult;
38
39
/**
40
 * Class PluginGrid
41
 *
42
 * @package SP\Modules\Web\Controllers\Helpers\Grid
43
 */
44
final class PluginGrid extends GridBase
45
{
46
    /**
47
     * @var QueryResult
48
     */
49
    private $queryResult;
50
51
    /**
52
     * @param QueryResult $queryResult
53
     *
54
     * @return DataGridInterface
55
     */
56
    public function getGrid(QueryResult $queryResult): DataGridInterface
57
    {
58
        $this->queryResult = $queryResult;
59
60
        $grid = $this->getGridLayout();
61
62
        $searchAction = $this->getSearchAction();
63
64
        $grid->setDataActions($this->getSearchAction());
65
        $grid->setPager($this->getPager($searchAction));
66
67
        $grid->setDataActions($this->getViewAction());
68
        $grid->setDataActions($this->getEnableAction());
69
        $grid->setDataActions($this->getDisableAction());
70
        $grid->setDataActions($this->getResetAction());
71
72
        $grid->setTime(round(getElapsedTime($this->queryTimeStart), 5));
0 ignored issues
show
Bug introduced by
round(getElapsedTime($this->queryTimeStart), 5) of type double is incompatible with the type integer expected by parameter $time of SP\Html\DataGrid\DataGridBase::setTime(). ( Ignorable by Annotation )

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

72
        $grid->setTime(/** @scrutinizer ignore-type */ round(getElapsedTime($this->queryTimeStart), 5));
Loading history...
73
74
        return $grid;
75
    }
76
77
    /**
78
     * @return DataGridInterface
79
     */
80
    protected function getGridLayout(): DataGridInterface
81
    {
82
        // Grid
83
        $gridTab = new DataGridTab($this->view->getTheme());
84
        $gridTab->setId('tblPlugins');
85
        $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
86
        $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
87
        $gridTab->setHeader($this->getHeader());
88
        $gridTab->setData($this->getData());
89
        $gridTab->setTitle(__('Plugins'));
90
91
        return $gridTab;
92
    }
93
94
    /**
95
     * @return DataGridHeader
96
     */
97
    protected function getHeader(): DataGridHeader
98
    {
99
        // Grid Header
100
        $gridHeader = new DataGridHeader();
101
        $gridHeader->addHeader(__('Plugin'));
102
        $gridHeader->addHeader(__('Estado'));
103
104
        return $gridHeader;
105
    }
106
107
    /**
108
     * @return DataGridData
109
     */
110
    protected function getData(): DataGridData
111
    {
112
        // Grid Data
113
        $gridData = new DataGridData();
114
        $gridData->setDataRowSourceId('id');
115
        $gridData->addDataRowSource('name');
116
        $gridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconEnabled());
117
        $gridData->addDataRowSourceWithIcon('enabled', $this->icons->getIconDisabled(), 0);
118
        $gridData->addDataRowSourceWithIcon('available', $this->icons->getIconDelete()->setTitle(__('No disponible')), 0);
119
        $gridData->setData($this->queryResult);
120
121
        return $gridData;
122
    }
123
124
    /**
125
     * @return DataGridActionSearch
126
     */
127
    private function getSearchAction()
128
    {
129
        // Grid Actions
130
        $gridActionSearch = new DataGridActionSearch();
131
        $gridActionSearch->setId(ActionsInterface::PLUGIN_SEARCH);
132
        $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
133
        $gridActionSearch->setName('frmSearchPlugin');
134
        $gridActionSearch->setTitle(__('Buscar Plugin'));
135
        $gridActionSearch->setOnSubmitFunction('appMgmt/search');
136
        $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_SEARCH));
137
138
        return $gridActionSearch;
139
    }
140
141
    /**
142
     * @return DataGridAction
143
     */
144
    private function getViewAction()
145
    {
146
        $gridAction = new DataGridAction();
147
        $gridAction->setId(ActionsInterface::PLUGIN_VIEW);
148
        $gridAction->setType(DataGridActionType::VIEW_ITEM);
149
        $gridAction->setName(__('Ver Plugin'));
150
        $gridAction->setTitle(__('Ver Plugin'));
151
        $gridAction->setIcon($this->icons->getIconView());
152
        $gridAction->setOnClickFunction('appMgmt/show');
153
        $gridAction->setFilterRowSource('available', 0);
154
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_VIEW));
155
156
        return $gridAction;
157
    }
158
159
    /**
160
     * @return DataGridAction
161
     */
162
    private function getEnableAction()
163
    {
164
        $gridAction = new DataGridAction();
165
        $gridAction->setId(ActionsInterface::PLUGIN_ENABLE);
166
        $gridAction->setName(__('Habilitar'));
167
        $gridAction->setTitle(__('Habilitar'));
168
        $gridAction->setIcon($this->icons->getIconEnabled());
169
        $gridAction->setOnClickFunction('plugin/toggle');
170
        $gridAction->setFilterRowSource('enabled');
171
        $gridAction->setFilterRowSource('available', 0);
172
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_ENABLE));
173
        $gridAction->addData('action-method', 'get');
174
175
        return $gridAction;
176
    }
177
178
    /**
179
     * @return DataGridAction
180
     */
181
    private function getDisableAction()
182
    {
183
        $gridAction = new DataGridAction();
184
        $gridAction->setId(ActionsInterface::PLUGIN_DISABLE);
185
        $gridAction->setName(__('Deshabilitar'));
186
        $gridAction->setTitle(__('Deshabilitar'));
187
        $gridAction->setIcon($this->icons->getIconDisabled());
188
        $gridAction->setOnClickFunction('plugin/toggle');
189
        $gridAction->setFilterRowSource('enabled', 0);
190
        $gridAction->setFilterRowSource('available', 0);
191
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_DISABLE));
192
        $gridAction->addData('action-method', 'get');
193
194
        return $gridAction;
195
    }
196
197
    /**
198
     * @return DataGridAction
199
     */
200
    private function getResetAction()
201
    {
202
        $gridAction = new DataGridAction();
203
        $gridAction->setId(ActionsInterface::PLUGIN_RESET);
204
        $gridAction->setName(__('Restablecer Datos'));
205
        $gridAction->setTitle(__('Restablecer Datos'));
206
        $gridAction->setIcon($this->icons->getIconRefresh());
207
        $gridAction->setOnClickFunction('plugin/reset');
208
        $gridAction->setFilterRowSource('available', 0);
209
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PLUGIN_RESET));
210
        $gridAction->addData('action-method', 'get');
211
212
        return $gridAction;
213
    }
214
}