Passed
Pull Request — master (#8)
by Michael
02:44 queued 37s
created

index.php (3 issues)

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
17
use XoopsModules\Tdmdownloads;
18
use XoopsModules\Tdmdownloads\Tree;
19
20
require_once __DIR__ . '/header.php';
21
22
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
23
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
24
25
// template d'affichage
26
$moduleDirName                           = basename(__DIR__);
27
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_index.tpl';
28
require_once XOOPS_ROOT_PATH . '/header.php';
29
/** @var \xos_opal_Theme $xoTheme */
30
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/styles.css', null);
31
// pour les permissions
32
$categories = $utility->getItemIds('tdmdownloads_view', $moduleDirName);
33
34
//tableau des téléchargements
35
$criteria = new \CriteriaCompo();
36
$criteria->add(new \Criteria('status', 0, '!='));
37
$criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
38
$downloads_arr = $downloadsHandler->getAll($criteria);
39
$xoopsTpl->assign('lang_thereare', sprintf(_MD_TDMDOWNLOADS_INDEX_THEREARE, count($downloads_arr)));
40
41
//tableau des catégories
42
$criteria = new \CriteriaCompo();
43
$criteria->setSort('cat_weight ASC, cat_title');
44
$criteria->setOrder('ASC');
45
$criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
46
$downloadscatArray = $categoryHandler->getAll($criteria);
47
$mytree            = new \XoopsModules\Tdmdownloads\Tree($downloadscatArray, 'cat_cid', 'cat_pid');
48
49
//affichage des catégories
50
$xoopsTpl->assign('nb_catcol', $helper->getConfig('nb_catcol'));
51
$count    = 1;
52
$keywords = '';
53
foreach (array_keys($downloadscatArray) as $i) {
54
    if (0 === $downloadscatArray[$i]->getVar('cat_pid')) {
55
        $totaldownloads    = $utility->getNumbersOfEntries($mytree, $categories, $downloads_arr, $downloadscatArray[$i]->getVar('cat_cid'));
56
        $subcategories_arr = $mytree->getFirstChild($downloadscatArray[$i]->getVar('cat_cid'));
57
        $chcount           = 0;
58
        $subcategories     = '';
59
        //pour les mots clef
60
        $keywords .= $downloadscatArray[$i]->getVar('cat_title') . ',';
61
        foreach (array_keys($subcategories_arr) as $j) {
62
            if ($chcount >= $helper->getConfig('nbsouscat')) {
63
                $subcategories .= '<li>[<a href="' . XOOPS_URL . '/modules/' . $moduleDirName . '/viewcat.php?cid=' . $downloadscatArray[$i]->getVar('cat_cid') . '">+</a>]</li>';
64
                break;
65
            }
66
            $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>';
67
            $keywords      .= $downloadscatArray[$i]->getVar('cat_title') . ',';
68
            ++$chcount;
69
        }
70
        $xoopsTpl->append('categories', [
71
            'image'            => $uploadurl . $downloadscatArray[$i]->getVar('cat_imgurl'),
72
            'id'               => $downloadscatArray[$i]->getVar('cat_cid'),
73
            'title'            => $downloadscatArray[$i]->getVar('cat_title'),
74
            'description_main' => $downloadscatArray[$i]->getVar('cat_description_main'),
75
            'subcategories'    => $subcategories,
76
            'totaldownloads'   => $totaldownloads,
77
            'count'            => $count,
78
        ]);
79
        ++$count;
80
    }
81
}
82
83
//pour afficher les résumés
84
//----------------------------------------------------------------------------------------------------------------------------------------------------
85
//téléchargements récents
86
if (1 == $helper->getConfig('bldate')) {
87
    $criteria = new \CriteriaCompo();
88
    $criteria->add(new \Criteria('status', 0, '!='));
89
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
90
    $criteria->setSort('date');
91
    $criteria->setOrder('DESC');
92
    $criteria->setLimit($helper->getConfig('nbbl'));
93
    $downloads_arr_date = $downloadsHandler->getAll($criteria);
94
    foreach (array_keys($downloads_arr_date) as $i) {
95
        $title = $downloads_arr_date[$i]->getVar('title');
96
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
97
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
98
        }
99
        $date = formatTimestamp($downloads_arr_date[$i]->getVar('date'), 's');
100
        $xoopsTpl->append('bl_date', [
101
            'id'    => $downloads_arr_date[$i]->getVar('lid'),
102
            'cid'   => $downloads_arr_date[$i]->getVar('cid'),
103
            'date'  => $date,
104
            'title' => $title,
105
        ]);
106
    }
107
}
108
//plus téléchargés
109
if (1 == $helper->getConfig('blpop')) {
110
    $criteria = new \CriteriaCompo();
111
    $criteria->add(new \Criteria('status', 0, '!='));
112
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
113
    $criteria->setSort('hits');
114
    $criteria->setOrder('DESC');
115
    $criteria->setLimit($helper->getConfig('nbbl'));
116
    $downloads_arr_hits = $downloadsHandler->getAll($criteria);
117
    foreach (array_keys($downloads_arr_hits) as $i) {
118
        $title = $downloads_arr_hits[$i]->getVar('title');
119
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
120
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
121
        }
122
        $xoopsTpl->append('bl_pop', [
123
            'id'    => $downloads_arr_hits[$i]->getVar('lid'),
124
            'cid'   => $downloads_arr_hits[$i]->getVar('cid'),
125
            'hits'  => $downloads_arr_hits[$i]->getVar('hits'),
126
            'title' => $title,
127
        ]);
128
    }
