Passed
Pull Request — master (#88)
by Michael
05:18 queued 01:48
created
Labels
Severity
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
require_once __DIR__ . '/header.php';
18
19
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
20
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
21
22
// template d'affichage
23
$moduleDirName                           = basename(__DIR__);
24
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_index.tpl';
25
require_once XOOPS_ROOT_PATH . '/header.php';
26
/** @var \xos_opal_Theme $xoTheme */
27
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/styles.css', null);
28
// pour les permissions
29
$categories = $utility->getItemIds('tdmdownloads_view', $moduleDirName);
30
31
//tableau des téléchargements
32
$criteria = new \CriteriaCompo();
33
$criteria->add(new \Criteria('status', 0, '!='));
34
$criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
35
$downloadsArray = $downloadsHandler->getAll($criteria);
36
$xoopsTpl->assign('lang_thereare', sprintf(_MD_TDMDOWNLOADS_INDEX_THEREARE, count($downloadsArray)));
37
38
//tableau des catégories
39
$criteria = new \CriteriaCompo();
40
$criteria->setSort('cat_weight ASC, cat_title');
41
$criteria->setOrder('ASC');
42
$criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
43
$downloadscatArray = $categoryHandler->getAll($criteria);
44
$mytree            = new \XoopsModules\Tdmdownloads\Tree($downloadscatArray, 'cat_cid', 'cat_pid');
45
46
//affichage des catégories
47
$xoopsTpl->assign('nb_catcol', $helper->getConfig('nb_catcol'));
48
$count    = 1;
49
$keywords = '';
50
foreach (array_keys($downloadscatArray) as $i) {
51
    /** @var \XoopsModules\Tdmdownloads\Category[] $downloadscatArray */
52
53
    if (0 === $downloadscatArray[$i]->getVar('cat_pid')) {
54
        $totaldownloads = $utility->getNumbersOfEntries($mytree, $categories, $downloadsArray, $downloadscatArray[$i]->getVar('cat_cid'));
55
56
        $subcategories_arr = $mytree->getFirstChild($downloadscatArray[$i]->getVar('cat_cid'));
0 ignored issues
show
It seems like $downloadscatArray[$i]->getVar('cat_cid') can also be of type array and array; however, parameter $key of XoopsObjectTree::getFirstChild() 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

56
        $subcategories_arr = $mytree->getFirstChild(/** @scrutinizer ignore-type */ $downloadscatArray[$i]->getVar('cat_cid'));
Loading history...
57
58
        $chcount = 0;
59
60
        $subcategories = '';
61
62
        //pour les mots clef
63
64
        $keywords .= $downloadscatArray[$i]->getVar('cat_title') . ',';
65
66
        foreach (array_keys($subcategories_arr) as $j) {
67
            /** @var \XoopsModules\Tdmdownloads\Category[] $subcategories_arr */
68
69
            if ($chcount >= $helper->getConfig('nbsouscat')) {
70
                $subcategories .= '<li>[<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/viewcat.php?cid=' . $downloadscatArray[$i]->getVar('cat_cid') . '">+</a>]</li>';
71
72
                break;
73
            }
74
75
            $subcategories .= '<li><a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/viewcat.php?cid=' . $subcategories_arr[$j]->getVar('cat_cid') . '">' . $subcategories_arr[$j]->getVar('cat_title') . '</a></li>';
76
77
            $keywords .= $downloadscatArray[$i]->getVar('cat_title') . ',';
78
79
            ++$chcount;
80
        }
81
82
        $xoopsTpl->append(
83
            'categories',
84
            [
85
                'image'            => $uploadurl . $downloadscatArray[$i]->getVar('cat_imgurl'),
86
                'id'               => $downloadscatArray[$i]->getVar('cat_cid'),
87
                'title'            => $downloadscatArray[$i]->getVar('cat_title'),
88
                'description_main' => $downloadscatArray[$i]->getVar('cat_description_main'),
89
                'subcategories'    => $subcategories,
90
                'countsubs'        => count($subcategories_arr),
91
                'totaldownloads'   => $totaldownloads,
92
                'count'            => $count,
93
            ]
94
        );
95
96
        ++$count;
97
    }
98
}
99
100
//pour afficher les résumés
101
//----------------------------------------------------------------------------------------------------------------------------------------------------
102
//téléchargements récents
103
if (1 == $helper->getConfig('bldate')) {
104
    $criteria = new \CriteriaCompo();
105
106
    $criteria->add(new \Criteria('status', 0, '!='));
107
108
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
109
110
    $criteria->setSort('date');
111
112
    $criteria->setOrder('DESC');
113
114
    $criteria->setLimit($helper->getConfig('nbbl'));
115
116
    $downloads_arr_date = $downloadsHandler->getAll($criteria);
117
118
    foreach (array_keys($downloads_arr_date) as $i) {
119
        /** @var \XoopsModules\Tdmdownloads\Downloads[] $downloads_arr_date */
120
121
        $title = $downloads_arr_date[$i]->getVar('title');
122
123
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
124
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
125
        }
126
127
        $date = formatTimestamp($downloads_arr_date[$i]->getVar('date'), 's');
128
129
        $xoopsTpl->append(
130
            'bl_date',
131
            [
132
                'id'    => $downloads_arr_date[$i]->getVar('lid'),
133
                'cid'   => $downloads_arr_date[$i]->getVar('cid'),
134
                'date'  => $date,
135
                'title' => $title,
136
            ]
137
        );
138
    }
139
}
140
//plus téléchargés
141
if (1 == $helper->getConfig('blpop')) {
142
    $criteria = new \CriteriaCompo();
143
144
    $criteria->add(new \Criteria('status', 0, '!='));
145
146
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
147
148
    $criteria->setSort('hits');
149
150
    $criteria->setOrder('DESC');
151
152
    $criteria->setLimit($helper->getConfig('nbbl'));
153
154
    $downloads_arr_hits = $downloadsHandler->getAll($criteria);
155
156
    foreach (array_keys($downloads_arr_hits) as $i) {
157
        /** @var \XoopsModules\Tdmdownloads\Downloads[] $downloads_arr_hits */
158
159
        $title = $downloads_arr_hits[$i]->getVar('title');
160
161
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
162
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
163
        }
164
165
        $xoopsTpl->append(
166
            'bl_pop',
167
            [
168
                'id'    => $downloads_arr_hits[$i]->getVar('lid'),
169
                'cid'   => $downloads_arr_hits[$i]->getVar('cid'),
170
                'hits'  => $downloads_arr_hits[$i]->getVar('hits'),
171
                'title' => $title,
172
            ]
173
        );
174
    }
