Passed
Pull Request — master (#88)
by Michael
05:18 queued 01:48
created

singlefile.php (1 issue)

Labels
Severity
1
<?php declare(strict_types=1);
2
3
use XoopsModules\Tag\Tag;
4
5
/**
6
 * TDMDownload
7
 *
8
 * You may not change or alter any portion of this comment or credits
9
 * of supporting developers from this source code or any supporting source code
10
 * which is considered copyrighted (c) material of the original comment or credit authors.
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14
 *
15
 * @copyright   Gregory Mage (Aka Mage)
16
 * @license     GNU GPL 2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
17
 * @author      Gregory Mage (Aka Mage)
18
 */
19
require_once __DIR__ . '/header.php';
20
21
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
22
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
23
24
$moduleDirName = basename(__DIR__);
25
// template d'affichage
26
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_singlefile.tpl';
27
require_once XOOPS_ROOT_PATH . '/header.php';
28
/** @var \xos_opal_Theme $xoTheme */
29
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/styles.css', null);
30
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/blocks.css', null);
31
32
$lid = \Xmf\Request::getInt('lid', 0, 'REQUEST');
33
34
//information du téléchargement
35
$viewDownloads = $downloadsHandler->get($lid);
36
37
// redirection si le téléchargement n'existe pas ou n'est pas activé
38
if ((is_array($viewDownloads) && 0 == count($viewDownloads)) || 0 == $viewDownloads->getVar('status')) {
39
    redirect_header('index.php', 3, _MD_TDMDOWNLOADS_SINGLEFILE_NONEXISTENT);
40
}
41
42
// pour les permissions
43
$categories = $utility->getItemIds('tdmdownloads_view', $moduleDirName);
44
if (!in_array($viewDownloads->getVar('cid'), $categories)) {
45
    redirect_header(XOOPS_URL, 2, _NOPERM);
46
}
47
48
//tableau des catégories
49
$criteria = new \CriteriaCompo();
50
$criteria->setSort('cat_weight ASC, cat_title');
51
$criteria->setOrder('ASC');
52
$criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
53
$downloadscatArray = $categoryHandler->getAll($criteria);
54
$mytree            = new \XoopsModules\Tdmdownloads\Tree($downloadscatArray, 'cat_cid', 'cat_pid');
55
56
//navigation
57
$navigation = $utility->getPathTreeUrl($mytree, $viewDownloads->getVar('cid'), $downloadscatArray, 'cat_title', $prefix = ' <img src="assets/images/deco/arrow.gif" alt="arrow"> ', true, 'ASC', true);
58
$navigation .= ' <img src="assets/images/deco/arrow.gif" alt="arrow"> ' . $viewDownloads->getVar('title');
59
$xoopsTpl->assign('navigation', $navigation);
60
61
// sortie des informations
62
//Utilisation d'une copie d'écran avec la largeur selon les préférences
63
if (1 == $helper->getConfig('useshots')) {
64
    $xoopsTpl->assign('shotwidth', $helper->getConfig('shotwidth'));
65
66
    $xoopsTpl->assign('show_screenshot', true);
67
68
    $xoopsTpl->assign('img_float', $helper->getConfig('img_float'));
69
}
70
71
if ('ltr' === $helper->getConfig('download_float')) {
72
    $xoopsTpl->assign('textfloat', 'floatleft');
73
74
    $xoopsTpl->assign('infofloat', 'floatright');
75
} else {
76
    $xoopsTpl->assign('textfloat', 'floatright');
77
78
    $xoopsTpl->assign('infofloat', 'floatleft');
79
}
80
81
// sortie des informations
82
if ('blank.gif' === $viewDownloads->getVar('logourl')) {
83
    $logourl = '';
84
} else {
85
    $logourl = $viewDownloads->getVar('logourl');
86
87
    $logourl = $uploadurl_shots . $logourl;
88
}
89
// Défini si la personne est un admin
90
$adminlink = '';
91
if (is_object($xoopsUser) && $xoopsUser->isAdmin($xoopsModule->mid())) {
92
    $adminlink = '<a href="'
93
                 . XOOPS_URL
94
                 . '/modules/'
95
                 . $moduleDirName
96
                 . '/admin/downloads.php?op=view_downloads&amp;downloads_lid='
97
                 . \Xmf\Request::getInt('lid', 0, 'REQUEST')
98
                 . '" title="'
99
                 . _MD_TDMDOWNLOADS_EDITTHISDL
100
                 . '"><img src="'
101
                 . XOOPS_URL
102
                 . '/modules/'
103
                 . $moduleDirName
104
                 . '/assets/images/icons/16/edit.png" width="16px" height="16px" border="0" alt="'
105
                 . _MD_TDMDOWNLOADS_EDITTHISDL
106
                 . '"></a>';
107
}
108
109
$description = $viewDownloads->getVar('description');
110
$xoopsTpl->assign('description', str_replace('[pagebreak]', '', $description));
111
$xoopsTpl->assign('lid', $lid);
112
$xoopsTpl->assign('cid', $viewDownloads->getVar('cid'));
113
$xoopsTpl->assign('logourl', $logourl);
114
// pour les vignettes "new" et "mis à jour"
115
$new = $utility->getStatusImage($viewDownloads->getVar('date'), $viewDownloads->getVar('status'));
116
$pop = $utility->getPopularImage($viewDownloads->getVar('hits'));
117
$xoopsTpl->assign('title', $viewDownloads->getVar('title'));
118
$xoopsTpl->assign('new', $new);
119
$xoopsTpl->assign('pop', $pop);
120
$xoopsTpl->assign('adminlink', $adminlink);
121
$xoopsTpl->assign('date', formatTimestamp($viewDownloads->getVar('date'), 's'));
122
$xoopsTpl->assign('author', \XoopsUser::getUnameFromId($viewDownloads->getVar('submitter')));
123
$xoopsTpl->assign('hits', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_NBTELECH, $viewDownloads->getVar('hits')));
124
$xoopsTpl->assign('rating', number_format((float)$viewDownloads->getVar('rating'), 1));
125
$xoopsTpl->assign('votes', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_VOTES, $viewDownloads->getVar('votes')));
126
$xoopsTpl->assign('nb_comments', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_COMMENTS, $viewDownloads->getVar('comments')));
127
$xoopsTpl->assign('show_bookmark', $helper->getConfig('show_bookmark'));
128
$xoopsTpl->assign('show_social', $helper->getConfig('show_social'));
129
130
//paypal
131
$paypal = false;
132
if (true === $helper->getConfig('use_paypal') && '' !== $viewDownloads->getVar('paypal')) {
133
    $paypal = '<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
134
    <input type="hidden" name="cmd" value="_xclick">
135
    <input type="hidden" name="business" value="' . $viewDownloads->getVar('paypal') . '">
136
    <input type="hidden" name="item_name" value="' . sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_PAYPAL, $viewDownloads->getVar('title')) . ' (' . \XoopsUser::getUnameFromId(!empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0) . ')">
137
    <input type="hidden" name="currency_code" value="' . $helper->getConfig('currency_paypal') . '">
138
    <input type="image" src="' . $helper->getConfig('image_paypal') . '" border="0" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure!">
139
    </form>';
140
}
141
$xoopsTpl->assign('paypal', $paypal);
142
143
/**
144
 * @param $k
145
 * @return string
146
 */