129
}
130
//mieux notés
131
if (1 == $helper->getConfig('blrating')) {
132
    $criteria = new \CriteriaCompo();
133
    $criteria->add(new \Criteria('status', 0, '!='));
134
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
135
    $criteria->setSort('rating');
136
    $criteria->setOrder('DESC');
137
    $criteria->setLimit($helper->getConfig('nbbl'));
138
    $downloads_arr_rating = $downloadsHandler->getAll($criteria);
139
    foreach (array_keys($downloads_arr_rating) as $i) {
140
        $title = $downloads_arr_rating[$i]->getVar('title');
141
        if (mb_strlen($title) >= $helper->getConfig('longbl')) {
142
            $title = mb_substr($title, 0, $helper->getConfig('longbl')) . '...';
143
        }
144
        $rating = number_format($downloads_arr_rating[$i]->getVar('rating'), 1);
145
        $xoopsTpl->append('bl_rating', [
146
            'id'     => $downloads_arr_rating[$i]->getVar('lid'),
147
            'cid'    => $downloads_arr_rating[$i]->getVar('cid'),
148
            'rating' => $rating,
149
            'title'  => $title,
150
        ]);
151
    }
152
}
153
$bl_affichage = 1;
154
if (0 == $helper->getConfig('bldate') && 0 == $helper->getConfig('blpop') && 0 == $helper->getConfig('blrating')) {
0 ignored issues
show
Bug Best Practice introduced by
It seems like you are loosely comparing $helper->getConfig('bldate') of type mixed|null to 0; this is ambiguous as not only 0 == 0 is true, but null == 0 is true, too. Consider using a strict comparison ===.
Loading history...
Bug Best Practice introduced by
It seems like you are loosely comparing $helper->getConfig('blrating') of type mixed|null to 0; this is ambiguous as not only 0 == 0 is true, but null == 0 is true, too. Consider using a strict comparison ===.
Loading history...
Bug Best Practice introduced by
It seems like you are loosely comparing $helper->getConfig('blpop') of type mixed|null to 0; this is ambiguous as not only 0 == 0 is true, but null == 0 is true, too. Consider using a strict comparison ===.
Loading history...
155
    $bl_affichage = 0;
156
}
157
$xoopsTpl->assign('bl_affichage', $bl_affichage);
158
$xoopsTpl->assign('show_latest_files', $helper->getConfig('show_latest_files'));
159
160
//----------------------------------------------------------------------------------------------------------------------------------------------------
161
162
// affichage des téléchargements
163
if ($helper->getConfig('newdownloads') > 0) {
164
    $xoopsTpl->assign('nb_dowcol', $helper->getConfig('nb_dowcol'));
165
    //Utilisation d'une copie d'écran avec la largeur selon les préférences
166
    if (1 == $helper->getConfig('useshots')) {
167
        $xoopsTpl->assign('shotwidth', $helper->getConfig('shotwidth'));
168
        $xoopsTpl->assign('show_screenshot', true);
169
        $xoopsTpl->assign('img_float', $helper->getConfig('img_float'));
170
    }
171
    $criteria = new \CriteriaCompo();
172
    $criteria->add(new \Criteria('status', 0, '!='));
173
    $criteria->add(new \Criteria('cid', '(' . implode(',', $categories) . ')', 'IN'));
174
    $criteria->setLimit($helper->getConfig('newdownloads'));
175
    $tblsort     = [];
176
    $tblsort[1]  = 'date';
177
    $tblsort[2]  = 'date';
178
    $tblsort[3]  = 'hits';
179
    $tblsort[4]  = 'hits';
180
    $tblsort[5]  = 'rating';
181
    $tblsort[6]  = 'rating';
182
    $tblsort[7]  = 'title';
183
    $tblsort[8]  = 'title';
184
    $tblorder    = [];
185
    $tblorder[1] = 'DESC';
186
    $tblorder[2] = 'ASC';
187
    $tblorder[3] = 'DESC';
188
    $tblorder[4] = 'ASC';
189
    $tblorder[5] = 'DESC';
190
    $tblorder[6] = 'ASC';
191
    $tblorder[7] = 'DESC';
192
    $tblorder[8] = 'ASC';
193
    $sort        = null !== $helper->getConfig('toporder') ? $helper->getConfig('toporder') : 1;
194
    $order       = null !== $helper->getConfig('toporder') ? $helper->getConfig('toporder') : 1;
195
    $criteria->setSort($tblsort[$sort]);
196
    $criteria->setOrder($tblorder[$order]);
197
    $downloads_arr = $downloadsHandler->getAll($criteria);
198
    $categories    = $utility->getItemIds('tdmdownloads_download', $moduleDirName);
199
    $item          = $utility->getItemIds('tdmdownloads_download_item', $moduleDirName);
200
    $count         = 1;
201
    foreach (array_keys($downloads_arr) as $i) {
202
        if ('blank.gif' === $downloads_arr[$i]->getVar('logourl')) {
203
            $logourl = '';
204
        } else {
205
            $logourl = $downloads_arr[$i]->getVar('logourl');
206
            $logourl = $uploadurl_shots . $logourl;
207
        }
208
        $datetime    = formatTimestamp($downloads_arr[$i]->getVar('date'), 's');
209
        $submitter   = \XoopsUser::getUnameFromId($downloads_arr[$i]->getVar('submitter'));
210
        $description = $downloads_arr[$i]->getVar('description');
211
        //permet d'afficher uniquement la description courte
212
        if (false === mb_strpos($description, '[pagebreak]')) {
213
            $description_short = $description;
214
        } else {
215
            $description_short = mb_substr($description, 0, mb_strpos($description, '[pagebreak]'));
216
        }
217
        // pour les vignettes "new" et "mis à jour"
218
        $new = $utility->getStatusImage($downloads_arr[$i]->getVar('date'), $downloads_arr[$i]->getVar('status'));
219
        $pop = $utility->getPopularImage($downloads_arr[$i]->getVar('hits'));
220
221
        // Défini si la personne est un admin
222
        $adminlink = '';
223
        if (is_object($xoopsUser) && $xoopsUser->isAdmin($xoopsModule->mid())) {
224
            $adminlink = '<a href="'
225
                         . XOOPS_URL
226
                         . '/modules/'
227
                         . $moduleDirName
228
                         . '/admin/downloads.php?op=view_downloads&amp;downloads_lid='
229
                         . $downloads_arr[$i]->getVar('lid')
230
                         . '" title="'
231
                         . _MD_TDMDOWNLOADS_EDITTHISDL
232
                         . '"><img src="'
233
                         . XOOPS_URL
234
                         . '/modules/'
235
                         . $moduleDirName
236
                         . '/assets/images/icon/edit.png" width="16px" height="16px" border="0" alt="'
237
                         . _MD_TDMDOWNLOADS_EDITTHISDL
238
                         . '"></a>';
239
        }
240
        //permission de télécharger
241
242
        $perm_download = true;
243
        if (1 === $helper->getConfig('permission_download')) {
244
            if (!in_array($downloads_arr[$i]->getVar('cid'), $categories, true)) {
245
                $perm_download = false;
246
            }
247
        } else {
248
            if (!in_array($downloads_arr[$i]->getVar('lid'), $item, true)) {
249
                $perm_download = false;
250
            }
251
        }
252
        $xoopsTpl->append('file', [
253
            'id'                => $downloads_arr[$i]->getVar('lid'),
254
            'cid'               => $downloads_arr[$i]->getVar('cid'),
255
            'title'             => $downloads_arr[$i]->getVar('title'),
256
            'new'               => $new,
257
            'pop'               => $pop,
258
            'logourl'           => $logourl,
259
            'updated'           => $datetime,
260
            'description_short' => $description_short,
261
            'adminlink'         => $adminlink,
262
            'submitter'         => $submitter,
263
            'perm_download'     => $perm_download,
264
            'count'             => $count,
265
        ]);
266
        //pour les mots clef
267
        $keywords .= $downloads_arr[$i]->getVar('title') . ',';
268
        ++$count;
269
    }
270
}
271
// référencement
272
//description
273
$xoTheme->addMeta('meta', 'description', strip_tags($xoopsModule->name()));
274
//keywords
275
$keywords = mb_substr($keywords, 0, -1);
276
$xoTheme->addMeta('meta', 'keywords', $keywords);
277
278
require XOOPS_ROOT_PATH . '/footer.php';
279