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

PublicLinkGrid::getSearchAction()   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\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 PublicLinkGrid
41
 *
42
 * @package SP\Modules\Web\Controllers\Helpers\Grid
43
 */
44
final class PublicLinkGrid 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->getCreateAction());
68
        $grid->setDataActions($this->getViewAction());
69
        $grid->setDataActions($this->getRefreshAction());
70
71
        $deleteAction = $this->getDeleteAction();
72
73
        $grid->setDataActions($deleteAction);
74
        $grid->setDataActions($deleteAction, true);
75
76
        $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

76
        $grid->setTime(/** @scrutinizer ignore-type */ round(getElapsedTime($this->queryTimeStart), 5));
Loading history...
77
78
        return $grid;
79
    }
80
81
    /**
82
     * @return DataGridInterface
83
     */
84
    protected function getGridLayout(): DataGridInterface
85
    {
86
        // Grid
87
        $gridTab = new DataGridTab($this->view->getTheme());
88
        $gridTab->setId('tblLinks');
89
        $gridTab->setDataRowTemplate('datagrid-rows', 'grid');
90
        $gridTab->setDataPagerTemplate('datagrid-nav-full', 'grid');
91
        $gridTab->setHeader($this->getHeader());
92
        $gridTab->setData($this->getData());
93
        $gridTab->setTitle(__('Enlaces'));
94
95
        return $gridTab;
96
    }
97
98
    /**
99
     * @return DataGridHeader
100
     */
101
    protected function getHeader(): DataGridHeader
102
    {
103
        // Grid Header
104
        $gridHeader = new DataGridHeader();
105
        $gridHeader->addHeader(__('Cuenta'));
106
        $gridHeader->addHeader(__('Cliente'));
107
        $gridHeader->addHeader(__('Fecha Creación'));
108
        $gridHeader->addHeader(__('Fecha Caducidad'));
109
        $gridHeader->addHeader(__('Usuario'));
110
        $gridHeader->addHeader(__('Notificar'));
111
        $gridHeader->addHeader(__('Visitas'));
112
113
        return $gridHeader;
114
    }
115
116
    /**
117
     * @return DataGridData
118
     */
119
    protected function getData(): DataGridData
120
    {
121
        // Grid Data
122
        $gridData = new DataGridData();
123
        $gridData->setDataRowSourceId('id');
124
        $gridData->addDataRowSource('accountName');
125
        $gridData->addDataRowSource('clientName');
126
        $gridData->addDataRowSource('getDateAddFormat', true);
127
        $gridData->addDataRowSource('getDateExpireFormat', true);
128
        $gridData->addDataRowSource('userLogin');
129
        $gridData->addDataRowSource('getNotifyString', true);
130
        $gridData->addDataRowSource('getCountViewsString', true);
131
        $gridData->setData($this->queryResult);
132
133
        return $gridData;
134
    }
135
136
    /**
137
     * @return DataGridActionSearch
138
     */
139
    private function getSearchAction()
140
    {
141
        // Grid Actions
142
        $gridActionSearch = new DataGridActionSearch();
143
        $gridActionSearch->setId(ActionsInterface::PUBLICLINK_SEARCH);
144
        $gridActionSearch->setType(DataGridActionType::SEARCH_ITEM);
145
        $gridActionSearch->setName('frmSearchLink');
146
        $gridActionSearch->setTitle(__('Buscar Enlace'));
147
        $gridActionSearch->setOnSubmitFunction('appMgmt/search');
148
        $gridActionSearch->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_SEARCH));
149
150
        return $gridActionSearch;
151
    }
152
153
    /**
154
     * @return DataGridAction
155
     */
156
    private function getCreateAction()
157
    {
158
        $gridAction = new DataGridAction();
159
        $gridAction->setId(ActionsInterface::PUBLICLINK_CREATE);
160
        $gridAction->setType(DataGridActionType::MENUBAR_ITEM);
161
        $gridAction->setName(__('Nuevo Enlace'));
162
        $gridAction->setTitle(__('Nuevo Enlace'));
163
        $gridAction->setIcon($this->icons->getIconAdd());
164
        $gridAction->setSkip(true);
165
        $gridAction->setOnClickFunction('appMgmt/show');
166
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_CREATE));
167
168
        return $gridAction;
169
    }
170
171
    /**
172
     * @return DataGridAction
173
     */
174
    private function getViewAction()
175
    {
176
        $gridAction = new DataGridAction();
177
        $gridAction->setId(ActionsInterface::PUBLICLINK_VIEW);
178
        $gridAction->setType(DataGridActionType::VIEW_ITEM);
179
        $gridAction->setName(__('Ver Enlace'));
180
        $gridAction->setTitle(__('Ver Enlace'));
181
        $gridAction->setIcon($this->icons->getIconView());
182
        $gridAction->setOnClickFunction('appMgmt/show');
183
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_VIEW));
184
185
        return $gridAction;
186
    }
187
188
    /**
189
     * @return DataGridAction
190
     */
191
    private function getRefreshAction()
192
    {
193
        $gridAction = new DataGridAction();
194
        $gridAction->setId(ActionsInterface::PUBLICLINK_REFRESH);
195
        $gridAction->setName(__('Renovar Enlace'));
196
        $gridAction->setTitle(__('Renovar Enlace'));
197
        $gridAction->setIcon($this->icons->getIconRefresh());
198
        $gridAction->setOnClickFunction('link/refresh');
199
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_REFRESH));
200
201
        return $gridAction;
202
    }
203
204
    /**
205
     * @return DataGridAction
206
     */
207
    private function getDeleteAction()
208
    {
209
        $gridAction = new DataGridAction();
210
        $gridAction->setId(ActionsInterface::PUBLICLINK_DELETE);
211
        $gridAction->setType(DataGridActionType::DELETE_ITEM);
212
        $gridAction->setName(__('Eliminar Enlace'));
213
        $gridAction->setTitle(__('Eliminar Enlace'));
214
        $gridAction->setIcon($this->icons->getIconDelete());
215
        $gridAction->setOnClickFunction('appMgmt/delete');
216
        $gridAction->addData('action-route', Acl::getActionRoute(ActionsInterface::PUBLICLINK_DELETE));
217
218
        return $gridAction;
219
    }
220
}