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

UserGrid::getGridLayout()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 8
nc 1
nop 0
dl 0
loc 12
rs 10
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\Assets\FontIcon;
31
use SP\Html\DataGrid\DataGridAction;
32
use SP\Html\DataGrid\DataGridActionSearch;
33
use SP\Html\DataGrid\DataGridActionType;
34
use SP\Html\DataGrid\DataGridData;
35
use SP\Html\DataGrid\DataGridHeader;
36
use SP\Html\DataGrid\DataGridInterface;
37
use SP\Html\DataGrid\DataGridTab;
38
use SP\Storage\Database\QueryResult;
39
40
/**
41
 * Class UserGrid
42
 *
43
 * @package SP\Modules\Web\Controllers\Helpers\Grid
44
 */
45
final class UserGrid extends GridBase
46
{
47
    /**
48
     * @var QueryResult
49
     */
50
    private $queryResult;
51
52
    /**
53
     * @param QueryResult $queryResult
54
     *
55
     * @return DataGridInterface
56
     */
57
    public function getGrid(QueryResult $queryResult): DataGridInterface
58
    {
59
        $this->queryResult = $queryResult;
60
61
        $grid = $this->getGridLayout();
62
63
        $searchAction = $this->getSearchAction();
64
65
        $grid->setDataActions($this->getSearchAction());
66
        $grid->setPager($this->getPager($searchAction));
67
68
        $grid->setDataActions($this->getCreateAction());
69
70
        if ($this->acl->checkUserAccess(ActionsInterface::CONFIG_IMPORT)
71
            && $this->configData->isLdapEnabled()
72
        ) {
73
            $grid->setDataActions($this->getLdapSyncAction());
74
        }
75
76
        $grid->setDataActions($this->getViewAction());
77
        $grid->setDataActions($this->getEditAction());
78
        $grid->setDataActions($this->getEditPassAction());
79
80
        $deleteAction = $this->getDeleteAction();
81
82
        $grid->setDataActions($deleteAction);
83
        $grid->setDataActions($deleteAction, true);
84
85
        $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

85
        $grid->setTime(/** @scrutinizer ignore-type */ round(getElapsedTime($this->queryTimeStart), 5));
Loading history...
86
87
        return $grid;
88
    }
89
90
    /**
91
     * @return DataGridInterface
92
     */
93
    protected function getGridLayout(): DataGridInterface
94
    {
95
        // Grid
96
        $gridTab = new DataGridTab($this->view->getTheme());
97
        $gridTab->setId('tblUsers');
98
        $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
99
        $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
100
        $gridTab->setHeader($this->getHeader());
101
        $gridTab->setData($this->getData());
102
        $gridTab->setTitle(__('Usuarios'));
103
104
        return $gridTab;
105
    }
106
107
    /**
108
     * @return DataGridHeader
109
     */
110
    protected function getHeader(): DataGridHeader
111
    {
112
        // Grid Header
113
        $gridHeader = new DataGridHeader();
114
        $gridHeader->addHeader(__('Nombre'));
115
        $gridHeader->addHeader(__('Login'));
116
        $gridHeader->addHeader(__('Perfil'));
117
        $gridHeader->addHeader(__('Grupo'));
118
        $gridHeader->addHeader(__('Propiedades'));
119
120
        return $gridHeader;
121
    }
122
123
    /**
124
     * @return DataGridData
125
     */
126
    protected function getData(): DataGridData
127
    {
128
        // Grid Data
129
        $gridData = new DataGridData();
130
        $gridData->setDataRowSourceId('id');
131
        $gridData->addDataRowSource('name');
132
        $gridData->addDataRowSource('login');
133
        $gridData->addDataRowSource('userProfileName');
134
        $gridData->addDataRowSource('userGroupName');
135
        $gridData->addDataRowSourceWithIcon('isAdminApp', $this->icons->getIconAppAdmin());
136
        $gridData->addDataRowSourceWithIcon('isAdminAcc', $this->icons->getIconAccAdmin());
137
        $gridData->addDataRowSourceWithIcon('isLdap', $this->icons->getIconLdapUser());
138
        $gridData->addDataRowSourceWithIcon('isDisabled', $this->icons->getIconDisabled());
139
        $gridData->setData($this->queryResult);
140
141
        return $gridData;
142
    }
143
144
    /**
145
     * @return DataGridActionSearch
146
     */
147
    private function getSearchAction()
148
    {
149
        // Grid Actions
150
        $gridActionSearch = new DataGridActionSearch();
151
        $gridActionSearch->setId(ActionsInterface::USER_SEARCH);
152
        $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
153
        $gridActionSearch->setName('frmSearchUser');
154
        $gridActionSearch->setTitle(__('Buscar Usuario'));
155
        $gridActionSearch->setOnSubmitFunction('appMgmt/search');
156
        $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_SEARCH));
