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

singlefile.php (1 issue)

Labels
Severity
1
<?php
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 (http://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
31
$lid = \Xmf\Request::getInt('lid', 0, 'REQUEST');
32
33
//information du téléchargement
34
$viewDownloads = $downloadsHandler->get($lid);
35
36
// redirection si le téléchargement n'existe pas ou n'est pas activé
37
if ((is_array($viewDownloads) && 0 == count($viewDownloads)) || 0 == $viewDownloads->getVar('status')) {
38
    redirect_header('index.php', 3, _MD_TDMDOWNLOADS_SINGLEFILE_NONEXISTENT);
39
}
40
41
// pour les permissions
42
$categories = $utility->getItemIds('tdmdownloads_view', $moduleDirName);
43
if (!in_array($viewDownloads->getVar('cid'), $categories, true)) {
44
    redirect_header(XOOPS_URL, 2, _NOPERM);
45
}
46
47
//tableau des catégories
48
$criteria = new \CriteriaCompo();
49
$criteria->setSort('cat_weight ASC, cat_title');
50
$criteria->setOrder('ASC');
51
$criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
52
$downloadscatArray = $categoryHandler->getAll($criteria);
53
$mytree            = new \XoopsModules\Tdmdownloads\Tree($downloadscatArray, 'cat_cid', 'cat_pid');
54
55
//navigation
56
$navigation = $utility->getPathTreeUrl($mytree, $viewDownloads->getVar('cid'), $downloadscatArray, 'cat_title', $prefix = ' <img src="assets/images/deco/arrow.gif" alt="arrow"> ', true, 'ASC', true);
57
$navigation = $navigation . ' <img src="assets/images/deco/arrow.gif" alt="arrow"> ' . $viewDownloads->getVar('title');
58
$xoopsTpl->assign('navigation', $navigation);
59
60
// sortie des informations
61
//Utilisation d'une copie d'écran avec la largeur selon les préférences
62
if (1 == $helper->getConfig('useshots')) {
63
    $xoopsTpl->assign('shotwidth', $helper->getConfig('shotwidth'));
64
    $xoopsTpl->assign('show_screenshot', true);
65
    $xoopsTpl->assign('img_float', $helper->getConfig('img_float'));
66
}
67
68
if ('ltr' === $helper->getConfig('download_float')) {
69
    $xoopsTpl->assign('textfloat', 'floatleft');
70
    $xoopsTpl->assign('infofloat', 'floatright');
71
} else {
72
    $xoopsTpl->assign('textfloat', 'floatright');
73
    $xoopsTpl->assign('infofloat', 'floatleft');
74
}
75
76
// sortie des informations
77
if ('blank.gif' === $viewDownloads->getVar('logourl')) {
78
    $logourl = '';
79
} else {
80
    $logourl = $viewDownloads->getVar('logourl');
81
    $logourl = $uploadurl_shots . $logourl;
82
}
83
// Défini si la personne est un admin
84
$adminlink = '';
85
if (is_object($xoopsUser) && $xoopsUser->isAdmin($xoopsModule->mid())) {
86
    $adminlink = '<a href="'
87
                 . XOOPS_URL
88
                 . '/modules/'
89
                 . $moduleDirName
90
                 . '/admin/downloads.php?op=view_downloads&amp;downloads_lid='
91
                 . \Xmf\Request::getInt('lid', 0, 'REQUEST')
92
                 . '" title="'
93
                 . _MD_TDMDOWNLOADS_EDITTHISDL
94
                 . '"><img src="'
95
                 . XOOPS_URL
96
                 . '/modules/'
97
                 . $moduleDirName
98
                 . '/assets/images/icon/edit.png" width="16px" height="16px" border="0" alt="'
99
                 . _MD_TDMDOWNLOADS_EDITTHISDL
100
                 . '"></a>';
101
}
102
103
$description = $viewDownloads->getVar('description');
104
$xoopsTpl->assign('description', str_replace('[pagebreak]', '', $description));
105
$xoopsTpl->assign('lid', $lid);
106
$xoopsTpl->assign('cid', $viewDownloads->getVar('cid'));
107
$xoopsTpl->assign('logourl', $logourl);
108
// pour les vignettes "new" et "mis à jour"
109
$new = $utility->getStatusImage($viewDownloads->getVar('date'), $viewDownloads->getVar('status'));
110
$pop = $utility->getPopularImage($viewDownloads->getVar('hits'));
111
$xoopsTpl->assign('title', $viewDownloads->getVar('title'));
112
$xoopsTpl->assign('new', $new);
113
$xoopsTpl->assign('pop', $pop);
114
$xoopsTpl->assign('adminlink', $adminlink);
115
$xoopsTpl->assign('date', formatTimestamp($viewDownloads->getVar('date'), 's'));
116
$xoopsTpl->assign('author', \XoopsUser::getUnameFromId($viewDownloads->getVar('submitter')));
117
$xoopsTpl->assign('hits', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_NBTELECH, $viewDownloads->getVar('hits')));
118
$xoopsTpl->assign('rating', number_format($viewDownloads->getVar('rating'), 1));
119
$xoopsTpl->assign('votes', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_VOTES, $viewDownloads->getVar('votes')));
120
$xoopsTpl->assign('nb_comments', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_COMMENTS, $viewDownloads->getVar('comments')));
121
$xoopsTpl->assign('show_bookmark', $helper->getConfig('show_bookmark'));
122
$xoopsTpl->assign('show_social', $helper->getConfig('show_social'));
123
124
//paypal
125
$paypal = false;
126
if (true === $helper->getConfig('use_paypal') && '' !== $viewDownloads->getVar('paypal')) {
127
    $paypal = '<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
128
    <input type="hidden" name="cmd" value="_xclick">
129
    <input type="hidden" name="business" value="' . $viewDownloads->getVar('paypal') . '">
130
    <input type="hidden" name="item_name" value="' . sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_PAYPAL, $viewDownloads->getVar('title')) . ' (' . \XoopsUser::getUnameFromId(!empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0) . ')">
131
    <input type="hidden" name="currency_code" value="' . $helper->getConfig('currency_paypal') . '">
132
    <input type="image" src="' . $helper->getConfig('image_paypal') . '" border="0" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure!">
133
    </form>';
134
}
135
$xoopsTpl->assign('paypal', $paypal);
136
137
// pour les champs supplémentaires
138
$criteria = new \CriteriaCompo();
139
$criteria->setSort('weight ASC, title');
140
$criteria->setOrder('ASC');
141
$criteria->add(new \Criteria('status', 1));
142
/** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
143
$downloads_field = $fieldHandler->getAll($criteria);
144
$nb_champ        = count($downloads_field);
145
$champ_sup       = '';
146
$champ_sup_vide  = 0;
147
foreach (array_keys($downloads_field) as $i) {
148
    /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
149
    if (1 == $downloads_field[$i]->getVar('status_def')) {
150
        if (1 == $downloads_field[$i]->getVar('fid')) {
151
            //page d'accueil
152
            if ('' != $viewDownloads->getVar('homepage')) {
153
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMHOMEPAGE . ':&nbsp;<a href="' . $viewDownloads->getVar('homepage') . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_ICI . '</a>';
154
                ++$champ_sup_vide;
155
            }
156
        }
157
        if (2 == $downloads_field[$i]->getVar('fid')) {
158
            //version
159
            if ('' != $viewDownloads->getVar('version')) {
160
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMVERSION . ':&nbsp;' . $viewDownloads->getVar('version');
161
                ++$champ_sup_vide;
162
            }
163
        }
164
        if (3 == $downloads_field[$i]->getVar('fid')) {
165
            //taille du fichier
166
            $size_value_arr = explode(' ', $viewDownloads->getVar('size'));
167
            if ('' != $size_value_arr[0]) {
168
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMSIZE . ':&nbsp;' . $viewDownloads->getVar('size');
169
                ++$champ_sup_vide;
170
            }
171
        }
172
        if (4 == $downloads_field[$i]->getVar('fid')) {
173
            //plateforme
174
            if ('' != $viewDownloads->getVar('platform')) {
175
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMPLATFORM . $viewDownloads->getVar('platform');
176
                ++$champ_sup_vide;
177
            }
178
        }
179
    } else {
180
        $view_data = $fielddataHandler->get();
181
        $criteria  = new \CriteriaCompo();
182
        $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('lid', 0, 'REQUEST')));
183
        $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

183
        $criteria->add(new \Criteria('fid', /** @scrutinizer ignore-type */ $downloads_field[$i]->getVar('fid')));
