Passed
Pull Request — master (#88)
by Michael
02:56
created

search.php (2 issues)

Labels
1
<?php declare(strict_types=1);
2
3
/**
4
 * TDMDownload
5
 *
6
 * You may not change or alter any portion of this comment or credits
7
 * of supporting developers from this source code or any supporting source code
8
 * which is considered copyrighted (c) material of the original comment or credit authors.
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
 *
13
 * @copyright   Gregory Mage (Aka Mage)
14
 * @license     GNU GPL 2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
15
 * @author      Gregory Mage (Aka Mage)
16
 */
17
18
use XoopsModules\Tdmdownloads\{
19
    DownloadsHandler,
20
    Helper,
21
    Tree,
22
    Utility};
23
/** @var Helper $helper */
24
/** @var Utility $utility */
25
26
require_once __DIR__ . '/header.php';
27
28
$moduleDirName = basename(__DIR__);
29
$helper        = Helper::getInstance();
30
$utility = new Utility();
31
$downloadsHandler = $helper->getHandler('Downloads');
32
33
// template d'affichage
34
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_liste.tpl';
35
require_once XOOPS_ROOT_PATH . '/header.php';
36
/** @var \xos_opal_Theme $xoTheme */
37
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/styles.css', null);
38
39
$categories = $utility->getItemIds('tdmdownloads_view', $moduleDirName);
40
41
$title = '';
42
if (\Xmf\Request::hasVar('title', 'REQUEST')) {
43
    $title = \Xmf\Request::getString('title', '', 'REQUEST');
44
}
45
46
$cat = 0;
47
if (\Xmf\Request::hasVar('cat', 'REQUEST')) {
48
    $cat = \Xmf\Request::getInt('cat', 0, 'REQUEST');
49
}
50
// tableau ------
51
$criteria_2 = new \CriteriaCompo();
52
$criteria_2->add(new \Criteria('status', 0, '!='));
53
$criteria_2->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
54
// ------
55
//formulaire de recherche
56
$form = new \XoopsThemeForm(_MD_TDMDOWNLOADS_SEARCH, 'search', 'search.php', 'post');
57
$form->setExtra('enctype="multipart/form-data"');
58
//recherche par titre
59
$form->addElement(new \XoopsFormText(_MD_TDMDOWNLOADS_SEARCH_TITLE, 'title', 25, 255, $title));
60
//recherche par catégorie
61
$criteria = new \CriteriaCompo();
62
$criteria->setSort('cat_weight ASC, cat_title');
63
$criteria->setOrder('ASC');
64
$criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
65
/*$cat_select = new \XoopsFormSelect(_MD_TDMDOWNLOADS_SEARCH_CATEGORIES . ' ', 'cat', $cat);
66
$cat_select->addOption(0,_MD_TDMDOWNLOADS_SEARCH_ALL2);
67
$cat_select->addOptionArray($categoryHandler->getList($criteria ));
68
$form->addElement($cat_select);*/
69
$downloadscatArray = $categoryHandler->getAll($criteria);
70
$mytree            = new Tree($downloadscatArray, 'cat_cid', 'cat_pid');
71
$form->addElement($mytree->makeSelectElement('cat', 'cat_title', '--', $cat, true, 0, '', _AM_TDMDOWNLOADS_FORMINCAT), true);
72
73
//recherche champ sup.
74
//$fieldHandler = Helper::getInstance()->getHandler('Field');
75
$criteria = new \CriteriaCompo();
76
$criteria->add(new \Criteria('search', 1));
77
$criteria->add(new \Criteria('status', 1));
78
$criteria->setSort('weight ASC, title');
79
$criteria->setOrder('ASC');
80
$downloads_field = $fieldHandler->getAll($criteria);
81
82
$arguments = '';
83
foreach (array_keys($downloads_field) as $i) {
84
    /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
85
86
    $title_sup = '';
87
88
    $contentArray = [];
89
90
    $lid_arr = [];
91
92
    $fieldName = 'champ' . $downloads_field[$i]->getVar('fid');
93
94
    $criteria = new \CriteriaCompo();
95
96
    if (\Xmf\Request::hasVar($fieldName, 'REQUEST')) {
97
        999 !== \Xmf\Request::getInt($fieldName, 0, 'REQUEST') ? $fieldContent[$downloads_field[$i]->getVar('fid')] = \Xmf\Request::getInt($fieldName, 0, 'REQUEST') : $fieldContent[$downloads_field[$i]->getVar('fid')] = 999;
98
99
        $arguments .= $fieldName . '=' . \Xmf\Request::getInt($fieldName, 0, 'REQUEST') . '&amp;';
100
    } else {
101
        $fieldContent[$downloads_field[$i]->getVar('fid')] = 999;
102
103
        $arguments .= $fieldName . '=&amp;';
104
    }
105
106
    if (1 == $downloads_field[$i]->getVar('status_def')) {
107
        $criteria->add(new \Criteria('status', 0, '!='));
108
109
        if (1 == $downloads_field[$i]->getVar('fid')) {
110
            //page d'accueil
111
112
            $title_sup = _AM_TDMDOWNLOADS_FORMHOMEPAGE;
113
114
            $criteria->setSort('homepage');
115
116
            $fieldNameBase = 'homepage';
117
        }
118
119
        if (2 == $downloads_field[$i]->getVar('fid')) {
120
            //version
121
122
            $title_sup = _AM_TDMDOWNLOADS_FORMVERSION;
123
124
            $criteria->setSort('version');
125
126
            $fieldNameBase = 'version';
127
        }
128
129
        if (3 == $downloads_field[$i]->getVar('fid')) {
130
            //taille du fichier
131
132
            $title_sup = _AM_TDMDOWNLOADS_FORMSIZE;
133
134
            $criteria->setSort('size');
135
136
            $fieldNameBase = 'size';
137
        }
138
139
        if (4 == $downloads_field[$i]->getVar('fid')) {
140
            //platform
141
142
            $title_sup = _AM_TDMDOWNLOADS_FORMPLATFORM;
143
144
            $platformArray = explode('|', $helper->getConfig('plateform'));
0 ignored issues
show
It seems like $helper->getConfig('plateform') can also be of type null; however, parameter $string of explode() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

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

144
            $platformArray = explode('|', /** @scrutinizer ignore-type */ $helper->getConfig('plateform'));
Loading history...
145
146
            foreach ($platformArray as $platform) {
147
                $contentArray[$platform] = $platform;
148
            }
149
150
            if (999 !== $fieldContent[$downloads_field[$i]->getVar('fid')]) {
151
                $criteria_2->add(new \Criteria('platform', '%' . $fieldContent[$downloads_field[$i]->getVar('fid')] . '%', 'LIKE'));
152
            }
153
        } else {
154
            $criteria->setOrder('ASC');
155
156
            $tdmdownloadsArray = $downloadsHandler->getAll($criteria);
157
158
            foreach (array_keys($tdmdownloadsArray) as $j) {
159
                /** @var \XoopsModules\Tdmdownloads\Downloads[] $tdmdownloadsArray */
160
                $temp                = $tdmdownloadsArray[$j]->getVar($fieldNameBase);
161
                $contentArray[$temp] = $temp;
162
            }
163
164
            if (999 !== $fieldContent[$downloads_field[$i]->getVar('fid')]) {
165
                $criteria_2->add(new \Criteria($fieldNameBase, $fieldContent[$downloads_field[$i]->getVar('fid')]));
166
            }
167
        }
168
    } else {
169
        $title_sup = $downloads_field[$i]->getVar('title');
170
171
        $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
172
173
        $criteria->setSort('data');
174
175
        $criteria->setOrder('ASC');
176
177
        $tdmdownloadsArray = $fielddataHandler->getAll($criteria);
178
179
        foreach (array_keys($tdmdownloadsArray) as $j) {
180
            /** @var \XoopsModules\Tdmdownloads\Downloads[] $tdmdownloadsArray */
181
182
            $contentArray[$tdmdownloadsArray[$j]->getVar('data', 'n')] = $tdmdownloadsArray[$j]->getVar('data');
183
        }
184
185
        if ('' !== $fieldContent[$downloads_field[$i]->getVar('fid')]) {
186
            $criteria_1 = new \CriteriaCompo();
187
188
            $criteria_1->add(new \Criteria('data', $fieldContent[$downloads_field[$i]->getVar('fid')]));
189
190
            $dataArray = $fielddataHandler->getAll($criteria_1);
191
192
            foreach (array_keys($dataArray) as $k) {
193
                /** @var \XoopsModules\Tdmdownloads\Fielddata[] $dataArray */
194
195
                $lid_arr[] = $dataArray[$k]->getVar('lid');
196
            }
197
        }
198
    }
199
200
    if (count($lid_arr) > 0) {
201
        $criteria_2->add(new \Criteria('lid', '(' . implode(',', $lid_arr) . ')', 'IN'));
202
    }
203
204
    $select_sup = new \XoopsFormSelect($title_sup, $fieldName, $fieldContent[$downloads_field[$i]->getVar('fid')]);
205
206
    $select_sup->addOption(999, _MD_TDMDOWNLOADS_SEARCH_ALL1);
207
208
    $select_sup->addOptionArray($contentArray);
209
210
    $form->addElement($select_sup);
211
212
    unset($select_sup);
213
214
    $xoopsTpl->append('field', $downloads_field[$i]->getVar('title'));
215
}
216
217
//bouton validation
218
$buttonTray = new \XoopsFormElementTray('', '');
219
$buttonTray->addElement(new \XoopsFormButton('', 'submit', _MD_TDMDOWNLOADS_SEARCH_BT, 'submit'));
220
$form->addElement($buttonTray);
221
222
if ('' !== $title) {
223
    $criteria_2->add(new \Criteria('title', '%' . $title . '%', 'LIKE'));
224
225
    $arguments .= 'title=' . $title . '&amp;';
226
}
227
if (0 !== $cat) {
228
    $criteria_2->add(new \Criteria('cid', $cat));
229
230
    $arguments .= 'cat=' . $cat . '&amp;';
231
}
232
$tblsort     = [];
233
$tblsort[1]  = 'date';
234
$tblsort[2]  = 'date';
235
$tblsort[3]  = 'hits';
236
$tblsort[4]  = 'hits';
237
$tblsort[5]  = 'rating';
238
$tblsort[6]  = 'rating';
239
$tblsort[7]  = 'title';
240
$tblsort[8]  = 'title';
241
$tblorder    = [];
242
$tblorder[1] = 'DESC';
243
$tblorder[2] = 'ASC';
244
$tblorder[3] = 'DESC';
245
$tblorder[4] = 'ASC';
246
$tblorder[5] = 'DESC';
247
$tblorder[6] = 'ASC';
248
$tblorder[7] = 'DESC';
249
$tblorder[8] = 'ASC';
250
$sort        = $helper->getConfig('searchorder') ?? 1;
251
$order       = $helper->getConfig('searchorder') ?? 1;
252
$criteria_2->setSort($tblsort[$sort]);
253
$criteria_2->setOrder($tblorder[$order]);
254
$numrows = $downloadsHandler->getCount($criteria_2);
255
if (\Xmf\Request::hasVar('limit', 'REQUEST')) {
256
    $criteria_2->setLimit(\Xmf\Request::getInt('limit', 0, 'REQUEST'));
257
258
    $limit = \Xmf\Request::getInt('limit', 0, 'REQUEST');
259
} else {
260
    $criteria_2->setLimit($helper->getConfig('perpageliste'));
261
262
    $limit = $helper->getConfig('perpageliste');
263
}
264
if (\Xmf\Request::hasVar('start', 'REQUEST')) {
265
    $criteria_2->setStart(\Xmf\Request::getInt('start', 0, 'REQUEST'));
266
267
    $start = \Xmf\Request::getInt('start', 0, 'REQUEST');
268
} else {
269
    $criteria_2->setStart(0);
270
271
    $start = 0;
272
}
273
//pour faire une jointure de table
274
$downloadsHandler->table_link   = $downloadsHandler->db->prefix('tdmdownloads_cat'); // Nom de la table en jointure
0 ignored issues
show
The property table_link does not exist on XoopsModules\Tdmdownloads\DownloadsHandler. Did you mean table?
Loading history...
275
$downloadsHandler->field_link   = 'cat_cid'; // champ de la table en jointure
276
$downloadsHandler->field_object = 'cid'; // champ de la table courante
277
$tdmdownloadsArray              = $downloadsHandler->getByLink($criteria_2);
278
if ($numrows > $limit) {
279
    require_once XOOPS_ROOT_PATH . '/class/pagenav.php';
280
281
    $pagenav = new \XoopsPageNav($numrows, $limit, $start, 'start', $arguments);
282
283
    $pagenav = $pagenav->renderNav(4);
284
} else {
285
    $pagenav = '';
286
}
287
$xoopsTpl->assign('lang_thereare', sprintf(_MD_TDMDOWNLOADS_SEARCH_THEREARE, $downloadsHandler->getCount($criteria_2)));
288
$xoopsTpl->assign('pagenav', $pagenav);
289
$keywords = '';
290
foreach (array_keys($tdmdownloadsArray) as $i) {
291
    $tdmdownloadsTab['lid'] = $tdmdownloadsArray[$i]->getVar('lid');
292
293
    $tdmdownloadsTab['cid'] = $tdmdownloadsArray[$i]->getVar('cid');
294
295
    $tdmdownloadsTab['title'] = $tdmdownloadsArray[$i]->getVar('title');
296
297
    $tdmdownloadsTab['cat'] = $tdmdownloadsArray[$i]->getVar('cat_title');
298
299
    $tdmdownloadsTab['imgurl'] = $uploadurl . $tdmdownloadsArray[$i]->getVar('cat_imgurl');
300
301
    $tdmdownloadsTab['date'] = formatTimestamp($tdmdownloadsArray[$i]->getVar('date'), 'd/m/Y');
302
303
    $tdmdownloadsTab['rating'] = number_format((float)$tdmdownloadsArray[$i]->getVar('rating'), 0);
304
305
    $tdmdownloadsTab['hits'] = $tdmdownloadsArray[$i]->getVar('hits');
306
307
    $contenu = '';
308
309
    foreach (array_keys($downloads_field) as $j) {
310
        if (1 == $downloads_field[$j]->getVar('status_def')) {
311
            if (1 == $downloads_field[$j]->getVar('fid')) {
312
                //page d'accueil
313
314
                $contenu = $tdmdownloadsArray[$i]->getVar('homepage');
315
            }
316
317
            if (2 == $downloads_field[$j]->getVar('fid')) {
318
                //version
319
320
                $contenu = $tdmdownloadsArray[$i]->getVar('version');
321
            }
322
323
            if (3 == $downloads_field[$j]->getVar('fid')) {
324
                //taille du fichier
325
326
                //mb $contenu = $utilities->convertFileSize($tdmdownloads_arr[$i]->getVar('size'));
327
328
                $contenu = $tdmdownloadsArray[$i]->getVar('size');
329
            }
330
331
            if (4 == $downloads_field[$j]->getVar('fid')) {
332
                //plateforme
333
334
                $contenu = $tdmdownloadsArray[$i]->getVar('platform');
335
            }
336
        } else {
337
            $criteria = new \CriteriaCompo();
338
339
            $criteria->add(new \Criteria('lid', $tdmdownloadsArray[$i]->getVar('lid')));
340
341
            $criteria->add(new \Criteria('fid', $downloads_field[$j]->getVar('fid')));
342
343
            $downloadsfielddata = $fielddataHandler->getAll($criteria);
344
345
            if (count($downloadsfielddata) > 0) {
346
                foreach (array_keys($downloadsfielddata) as $k) {
347
                    /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
348
349
                    $contenu = $downloadsfielddata[$k]->getVar('data', 'n');
350
                }
351
            } else {
352
                $contenu = '';
353
            }
354
        }
355
356
        $tdmdownloadsTab['fielddata'][$j] = $contenu;
357
358
        unset($contenu);
359
    }
360
361
    $xoopsTpl->append('search_list', $tdmdownloadsTab);
362
363
    $keywords .= $tdmdownloadsArray[$i]->getVar('title') . ',';
364
}
365
366
$xoopsTpl->assign('searchForm', $form->render());
367
$xoopsTpl->assign('perm_submit', $perm_submit);
368
$xoopsTpl->assign('pathModIcon16', XOOPS_URL . '/modules/' . $moduleDirName . '/' . $pathModIcon16);
369
370
// référencement
371
// titre de la page
372
$titre = _MD_TDMDOWNLOADS_SEARCH_PAGETITLE . ' - ' . $xoopsModule->name();
373
$xoopsTpl->assign('xoops_pagetitle', $titre);
374
//description
375
$xoTheme->addMeta('meta', 'description', strip_tags($xoopsModule->name()));
376
//keywords
377
$keywords = mb_substr($keywords, 0, -1);
378
$xoTheme->addMeta('meta', 'keywords', strip_tags($keywords));
379
380
require XOOPS_ROOT_PATH . '/footer.php';
381