147
function getXfieldKey($k)
148
{
149
    return mb_strtolower(
150
        str_replace(
151
            ['Ü', 'ü', 'Ş', 'ş', 'I', 'ı', 'Ç', 'ç', 'Ğ', 'ğ', 'Ö', 'ö'],
152
            ['u', 'u', 's', 's', 'i', 'i', 'c', 'c', 'g', 'g', 'o', 'o'],
153
            $k
154
        )
155
    );
156
}
157
158
// pour les champs supplémentaires
159
$criteria = new \CriteriaCompo();
160
$criteria->setSort('weight ASC, title');
161
$criteria->setOrder('ASC');
162
$criteria->add(new \Criteria('status', 1));
163
/** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
164
$downloads_field = $fieldHandler->getAll($criteria);
165
$nb_champ        = count($downloads_field);
166
$champ_sup       = '';
167
$champ_sup_vide  = 0;
168
$xfields         = [];
169
foreach (array_keys($downloads_field) as $i) {
170
    /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
171
172
    if (1 == $downloads_field[$i]->getVar('status_def')) {
173
        if (1 == $downloads_field[$i]->getVar('fid')) {
174
            //page d'accueil
175
176
            if ('' != $viewDownloads->getVar('homepage')) {
177
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMHOMEPAGE . ':&nbsp;<a href="' . $viewDownloads->getVar('homepage') . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_ICI . '</a>';
178
179
                ++$champ_sup_vide;
180
181
                $xfields['homepage'] = $champ_sup;
182
            }
183
        }
184
185
        if (2 == $downloads_field[$i]->getVar('fid')) {
186
            //version
187
188
            if ('' != $viewDownloads->getVar('version')) {
189
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMVERSION . ':&nbsp;' . $viewDownloads->getVar('version');
190
191
                ++$champ_sup_vide;
192
193
                $xfields['version'] = $champ_sup;
194
            }
195
        }
196
197
        if (3 == $downloads_field[$i]->getVar('fid')) {
198
            //taille du fichier
199
200
            $size_value_arr = explode(' ', $viewDownloads->getVar('size'));
201
202
            if ('' != $size_value_arr[0]) {
203
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMSIZE . ':&nbsp;' . $utility::convertSizeToString($viewDownloads->getVar('size'));
204
205
                ++$champ_sup_vide;
206
207
                $xfields['size'] = $champ_sup;
208
            }
209
        }
210
211
        if (4 == $downloads_field[$i]->getVar('fid')) {
212
            //plateforme
213
214
            if ('' != $viewDownloads->getVar('platform')) {
215
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMPLATFORM . $viewDownloads->getVar('platform');
216
217
                ++$champ_sup_vide;
218
219
                $xfields['platform'] = $champ_sup;
220
            }
221
        }
222
    } else {
223
        $view_data = $fielddataHandler->get();
224
225
        $criteria = new \CriteriaCompo();
226
227
        $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('lid', 0, 'REQUEST')));
228
229
        $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

229
        $criteria->add(new \Criteria('fid', /** @scrutinizer ignore-type */ $downloads_field[$i]->getVar('fid')));