Loading history...
184
        $downloadsfielddata = $fielddataHandler->getAll($criteria);
185
        $contenu            = '';
186
        foreach (array_keys($downloadsfielddata) as $j) {
187
            /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
188
            $contenu = $downloadsfielddata[$j]->getVar('data', 'n');
189
        }
190
        if ('' != $contenu) {
191
            $champ_sup = '&nbsp;' . $downloads_field[$i]->getVar('title') . ':&nbsp;' . $contenu;
192
            ++$champ_sup_vide;
193
        }
194
    }
195
    if ('' != $champ_sup) {
196
        $xoopsTpl->append('champ_sup', [
197
            'image' => $uploadurl_field . $downloads_field[$i]->getVar('img'),
198
            'data'  => $champ_sup,
199
        ]);
200
    }
201
    $champ_sup = '';
202
}
203
if ($nb_champ > 0 && $champ_sup_vide > 0) {
204
    $xoopsTpl->assign('sup_aff', true);
205
} else {
206
    $xoopsTpl->assign('sup_aff', false);
207
}
208
//permission
209
$xoopsTpl->assign('perm_vote', $perm_vote);
210
$xoopsTpl->assign('perm_modif', $perm_modif);
211
$categories = $utility->getItemIds('tdmdownloads_download', $moduleDirName);
212
$item       = $utility->getItemIds('tdmdownloads_download_item', $moduleDirName);
213
if (1 == $helper->getConfig('permission_download')) {
214
    if (!in_array($viewDownloads->getVar('cid'), $categories, true)) {
215
        $xoopsTpl->assign('perm_download', false);
216
    } else {
217
        $xoopsTpl->assign('perm_download', true);
218
    }
219
} else {
220
    if (!in_array($viewDownloads->getVar('lid'), $item, true)) {
221
        $xoopsTpl->assign('perm_download', false);
222
    } else {
223
        $xoopsTpl->assign('perm_download', true);
224
    }
225
}
226
227
// pour utiliser tellafriend.
228
if ((1 == $helper->getConfig('usetellafriend')) && is_dir('../tellafriend')) {
229
    $string  = sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename'] . ':  ' . XOOPS_URL . '/modules/' . $moduleDirName . '/singlefile.php?lid=' . \Xmf\Request::getInt('lid', 0, 'REQUEST'));
230
    $subject = sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename']);
231
    if (false !== mb_strpos($subject, '%')) {
232
        $subject = rawurldecode($subject);
233
    }
234
    if (false !== mb_stripos($string, '%3F')) {
235
        $string = rawurldecode($string);
236
    }
237
    if (preg_match('/(' . preg_quote(XOOPS_URL, '/') . '.*)$/i', $string, $matches)) {
238
        $targetUri = str_replace('&amp;', '&', $matches[1]);
239
    } else {
240
        $targetUri = XOOPS_URL . $_SERVER['REQUEST_URI'];
241
    }
242
    $tellafriendText = '<a target="_top" href="' . XOOPS_URL . '/modules/tellafriend/index.php?target_uri=' . rawurlencode($targetUri) . '&amp;subject=' . rawurlencode($subject) . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_TELLAFRIEND . '</a>';
243
} else {
244
    $tellafriendText = '<a target="_top" href="mailto:?subject=' . rawurlencode(sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename'])) . '&amp;body=' . rawurlencode(sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_INTFILEFOUND, $xoopsConfig['sitename'])
245
                                                                                                                                                                                             . ':  '
246
                                                                                                                                                                                             . XOOPS_URL
247
                                                                                                                                                                                             . '/modules/'
248
                                                                                                                                                                                             . $moduleDirName
249
                                                                                                                                                                                             . '/singlefile.php?lid='
250
                                                                                                                                                                                             . \Xmf\Request::getInt('lid', 0, 'REQUEST')) . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_TELLAFRIEND . '</a>';
251
}
252
$xoopsTpl->assign('tellafriend_texte', $tellafriendText);
253
254
// référencement
255
// tags
256
if ((1 == $helper->getConfig('usetag')) && class_exists(Tag::class)) {
257
    require_once XOOPS_ROOT_PATH . '/modules/tag/include/tagbar.php';
258
    $xoopsTpl->assign('tags', true);
259
    $xoopsTpl->assign('tagbar', tagBar(\Xmf\Request::getInt('lid', 0, 'REQUEST'), 0));
260
} else {
261
    $xoopsTpl->assign('tags', false);
262
}
263
264
// titre de la page
265
$pagetitle = $viewDownloads->getVar('title') . ' - ';
266
$pagetitle .= $utility->getPathTreeUrl($mytree, $viewDownloads->getVar('cid'), $downloadscatArray, 'cat_title', $prefix = ' - ', false, 'DESC', true);
267
$xoopsTpl->assign('xoops_pagetitle', $pagetitle);
268
//version for title
269
$xoopsTpl->assign('version', $viewDownloads->getVar('version'));
270
//description
271
if (false === mb_strpos($description, '[pagebreak]')) {
272
    $descriptionShort = mb_substr($description, 0, 400);
273
} else {
274
    $descriptionShort = mb_substr($description, 0, mb_strpos($description, '[pagebreak]'));
275
}
276
$xoTheme->addMeta('meta', 'description', strip_tags($descriptionShort));
277
//keywords
278
$keywords = \Xmf\Metagen::generateKeywords($viewDownloads->getVar('description'), 10);
279
$xoTheme->addMeta('meta', 'keywords', implode(', ', $keywords));
280
/*$keywords = substr($keywords,0,-1);
281
$xoTheme->addMeta( 'meta', 'keywords', $keywords);*/
282
require XOOPS_ROOT_PATH . '/include/comment_view.php';
283
require XOOPS_ROOT_PATH . '/footer.php';
284