Passed
Push — master ( 147716...07ebf8 )
by Michael
05:26 queued 02:38
created

search.php (1 issue)

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

131
        $criteria->add(new \Criteria('fid', /** @scrutinizer ignore-type */ $downloads_field[$i]->getVar('fid')));
Loading history...
132
        $criteria->setSort('data');
133
        $criteria->setOrder('ASC');
134
        $tdmdownloadsArray = $fielddataHandler->getAll($criteria);
135
        foreach (array_keys($tdmdownloadsArray) as $j) {
136
            /** @var \XoopsModules\Tdmdownloads\Downloads[] $tdmdownloadsArray */
137
            $contentArray[$tdmdownloadsArray[$j]->getVar('data', 'n')] = $tdmdownloadsArray[$j]->getVar('data');
138
        }
139
        if ('' !== $fieldContent[$downloads_field[$i]->getVar('fid')]) {
140
            $criteria_1 = new \CriteriaCompo();
141
            $criteria_1->add(new \Criteria('data', $fieldContent[$downloads_field[$i]->getVar('fid')]));
142
            $dataArray = $fielddataHandler->getAll($criteria_1);
143
            foreach (array_keys($dataArray) as $k) {
144
                /** @var \XoopsModules\Tdmdownloads\Fielddata[] $dataArray */
145
                $lid_arr[] = $dataArray[$k]->getVar('lid');
146
            }
147
        }
148
        $form->addElement($select_sup);
149
    }
150
    if (count($lid_arr) > 0) {
151
        $criteria_2->add(new \Criteria('lid', '(' . implode(',', $lid_arr) . ')', 'IN'));
152
    }
153
    $select_sup = new \XoopsFormSelect($title_sup, $fieldName, $fieldContent[$downloads_field[$i]->getVar('fid')]);
154
    $select_sup->addOption(999, _MD_TDMDOWNLOADS_SEARCH_ALL1);
155
    $select_sup->addOptionArray($contentArray);
156
    $form->addElement($select_sup);
157
    unset($select_sup);
158
    $xoopsTpl->append('field', $downloads_field[$i]->getVar('title'));