175
}
176
//mieux notés
177
if (1 == $helper->getConfig('blrating')) {
178
    $criteria = new \CriteriaCompo();
179
180
    $criteria->add(new \Criteria('status', 0, '!='));
181
182
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
183
184
    $criteria->setSort('rating');
185
186
    $criteria->setOrder('DESC');
187
188
    $criteria->setLimit($helper->getConfig('nbbl'));
189
190
    $downloads_arr_rating = $downloadsHandler->getAll($criteria);
191
192
    foreach (array_keys($downloads_arr_rating) as $i) {
193
        /** @var \XoopsModules\Tdmdownloads\Downloads[] $downloads_arr_rating */
194
195
        $title = $downloads_arr_rating[$i]->getVar('title');
196
197
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
198
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
199
        }
200
201
        $rating = number_format((float)$downloads_arr_rating[$i]->getVar('rating'), 1);
202
203
        $xoopsTpl->append(
204
            'bl_rating',
205
            [
206
                'id'     => $downloads_arr_rating[$i]->getVar('lid'),
207
                'cid'    => $downloads_arr_rating[$i]->getVar('cid'),
208
                'rating' => $rating,
209
                'title'  => $title,
210
            ]
211
        );
212
    }
213
}
214
$bl_affichage = 1;
215
if (0 === $helper->getConfig('bldate') && 0 === $helper->getConfig('blpop') && 0 === $helper->getConfig('blrating')) {
216
    $bl_affichage = 0;
217
}
218
$xoopsTpl->assign('bl_affichage', $bl_affichage);
219
$xoopsTpl->assign('show_latest_files', $helper->getConfig('show_latest_files'));
220
221
//----------------------------------------------------------------------------------------------------------------------------------------------------
222
223
// affichage des téléchargements
224
if ($helper->getConfig('newdownloads') > 0) {
225
    $xoopsTpl->assign('nb_dowcol', $helper->getConfig('nb_dowcol'));
226
227
    //Utilisation d'une copie d'écran avec la largeur selon les préférences
228
229
    if (1 == $helper->getConfig('useshots')) {
230
        $xoopsTpl->assign('shotwidth', $helper->getConfig('shotwidth'));
231
232
        $xoopsTpl->assign('show_screenshot', true);
233
234
        $xoopsTpl->assign('img_float', $helper->getConfig('img_float'));
235
    }
236
237
    $criteria = new \CriteriaCompo();
238
239
    $criteria->add(new \Criteria('status', 0, '!='));
240
241
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
242
243
    $criteria->setLimit($helper->getConfig('newdownloads'));
244
245
    $tblsort = [];
246
247
    $tblsort[1] = 'date';
248
249
    $tblsort[2] = 'date';
250
251
    $tblsort[3] = 'hits';
252
253
    $tblsort[4] = 'hits';
254
255
    $tblsort[5] = 'rating';
256
257
    $tblsort[6] = 'rating';
258
259
    $tblsort[7] = 'title';
260
261
    $tblsort[8] = 'title';
262
263
    $tblorder = [];
264
265
    $tblorder[1] = 'DESC';
266
267
    $tblorder[2] = 'ASC';
268
269
    $tblorder[3] = 'DESC';
270
271
    $tblorder[4] = 'ASC';
272
273
    $tblorder[5] = 'DESC';
274
275
    $tblorder[6] = 'ASC';
276
277
    $tblorder[7] = 'DESC';
278
279
    $tblorder[8] = 'ASC';
280
281
    $sort = $helper->getConfig('toporder') ?? 1;
282
283
    $order = $helper->getConfig('toporder') ?? 1;
284
285
    $criteria->setSort($tblsort[$sort]);
286
287
    $criteria->setOrder($tblorder[$order]);
288
289
    $downloadsArray = $downloadsHandler->getAll($criteria);
290
291
    $categories = $utility->getItemIds('tdmdownloads_download', $moduleDirName);
292
293
    $item = $utility->getItemIds('tdmdownloads_download_item', $moduleDirName);
294
295
    $count = 1;
296
297
    foreach (array_keys($downloadsArray) as $i) {
298
        /** @var \XoopsModules\Tdmdownloads\Downloads[] $downloadsArray */
299
300
        if ('blank.gif' === $downloadsArray[$i]->getVar('logourl')) {
301
            $logourl = '';
302
        } else {
303
            $logourl = $downloadsArray[$i]->getVar('logourl');
304
305
            $logourl = $uploadurl_shots . $logourl;
306
        }
307
308
        $datetime = formatTimestamp($downloadsArray[$i]->getVar('date'), 's');
309
310
        $submitter = \XoopsUser::getUnameFromId($downloadsArray[$i]->getVar('submitter'));
311
312
        $description = $downloadsArray[$i]->getVar('description');
313
314
        //permet d'afficher uniquement la description courte
315
316
        if (false === mb_strpos($description, '[pagebreak]')) {
317
            $descriptionShort = $description;
318
        } else {
319
            $descriptionShort = mb_substr($description, 0, mb_strpos($description, '[pagebreak]'));
320
        }
321
322
        // pour les vignettes "new" et "mis à jour"
323
324
        $new = $utility->getStatusImage($downloadsArray[$i]->getVar('date'), $downloadsArray[$i]->getVar('status'));
325
326
        $pop = $utility->getPopularImage($downloadsArray[$i]->getVar('hits'));
327
328
        // Défini si la personne est un admin
329
330
        $adminlink = '';
331
332
        if (is_object($xoopsUser) && $xoopsUser->isAdmin($xoopsModule->mid())) {
333
            $adminlink = '<a href="'
334
                         . XOOPS_URL
335
                         . '/modules/'
336
                         . $moduleDirName
337
                         . '/admin/downloads.php?op=view_downloads&amp;downloads_lid='
338
                         . $downloadsArray[$i]->getVar('lid')
339
                         . '" title="'
340
                         . _MD_TDMDOWNLOADS_EDITTHISDL
341
                         . '"><img src="'
342
                         . XOOPS_URL
343
                         . '/modules/'
344
                         . $moduleDirName
345
                         . '/assets/images/icons/16/edit.png" width="16px" height="16px" border="0" alt="'
346
                         . _MD_TDMDOWNLOADS_EDITTHISDL
347
                         . '"></a>';
348
        }
349
350
        //permission de télécharger
351
352
        $downloadPermission = true;
353
354
        if (1 === $helper->getConfig('permission_download')) {
355
            if (!in_array($downloadsArray[$i]->getVar('cid'), $categories)) {
356
                $downloadPermission = false;
357
            }
358
        } else {
359
            if (!in_array($downloadsArray[$i]->getVar('lid'), $item)) {
360
                $downloadPermission = false;
361
            }
362
        }
363
364
        $xoopsTpl->append(
365
            'file',
366
            [
367
                'id'                => $downloadsArray[$i]->getVar('lid'),
368
                'cid'               => $downloadsArray[$i]->getVar('cid'),
369
                'title'             => $downloadsArray[$i]->getVar('title'),
370
                'rating'            => $downloadsArray[$i]->getVar('rating'),
371
                'hits'              => $downloadsArray[$i]->getVar('hits'),
372
                'new'               => $new,
373
                'pop'               => $pop,
374
                'logourl'           => $logourl,
375
                'updated'           => $datetime,
376
                'description_short' => $descriptionShort,
377
                'adminlink'         => $adminlink,
378
                'submitter'         => $submitter,
379
                'perm_download'     => $downloadPermission,
380
                'count'             => $count,
381
            ]
382
        );
383
384
        //pour les mots clef
385
386
        $keywords .= $downloadsArray[$i]->getVar('title') . ',';
387
388
        ++$count;
389
    }
390
}
391
// référencement
392
//description
393
$xoTheme->addMeta('meta', 'description', strip_tags($xoopsModule->name()));
394
//keywords
395
$keywords = mb_substr($keywords, 0, -1);
396
$xoTheme->addMeta('meta', 'keywords', $keywords);
397
398
require XOOPS_ROOT_PATH . '/footer.php';
399