157
158
        return $gridActionSearch;
159
    }
160
161
    /**
162
     * @return DataGridAction
163
     */
164
    private function getCreateAction()
165
    {
166
        $gridAction = new DataGridAction();
167
        $gridAction->setId(ActionsInterface::USER_CREATE);
168
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
169
        $gridAction->setName(__('Nuevo Usuario'));
170
        $gridAction->setTitle(__('Nuevo Usuario'));
171
        $gridAction->setIcon($this->icons->getIconAdd());
172
        $gridAction->setSkip(true);
173
        $gridAction->setOnClickFunction('appMgmt/show');
174
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_CREATE));
175
176
        return $gridAction;
177
    }
178
179
    /**
180
     * @return DataGridAction
181
     */
182
    private function getEditAction()
183
    {
184
        $gridAction = new DataGridAction();
185
        $gridAction->setId(ActionsInterface::USER_EDIT);
186
        $gridAction->setType(DataGridActionType::EDIT_ITEM);
187
        $gridAction->setName(__('Editar Usuario'));
188
        $gridAction->setTitle(__('Editar Usuario'));
189
        $gridAction->setIcon($this->icons->getIconEdit());
190
        $gridAction->setOnClickFunction('appMgmt/show');
191
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT));
192
193
        return $gridAction;
194
    }
195
196
    /**
197
     * @return DataGridAction
198
     */
199
    private function getDeleteAction()
200
    {
201
        $gridAction = new DataGridAction();
202
        $gridAction->setId(ActionsInterface::USER_DELETE);
203
        $gridAction->setType(DataGridActionType::DELETE_ITEM);
204
        $gridAction->setName(__('Eliminar Usuario'));
205
        $gridAction->setTitle(__('Eliminar Usuario'));
206
        $gridAction->setIcon($this->icons->getIconDelete());
207
        $gridAction->setOnClickFunction('appMgmt/delete');
208
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_DELETE));
209
210
        return $gridAction;
211
    }
212
213
    /**
214
     * @return DataGridAction
215
     */
216
    private function getLdapSyncAction()
217
    {
218
        $gridAction = new DataGridAction();
219
        $gridAction->setId(ActionsInterface::CONFIG_LDAP_SYNC);
220
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
221
        $gridAction->setName(__('Importar usuarios de LDAP'));
222
        $gridAction->setTitle(__('Importar usuarios de LDAP'));
223
        $gridAction->setIcon(new FontIcon('get_app'));
224
        $gridAction->setSkip(true);
225
        $gridAction->setOnClickFunction('appMgmt/ldapSync');
226
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::CONFIG_LDAP_SYNC));
227
228
        return $gridAction;
229
    }
230
231
    private function getViewAction()
232
    {
233
        $gridAction = new DataGridAction();
234
        $gridAction->setId(ActionsInterface::USER_VIEW);
235
        $gridAction->setType(DataGridActionType::VIEW_ITEM);
236
        $gridAction->setName(__('Ver Detalles de Usuario'));
237
        $gridAction->setTitle(__('Ver Detalles de Usuario'));
238
        $gridAction->setIcon($this->icons->getIconView());
239
        $gridAction->setOnClickFunction('appMgmt/show');
240
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_VIEW));
241
242
        return $gridAction;
243
    }
244
245
    /**
246
     * @return DataGridAction
247
     */
248
    private function getEditPassAction()
249
    {
250
        $gridAction = new DataGridAction();
251
        $gridAction->setId(ActionsInterface::USER_EDIT_PASS);
252
        $gridAction->setType(DataGridActionType::EDIT_ITEM);
253
        $gridAction->setName(__('Cambiar Clave de Usuario'));
254
        $gridAction->setTitle(__('Cambiar Clave de Usuario'));
255
        $gridAction->setIcon($this->icons->getIconEditPass());
256
        $gridAction->setOnClickFunction('appMgmt/show');
257
        $gridAction->setFilterRowSource('isLdap');
258
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::USER_EDIT_PASS));
259
260
        return $gridAction;
261
    }
262
}