159
}
160
161
//bouton validation
162
$buttonTray = new \XoopsFormElementTray('', '');
163
$buttonTray->addElement(new \XoopsFormButton('', 'submit', _MD_TDMDOWNLOADS_SEARCH_BT, 'submit'));
164
$form->addElement($buttonTray);
165
166
if ('' !== $title) {
167
    $criteria_2->add(new \Criteria('title', '%' . $title . '%', 'LIKE'));
168
    $arguments .= 'title=' . $title . '&amp;';
169
}
170
if (0 !== $cat) {
171
    $criteria_2->add(new \Criteria('cid', $cat));
172
    $arguments .= 'cat=' . $cat . '&amp;';
173
}
174
$tblsort = [];
175
$tblsort[1] = 'date';
176
$tblsort[2] = 'date';
177
$tblsort[3] = 'hits';
178
$tblsort[4] = 'hits';
179
$tblsort[5] = 'rating';
180
$tblsort[6] = 'rating';
181
$tblsort[7] = 'title';
182
$tblsort[8] = 'title';
183
$tblorder = [];
184
$tblorder[1] = 'DESC';
185
$tblorder[2] = 'ASC';
186
$tblorder[3] = 'DESC';
187
$tblorder[4] = 'ASC';
188
$tblorder[5] = 'DESC';
189
$tblorder[6] = 'ASC';
190
$tblorder[7] = 'DESC';
191
$tblorder[8] = 'ASC';
192
$sort = null !== $helper->getConfig('searchorder') ? $helper->getConfig('searchorder') : 1;
193
$order = null !== $helper->getConfig('searchorder') ? $helper->getConfig('searchorder') : 1;
194
$criteria_2->setSort($tblsort[$sort]);
195
$criteria_2->setOrder($tblorder[$order]);
196
$numrows = $downloadsHandler->getCount($criteria_2);
197
if (\Xmf\Request::hasVar('limit', 'REQUEST')) {
198
    $criteria_2->setLimit(\Xmf\Request::getInt('limit', 0, 'REQUEST'));
199
    $limit = \Xmf\Request::getInt('limit', 0, 'REQUEST');
200
} else {
201
    $criteria_2->setLimit($helper->getConfig('perpageliste'));
202
    $limit = $helper->getConfig('perpageliste');
203
}
204
if (\Xmf\Request::hasVar('start', 'REQUEST')) {
205
    $criteria_2->setStart(\Xmf\Request::getInt('start', 0, 'REQUEST'));
206
    $start = \Xmf\Request::getInt('start', 0, 'REQUEST');
207
} else {
208
    $criteria_2->setStart(0);
209
    $start = 0;
210
}
211
//pour faire une jointure de table
212
$downloadsHandler->table_link = $downloadsHandler->db->prefix('tdmdownloads_cat'); // Nom de la table en jointure
213
$downloadsHandler->field_link = 'cat_cid'; // champ de la table en jointure
214
$downloadsHandler->field_object = 'cid'; // champ de la table courante
215
$tdmdownloadsArray = $downloadsHandler->getByLink($criteria_2);
216
if ($numrows > $limit) {
217
    $pagenav = new \XoopsPageNav($numrows, $limit, $start, 'start', $arguments);
218
    $pagenav = $pagenav->renderNav(4);
219
} else {
220
    $pagenav = '';
221
}
222
$xoopsTpl->assign('lang_thereare', sprintf(_MD_TDMDOWNLOADS_SEARCH_THEREARE, $downloadsHandler->getCount($criteria_2)));
223
$xoopsTpl->assign('pagenav', $pagenav);
224
$keywords = '';
225
foreach (array_keys($tdmdownloadsArray) as $i) {
226
    $tdmdownloadsTab['lid'] = $tdmdownloadsArray[$i]->getVar('lid');
227
    $tdmdownloadsTab['cid'] = $tdmdownloadsArray[$i]->getVar('cid');
228
    $tdmdownloadsTab['title'] = $tdmdownloadsArray[$i]->getVar('title');
229
    $tdmdownloadsTab['cat'] = $tdmdownloadsArray[$i]->getVar('cat_title');
230
    $tdmdownloadsTab['imgurl'] = $uploadurl . $tdmdownloadsArray[$i]->getVar('cat_imgurl');
231
    $tdmdownloadsTab['date'] = formatTimestamp($tdmdownloadsArray[$i]->getVar('date'), 'd/m/Y');
232
    $tdmdownloadsTab['rating'] = number_format($tdmdownloadsArray[$i]->getVar('rating'), 0);
233
    $tdmdownloadsTab['hits'] = $tdmdownloadsArray[$i]->getVar('hits');
234
    $contenu = '';
235
    foreach (array_keys($downloads_field) as $j) {
236
        if (1 == $downloads_field[$j]->getVar('status_def')) {
237
            if (1 == $downloads_field[$j]->getVar('fid')) {
238
                //page d'accueil
239
                $contenu = $tdmdownloadsArray[$i]->getVar('homepage');
240
            }
241
            if (2 == $downloads_field[$j]->getVar('fid')) {
242
                //version
243
                $contenu = $tdmdownloadsArray[$i]->getVar('version');
244
            }
245
            if (3 == $downloads_field[$j]->getVar('fid')) {
246
                //taille du fichier
247
                //mb $contenu = $utilities->convertFileSize($tdmdownloads_arr[$i]->getVar('size'));
248
                $contenu = $tdmdownloadsArray[$i]->getVar('size');
249
            }
250
            if (4 == $downloads_field[$j]->getVar('fid')) {
251
                //plateforme
252
                $contenu = $tdmdownloadsArray[$i]->getVar('platform');
253
            }
254
        } else {
255
            $criteria = new \CriteriaCompo();
256
            $criteria->add(new \Criteria('lid', $tdmdownloadsArray[$i]->getVar('lid')));
257
            $criteria->add(new \Criteria('fid', $downloads_field[$j]->getVar('fid')));
258
            $downloadsfielddata = $fielddataHandler->getAll($criteria);
259
            if (count($downloadsfielddata) > 0) {
260
                foreach (array_keys($downloadsfielddata) as $k) {
261
                    /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
262
                    $contenu = $downloadsfielddata[$k]->getVar('data', 'n');
263
                }
264
            } else {
265
                $contenu = '';
266
            }
267
        }
268
269
        $tdmdownloadsTab['fielddata'][$j] = $contenu;
270
        unset($contenu);
271
    }
272
    $xoopsTpl->append('search_list', $tdmdownloadsTab);
273
274
    $keywords .= $tdmdownloadsArray[$i]->getVar('title') . ',';
275
}
276
277
$xoopsTpl->assign('searchForm', $form->render());
278
$xoopsTpl->assign('perm_submit', $perm_submit);
279
$xoopsTpl->assign('pathModIcon16', XOOPS_URL . '/modules/' . $moduleDirName . '/' . $pathModIcon16);
280
281
// référencement
282
// titre de la page
283
$titre = _MD_TDMDOWNLOADS_SEARCH_PAGETITLE . ' - ' . $xoopsModule->name();
284
$xoopsTpl->assign('xoops_pagetitle', $titre);
285
//description
286
$xoTheme->addMeta('meta', 'description', strip_tags($xoopsModule->name()));
287
//keywords
288
$keywords = mb_substr($keywords, 0, -1);
289
$xoTheme->addMeta('meta', 'keywords', strip_tags($keywords));
290
291
require XOOPS_ROOT_PATH . '/footer.php';
292