Passed
Push — devel-3.0 ( 2fc71e...3e43d6 )
by Rubén
03:39
created

ItemPresetGrid::getCreatePrivateAction()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 16
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
use SP\Core\Acl\Acl;
28
use SP\Core\Acl\ActionsInterface;
29
use SP\Html\DataGrid\DataGridAction;
30
use SP\Html\DataGrid\DataGridActionSearch;
31
use SP\Html\DataGrid\DataGridActionType;
32
use SP\Html\DataGrid\DataGridData;
33
use SP\Html\DataGrid\DataGridHeader;
34
use SP\Html\DataGrid\DataGridInterface;
35
use SP\Html\DataGrid\DataGridTab;
36
use SP\Storage\Database\QueryResult;
37
38
/**
39
 * Class AccountDefaultPermissionGrid
40
 *
41
 * @package SP\Modules\Web\Controllers\Helpers\Grid
42
 */
43
final class ItemPresetGrid extends GridBase
44
{
45
    /**
46
     * @var QueryResult
47
     */
48
    private $queryResult;
49
50
    /**
51
     * @param QueryResult $queryResult
52
     *
53
     * @return DataGridInterface
54
     */
55
    public function getGrid(QueryResult $queryResult): DataGridInterface
56
    {
57
        $this->queryResult = $queryResult;
58
59
        $grid = $this->getGridLayout();
60
61
        $searchAction = $this->getSearchAction();
62
63
        $grid->setDataActions($this->getSearchAction());
64
        $grid->setPager($this->getPager($searchAction));
65
66
        $grid->setDataActions($this->getCreatePermissionAction(), true);
67
        $grid->setDataActions($this->getCreatePrivateAction(), true);
68
        $grid->setDataActions($this->getEditAction());
69
        $grid->setDataActions($this->getDeleteAction());
70
        $grid->setDataActions($this->getDeleteAction()->setTitle(__('Eliminar Seleccionados')), true);
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('tblItemPreset');
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(__('Valores Predeterminados'));
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(__('Tipo'));
102
        $gridHeader->addHeader(__('Usuario'));
103
        $gridHeader->addHeader(__('Grupo'));
104
        $gridHeader->addHeader(__('Perfil'));
105
        $gridHeader->addHeader(__('Prioridad'));
106
        $gridHeader->addHeader(__('Forzado'));
107
108
        return $gridHeader;
109
    }
110
111
    /**
112
     * @return DataGridData
113
     */
114
    protected function getData(): DataGridData
115
    {
116
        // Grid Data
117
        $gridData = new DataGridData();
118
        $gridData->setDataRowSourceId('id');
119
        $gridData->addDataRowSource('type');
120
        $gridData->addDataRowSource('userName');
121
        $gridData->addDataRowSource('userGroupName');
122
        $gridData->addDataRowSource('userProfileName');
123
        $gridData->addDataRowSource('priority');
124
        $gridData->addDataRowSourceWithIcon('fixed', $this->icons->getIconEnabled());
125
        $gridData->setData($this->queryResult);
126
127
        return $gridData;
128
    }
129
130
    /**
131
     * @return DataGridActionSearch
132
     */
133
    private function getSearchAction()
134
    {
135
        // Grid Actions
136
        $gridActionSearch = new DataGridActionSearch();
137
        $gridActionSearch->setId(ActionsInterface::ITEMPRESET_SEARCH);
138
        $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
139
        $gridActionSearch->setName('frmSearchItemPreset');
140
        $gridActionSearch->setTitle(__('Buscar Valor'));
141
        $gridActionSearch->setOnSubmitFunction('appMgmt/search');
142
        $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_SEARCH));
143
144
        return $gridActionSearch;
145
    }
146
147
    /**
148
     * @return DataGridAction
149
     */
150
    private function getCreatePermissionAction()
151
    {
152
        $gridAction = new DataGridAction();
153
        $gridAction->setId(ActionsInterface::ITEMPRESET_CREATE);
154
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
155
        $gridAction->setName(__('Nuevo Valor de Permiso'));
156
        $gridAction->setTitle(__('Nuevo Valor de Permiso'));
157
158
        $icon = clone $this->icons->getIconAdd();
159
160
        $gridAction->setIcon($icon->setIcon('add_circle'));
161
        $gridAction->setSkip(true);
162
        $gridAction->setOnClickFunction('appMgmt/show');
163
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_CREATE) . '/account.permission');
164
165
        return $gridAction;
166
    }
167
168
    /**
169
     * @return DataGridAction
170
     */
171
    private function getCreatePrivateAction()
172
    {
173
        $gridAction = new DataGridAction();
174
        $gridAction->setId(ActionsInterface::ITEMPRESET_CREATE);
175
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
176
        $gridAction->setName(__('Nuevo Valor de Cuenta Privada'));
177
        $gridAction->setTitle(__('Nuevo Valor de Cuenta Privada'));
178
179
        $icon = clone $this->icons->getIconAdd();
180
181
        $gridAction->setIcon($icon->setIcon('add_circle'));
182
        $gridAction->setSkip(true);
183
        $gridAction->setOnClickFunction('appMgmt/show');
184
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_CREATE) . '/account.private');
185
186
        return $gridAction;
187
    }
188
189
    /**
190
     * @return DataGridAction
191
     */
192
    private function getEditAction()
193
    {
194
        $gridAction = new DataGridAction();
195
        $gridAction->setId(ActionsInterface::ITEMPRESET_EDIT);
196
        $gridAction->setType(DataGridActionType::EDIT_ITEM);
197
        $gridAction->setName(__('Editar Valor'));
198
        $gridAction->setTitle(__('Editar Valor'));
199
        $gridAction->setIcon($this->icons->getIconEdit());
200
        $gridAction->setOnClickFunction('appMgmt/show');
201
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_EDIT));
202
203
        return $gridAction;
204
    }
205
206
    /**
207
     * @return DataGridAction
208
     */
209
    private function getDeleteAction()
210
    {
211
        $gridAction = new DataGridAction();
212
        $gridAction->setId(ActionsInterface::ITEMPRESET_DELETE);
213
        $gridAction->setType(DataGridActionType::DELETE_ITEM);
214
        $gridAction->setName(__('Eliminar Valor'));
215
        $gridAction->setTitle(__('Eliminar Valor'));
216
        $gridAction->setIcon($this->icons->getIconDelete());
217
        $gridAction->setOnClickFunction('appMgmt/delete');
218
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::ITEMPRESET_DELETE));
219
220
        return $gridAction;
221
    }
222
}