Loading history...
230
231
        $downloadsfielddata = $fielddataHandler->getAll($criteria);
232
233
        $contenu = '';
234
235
        foreach (array_keys($downloadsfielddata) as $j) {
236
            /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
237
238
            $contenu = $downloadsfielddata[$j]->getVar('data', 'n');
239
        }
240
241
        if ('' != $contenu) {
242
            $champ_sup = '&nbsp;' . $downloads_field[$i]->getVar('title') . ':&nbsp;' . $contenu;
243
244
            ++$champ_sup_vide;
245
246
            $xfieldKey = getXfieldKey($downloads_field[$i]->getVar('title'));
247
248
            $xfields[$xfieldKey] = $contenu;
249
        }
250
    }
251
252
    if ('' != $champ_sup) {
253
        $xoopsTpl->append(
254
            'champ_sup',
255
            [
256
                'image' => $uploadurl_field . $downloads_field[$i]->getVar('img'),
257
                'data'  => $champ_sup,
258
            ]
259
        );
260
    }
261
262
    $champ_sup = '';
263
}
264
265
$xoopsTpl->assign('xfields', $xfields);
266
if ($nb_champ > 0 && $champ_sup_vide > 0) {
267
    $xoopsTpl->assign('sup_aff', true);
268
} else {
269
    $xoopsTpl->assign('sup_aff', false);
270
}
271
//permission
272
$xoopsTpl->assign('perm_vote', $perm_vote);
273
$xoopsTpl->assign('perm_modif', $perm_modif);
274
$categories = $utility->getItemIds('tdmdownloads_download', $moduleDirName);
275
$item       = $utility->getItemIds('tdmdownloads_download_item', $moduleDirName);
276
if (1 == $helper->getConfig('permission_download')) {
277
    if (!in_array($viewDownloads->getVar('cid'), $categories)) {
278
        $xoopsTpl->assign('perm_download', false);
279
    } else {
280
        $xoopsTpl->assign('perm_download', true);
281
    }
282
} else {
283
    if (!in_array($viewDownloads->getVar('lid'), $item)) {
284
        $xoopsTpl->assign('perm_download', false);
285
    } else {
286
        $xoopsTpl->assign('perm_download', true);
287
    }
288
}
289
290
// pour utiliser tellafriend.
291
if (1 == $helper->getConfig('usetellafriend') && is_dir('../tellafriend')) {
292
    $string = sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename'] . ':  ' . XOOPS_URL . '/modules/' . $moduleDirName . '/singlefile.php?lid=' . \Xmf\Request::getInt('lid', 0, 'REQUEST'));
293
294
    $subject = sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename']);
295
296
    if (false !== mb_strpos($subject, '%')) {
297
        $subject = rawurldecode($subject);
298
    }
299
300
    if (false !== mb_stripos($string, '%3F')) {
301
        $string = rawurldecode($string);
302
    }
303
304
    if (preg_match('/(' . preg_quote(XOOPS_URL, '/') . '.*)$/i', $string, $matches)) {
305
        $targetUri = str_replace('&amp;', '&', $matches[1]);
306
    } else {
307
        $targetUri = XOOPS_URL . $_SERVER['REQUEST_URI'];
308
    }
309
310
    $tellafriendText = '<a target="_top" href="' . XOOPS_URL . '/modules/tellafriend/index.php?target_uri=' . rawurlencode($targetUri) . '&amp;subject=' . rawurlencode($subject) . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_TELLAFRIEND . '</a>';
311
} else {
312
    $tellafriendText = '<a target="_top" href="mailto:?subject=' . rawurlencode(sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename'])) . '&amp;body=' . rawurlencode(
313
            sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename']) . ':  ' . XOOPS_URL . '/modules/' . $moduleDirName . '/singlefile.php?lid=' . \Xmf\Request::getInt('lid', 0, 'REQUEST')
314
        ) . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_TELLAFRIEND . '</a>';
315
}
316
$xoopsTpl->assign('tellafriend_texte', $tellafriendText);
317
318
// référencement
319
// tags
320
if (1 == $helper->getConfig('usetag') && class_exists(Tag::class)) {
321
    require_once XOOPS_ROOT_PATH . '/modules/tag/include/tagbar.php';
322
323
    $xoopsTpl->assign('tags', true);
324
325
    $xoopsTpl->assign('tagbar', tagBar(\Xmf\Request::getInt('lid', 0, 'REQUEST'), 0));
326
} else {
327
    $xoopsTpl->assign('tags', false);
328
}
329
330
// titre de la page
331
$pagetitle = $viewDownloads->getVar('title') . ' - ';
332
$pagetitle .= $utility->getPathTreeUrl($mytree, $viewDownloads->getVar('cid'), $downloadscatArray, 'cat_title', $prefix = ' - ', false, 'DESC', true);
333
$xoopsTpl->assign('xoops_pagetitle', $pagetitle);
334
//version for title
335
$xoopsTpl->assign('version', $viewDownloads->getVar('version'));
336
//description
337
if (false === mb_strpos($description, '[pagebreak]')) {
338
    $descriptionShort = mb_substr($description, 0, 400);
339
} else {
340
    $descriptionShort = mb_substr($description, 0, mb_strpos($description, '[pagebreak]'));
341
}
342
$xoTheme->addMeta('meta', 'description', strip_tags($descriptionShort));
343
//keywords
344
$keywords = \Xmf\Metagen::generateKeywords($viewDownloads->getVar('description'), 10);
345
$xoTheme->addMeta('meta', 'keywords', implode(', ', $keywords));
346
/*$keywords = substr($keywords,0,-1);
347
$xoTheme->addMeta( 'meta', 'keywords', $keywords);*/
348
require XOOPS_ROOT_PATH . '/include/comment_view.php';
349
require XOOPS_ROOT_PATH . '/footer.php';
350