Passed
Pull Request — master (#81)
by Michael
02:51
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
$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, true)) {
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 = $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
    $xoopsTpl->assign('show_screenshot', true);
66
    $xoopsTpl->assign('img_float', $helper->getConfig('img_float'));
67
}
68
69
if ('ltr' === $helper->getConfig('download_float')) {
70
    $xoopsTpl->assign('textfloat', 'floatleft');
71
    $xoopsTpl->assign('infofloat', 'floatright');
72
} else {
73
    $xoopsTpl->assign('textfloat', 'floatright');
74
    $xoopsTpl->assign('infofloat', 'floatleft');
75
}
76
77
// sortie des informations
78
if ('blank.gif' === $viewDownloads->getVar('logourl')) {
79
    $logourl = '';
80
} else {
81
    $logourl = $viewDownloads->getVar('logourl');
82
    $logourl = $uploadurl_shots . $logourl;
83
}
84
// Défini si la personne est un admin
85
$adminlink = '';
86
if (is_object($xoopsUser) && $xoopsUser->isAdmin($xoopsModule->mid())) {
87
    $adminlink = '<a href="'
88
                 . XOOPS_URL
89
                 . '/modules/'
90
                 . $moduleDirName
91
                 . '/admin/downloads.php?op=view_downloads&amp;downloads_lid='
92
                 . \Xmf\Request::getInt('lid', 0, 'REQUEST')
93
                 . '" title="'
94
                 . _MD_TDMDOWNLOADS_EDITTHISDL
95
                 . '"><img src="'
96
                 . XOOPS_URL
97
                 . '/modules/'
98
                 . $moduleDirName
99
                 . '/assets/images/icons/16/edit.png" width="16px" height="16px" border="0" alt="'
100
                 . _MD_TDMDOWNLOADS_EDITTHISDL
101
                 . '"></a>';
102
}
103
104
$description = $viewDownloads->getVar('description');
105
$xoopsTpl->assign('description', str_replace('[pagebreak]', '', $description));
106
$xoopsTpl->assign('lid', $lid);
107
$xoopsTpl->assign('cid', $viewDownloads->getVar('cid'));
108
$xoopsTpl->assign('logourl', $logourl);
109
// pour les vignettes "new" et "mis à jour"
110
$new = $utility->getStatusImage($viewDownloads->getVar('date'), $viewDownloads->getVar('status'));
111
$pop = $utility->getPopularImage($viewDownloads->getVar('hits'));
112
$xoopsTpl->assign('title', $viewDownloads->getVar('title'));
113
$xoopsTpl->assign('new', $new);
114
$xoopsTpl->assign('pop', $pop);
115
$xoopsTpl->assign('adminlink', $adminlink);
116
$xoopsTpl->assign('date', formatTimestamp($viewDownloads->getVar('date'), 's'));
117
$xoopsTpl->assign('author', \XoopsUser::getUnameFromId($viewDownloads->getVar('submitter')));
118
$xoopsTpl->assign('hits', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_NBTELECH, $viewDownloads->getVar('hits')));
119
$xoopsTpl->assign('rating', number_format($viewDownloads->getVar('rating'), 1));
120
$xoopsTpl->assign('votes', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_VOTES, $viewDownloads->getVar('votes')));
121
$xoopsTpl->assign('nb_comments', sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_COMMENTS, $viewDownloads->getVar('comments')));
122
$xoopsTpl->assign('show_bookmark', $helper->getConfig('show_bookmark'));
123
$xoopsTpl->assign('show_social', $helper->getConfig('show_social'));
124
125
//paypal
126
$paypal = false;
127
if (true === $helper->getConfig('use_paypal') && '' !== $viewDownloads->getVar('paypal')) {
128
    $paypal = '<form name="_xclick" action="https://www.paypal.com/cgi-bin/webscr" method="post">
129
    <input type="hidden" name="cmd" value="_xclick">
130
    <input type="hidden" name="business" value="' . $viewDownloads->getVar('paypal') . '">
131
    <input type="hidden" name="item_name" value="' . sprintf(_MD_TDMDOWNLOADS_SINGLEFILE_PAYPAL, $viewDownloads->getVar('title')) . ' (' . \XoopsUser::getUnameFromId(!empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0) . ')">
132
    <input type="hidden" name="currency_code" value="' . $helper->getConfig('currency_paypal') . '">
133
    <input type="image" src="' . $helper->getConfig('image_paypal') . '" border="0" name="submit" alt="Make payments with PayPal - it\'s fast, free and secure!">
134
    </form>';
135
}
136
$xoopsTpl->assign('paypal', $paypal);
137
138
// pour les champs supplémentaires
139
$criteria = new \CriteriaCompo();
140
$criteria->setSort('weight ASC, title');
141
$criteria->setOrder('ASC');
142
$criteria->add(new \Criteria('status', 1));
143
/** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
144
$downloads_field = $fieldHandler->getAll($criteria);
145
$nb_champ        = count($downloads_field);
146
$champ_sup       = '';
147
$champ_sup_vide  = 0;
148
foreach (array_keys($downloads_field) as $i) {
149
    /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
150
    if (1 == $downloads_field[$i]->getVar('status_def')) {
151
        if (1 == $downloads_field[$i]->getVar('fid')) {
152
            //page d'accueil
153
            if ('' != $viewDownloads->getVar('homepage')) {
154
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMHOMEPAGE . ':&nbsp;<a href="' . $viewDownloads->getVar('homepage') . '">' . _MD_TDMDOWNLOADS_SINGLEFILE_ICI . '</a>';
155
                ++$champ_sup_vide;
156
            }
157
        }
158
        if (2 == $downloads_field[$i]->getVar('fid')) {
159
            //version
160
            if ('' != $viewDownloads->getVar('version')) {
161
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMVERSION . ':&nbsp;' . $viewDownloads->getVar('version');
162
                ++$champ_sup_vide;
163
            }
164
        }
165
        if (3 == $downloads_field[$i]->getVar('fid')) {
166
            //taille du fichier
167
            $size_value_arr = explode(' ', $viewDownloads->getVar('size'));
168
            if ('' != $size_value_arr[0]) {
169
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMSIZE . ':&nbsp;' . $utility::SizeConvertString($viewDownloads->getVar('size'));
170
                ++$champ_sup_vide;
171
            }
172
        }
173
        if (4 == $downloads_field[$i]->getVar('fid')) {
174
            //plateforme
175
            if ('' != $viewDownloads->getVar('platform')) {
176
                $champ_sup = '&nbsp;' . _AM_TDMDOWNLOADS_FORMPLATFORM . $viewDownloads->getVar('platform');
177
                ++$champ_sup_vide;
178
            }
179
        }
180
    } else {
181
        $view_data = $fielddataHandler->get();
182
        $criteria  = new \CriteriaCompo();
183
        $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('lid', 0, 'REQUEST')));
184
        $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

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