Passed
Push — master ( 0dbed9...b8aee2 )
by Goffy
45s queued 10s
created

admin/modified.php (2 issues)

Labels
Severity
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
require __DIR__ . '/admin_header.php';
17
18
// Template
19
$templateMain = 'tdmdownloads_admin_modified.tpl';
20
21
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
22
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
23
24
//On recupere la valeur de l'argument op dans l'URL$
25
$op = \Xmf\Request::getString('op', 'list');
26
27
xoops_cp_header();
28
29
//Les valeurs de op qui vont permettre d'aller dans les differentes parties de la page
30
switch ($op) {
31
    // show list
32
    case 'list':
33
        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
34
35
        $criteria = new \CriteriaCompo();
36
        if (\Xmf\Request::hasVar('limit', 'REQUEST')) {
37
            $criteria->setLimit(\Xmf\Request::getInt('limit', 0, 'REQUEST'));
38
            $limit = \Xmf\Request::getInt('limit', 0, 'REQUEST');
39
        } else {
40
            $criteria->setLimit($helper->getConfig('perpageadmin'));
41
            $limit = $helper->getConfig('perpageadmin');
42
        }
43
        if (\Xmf\Request::hasVar('start', 'REQUEST')) {
44
            $criteria->setStart(\Xmf\Request::getInt('start', 0, 'REQUEST'));
45
            $start = \Xmf\Request::getInt('start', 0, 'REQUEST');
46
        } else {
47
            $criteria->setStart(0);
48
            $start = 0;
49
        }
50
        $criteria->setSort('requestid');
51
        $criteria->setOrder('ASC');
52
        $downloadsmod_arr = $modifiedHandler->getAll($criteria);
53
        //        $numrows          = $modifiedHandler->getCount($criteria);
54
        $numrows = $modifiedHandler->getCount(); //Ggoffy
55
        if ($numrows > $limit) {
56
            $pagenav = new \XoopsPageNav($numrows, $limit, $start, 'start', 'op=liste&limit=' . $limit);
57
            $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
58
        } else {
59
            $pagenav = '';
60
        }
61
        //Affichage du tableau des téléchargements modifiés
62
        if ($numrows > 0) {
63
            $GLOBALS['xoopsTpl']->assign('modified_count', $numrows);
64
            foreach (array_keys($downloadsmod_arr) as $i) {
65
                $downloads = $downloadsHandler->get($downloadsmod_arr[$i]->getVar('lid'));
66
                // pour savoir si le fichier est nouveau
67
                $downloads_url    = $downloads->getVar('url');
68
                $moddownloads_url = $downloadsmod_arr[$i]->getVar('url');
69
                $new_file         = ($downloads_url != $moddownloads_url);
70
                $modified         = [
71
                    'lid'             => $downloadsmod_arr[$i]->getVar('lid'),
72
                    'requestid'       => $downloadsmod_arr[$i]->getVar('requestid'),
73
                    'new_file'        => $new_file,
74
                    'download_title'  => $downloads->getVar('title'),
75
                    'modifysubmitter' => XoopsUser::getUnameFromId($downloadsmod_arr[$i]->getVar('modifysubmitter')),
76
                ];
77
                $GLOBALS['xoopsTpl']->append('modified_list', $modified);
78
                unset($modified);
79
            }
80
        } else {
81
            $GLOBALS['xoopsTpl']->assign('error', _AM_TDMDOWNLOADS_ERREUR_NOBMODDOWNLOADS);
82
        }
83
        break;
84
    // show a comparision of the versions
85
    case 'view_downloads':
86
        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
87
        $adminObject->addItemButton(_MI_TDMDOWNLOADS_ADMENU5, 'modified.php', 'list');
88
        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
89
90
        //information du téléchargement
91
        $viewDownloads = $downloadsHandler->get(\Xmf\Request::getInt('downloads_lid', 0, 'REQUEST'));
92
        //information du téléchargement modifié
93
        $viewModdownloads = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
94
95
        // original
96
        $downloads_title = $viewDownloads->getVar('title');
97
        $downloads_url   = $viewDownloads->getVar('url');
98
        //catégorie
99
        $view_category         = $categoryHandler->get($viewDownloads->getVar('cid'));
100
        $downloads_category    = $view_category->getVar('cat_title');
101
        $downloads_homepage    = $viewDownloads->getVar('homepage');
102
        $downloads_version     = $viewDownloads->getVar('version');
103
        $downloads_size        = $viewDownloads->getVar('size');
104
        $downloads_platform    = $viewDownloads->getVar('platform');
105
        $downloads_description = $viewDownloads->getVar('description');
106
        $downloads_logourl     = $viewDownloads->getVar('logourl');
107
        // modifié
108
        $moddownloads_title = $viewModdownloads->getVar('title');
109
        $moddownloads_url   = $viewModdownloads->getVar('url');
110
        //catégorie
111
        $view_category            = $categoryHandler->get($viewModdownloads->getVar('cid'));
112
        $moddownloads_category    = $view_category->getVar('cat_title');
113
        $moddownloads_homepage    = $viewModdownloads->getVar('homepage');
114
        $moddownloads_version     = $viewModdownloads->getVar('version');
115
        $moddownloads_size        = $viewModdownloads->getVar('size');
116
        $moddownloads_platform    = $viewModdownloads->getVar('platform');
117
        $moddownloads_description = $viewModdownloads->getVar('description');
118
        $moddownloads_logourl     = $viewModdownloads->getVar('logourl');
119
120
        $compare['title']       = ['info' => _AM_TDMDOWNLOADS_FORMTITLE, 'current' => $downloads_title, 'modified' => $moddownloads_title];
121
        $compare['description'] = ['info' => _AM_TDMDOWNLOADS_FORMTEXT, 'current' => $downloads_description, 'modified' => $moddownloads_description];
122
        $compare['url']         = ['info' => _AM_TDMDOWNLOADS_FORMURL, 'current' => $downloads_url, 'modified' => $moddownloads_url];
123
        $compare['category']    = ['info' => _AM_TDMDOWNLOADS_FORMCAT, 'current' => $downloads_category, 'modified' => $moddownloads_category];
124
125
        $criteria = new \CriteriaCompo();
126
        $criteria->setSort('weight ASC, title');
127
        $criteria->setOrder('ASC');
128
        $criteria->add(new \Criteria('status', 1));
129
        $downloads_field = $fieldHandler->getAll($criteria);
130
        foreach (array_keys($downloads_field) as $i) {
131
            if (1 == $downloads_field[$i]->getVar('status_def')) {
132
                if (1 == $downloads_field[$i]->getVar('fid')) {
133
                    //page d'accueil
134
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMHOMEPAGE, 'current' => $downloads_homepage, 'modified' => $moddownloads_homepage];
135
                }
136
                if (2 == $downloads_field[$i]->getVar('fid')) {
137
                    //version
138
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMVERSION, 'current' => $downloads_version, 'modified' => $moddownloads_version];
139
                }
140
                if (3 == $downloads_field[$i]->getVar('fid')) {
141
                    //taille du fichier
142
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMSIZE, 'current' => $downloads_size, 'modified' => $moddownloads_size];
143
                }
144
                if (4 == $downloads_field[$i]->getVar('fid')) {
145
                    //plateforme
146
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMPLATFORM, 'current' => $downloads_platform, 'modified' => $moddownloads_platform];
147
                }
148
            } else {
149
                //original
150
                $contenu  = '';
151
                $criteria = new \CriteriaCompo();
152
                $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('downloads_lid', 0, 'REQUEST')));
153
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
154
                $downloadsfielddata = $fielddataHandler->getAll($criteria);
155
                foreach (array_keys($downloadsfielddata) as $j) {
156
                    //                    $contenu = $downloadsfielddata[$j]->getVar('data');
157
                    $contenu = $downloadsfielddata[$j]->getVar('data', 'e');
158
                }
159
                //proposé
160
                $contentModified = '';
161
                $criteria    = new \CriteriaCompo();
162
                $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
163
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
164
                $downloadsfieldmoddata = $modifieddataHandler->getAll($criteria);
165
                foreach (array_keys($downloadsfieldmoddata) as $j) {
166
                    $contentModified = $downloadsfieldmoddata[$j]->getVar('moddata', 'e');
167
                }
168
                //                echo '<tr><td valign="top" width="40%"><small><span class="' . ($contenu == $contentModified ? 'style_ide' : 'style_dif') . '">' . $downloads_field[$i]->getVar('title') . '</span>: ' . $contentModified . '</small></td></tr>';
169
                $compare['cfields'][] = ['info' => $downloads_field[$i]->getVar('title'), 'current' => $contenu, 'modified' => $contentModified];
170
            }
171
        }
172
        $compare['img'] = ['info' => _AM_TDMDOWNLOADS_FORMIMG, 'current' => $downloads_logourl, 'modified' => $moddownloads_logourl];
173
        //permet de savoir si le fichier est nouveau
174
        $new_file = ($downloads_url != $moddownloads_url);
175
        $buttons  = [
176
            myTextForm('modified.php?op=approve&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, _AM_TDMDOWNLOADS_FORMAPPROVE),
0 ignored issues
show
'modified.php?op=approve...&new_file=' . $new_file of type string is incompatible with the type unknown_type expected by parameter $url of myTextForm(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

176
            myTextForm(/** @scrutinizer ignore-type */ 'modified.php?op=approve&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, _AM_TDMDOWNLOADS_FORMAPPROVE),
Loading history...
_AM_TDMDOWNLOADS_FORMAPPROVE of type string is incompatible with the type unknown_type expected by parameter $value of myTextForm(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

176
            myTextForm('modified.php?op=approve&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, /** @scrutinizer ignore-type */ _AM_TDMDOWNLOADS_FORMAPPROVE),
Loading history...
177
            myTextForm('downloads.php?op=edit_downloads&downloads_lid=' . \Xmf\Request::getInt('downloads_lid', 0, 'GET'), _AM_TDMDOWNLOADS_FORMEDIT),
178
            myTextForm('modified.php?op=del_moddownloads&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, _AM_TDMDOWNLOADS_FORMIGNORE),
179
        ];
180
        $GLOBALS['xoopsTpl']->assign('compare_list', $compare);
181
        $GLOBALS['xoopsTpl']->assign('cbuttons', $buttons);
182
        $GLOBALS['xoopsTpl']->assign('uploadurl_shots', $uploadurl_shots);
183
        break;
184
    // permet de suprimmer le téléchargment modifié
185
    case 'del_moddownloads':
186
        $obj = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
187
        if (1 === \Xmf\Request::getInt('ok', 0, 'POST')) {
188
            if (!$GLOBALS['xoopsSecurity']->check()) {
189
                redirect_header('downloads.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
190
            }
191
192
            if (true === \Xmf\Request::getBool('new_file', false, 'REQUEST')) {
193
                $urlfile = substr_replace($obj->getVar('url'), '', 0, mb_strlen($uploadurl_downloads));
194
                // permet de donner le chemin du fichier
195
                $urlfile = $uploaddir_downloads . $urlfile;
196
                // si le fichier est sur le serveur il es détruit
197
                if (is_file($urlfile)) {
198
                    chmod($urlfile, 0777);
199
                    unlink($urlfile);
200
                }
201
            }
202
            // supression des data des champs sup
203
            $criteria = new \CriteriaCompo();
204
            $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
205
            $downloads_fielddata = $modifieddataHandler->getAll($criteria);
206
            foreach (array_keys($downloads_fielddata) as $i) {
207
                $objfielddata = $modifieddataHandler->get($downloads_fielddata[$i]->getVar('modiddata'));
208
                $modifieddataHandler->delete($objfielddata) || $objvfielddata->getHtmlErrors();
209
            }
210
            if ($modifiedHandler->delete($obj)) {
211
                redirect_header('modified.php', 1, _AM_TDMDOWNLOADS_REDIRECT_DELOK);
212
            }
213
            $GLOBALS['xoopsTpl']->assign('error', $obj->getHtmlErrors());
214
        } else {
215
            $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
216
            $adminObject->addItemButton(_MI_TDMDOWNLOADS_ADMENU5, 'modified.php', 'list');
217
            $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
218
219
            xoops_confirm([
220
                              'ok'       => 1,
221
                              'mod_id'   => \Xmf\Request::getInt('mod_id', 0, 'REQUEST'),
222
                              'new_file' => \Xmf\Request::getString('new_file', 0, 'REQUEST'),
223
                              'op'       => 'del_moddownloads',
224
                          ], $_SERVER['REQUEST_URI'], _AM_TDMDOWNLOADS_MODIFIED_SURDEL . '<br>');
225
        }
226
        break;
227
    // permet d'accépter la modification
228
    case 'approve':
229
        // choix du téléchargement:
230
        $viewModdownloads = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
231
        $obj              = $downloadsHandler->get($viewModdownloads->getVar('lid'));
232
        // delete the current file if a new proposed file is accepted.
233
        if (true === \Xmf\Request::getBool('new_file', false, 'REQUEST')) {
234
            $urlfile = substr_replace($obj->getVar('url'), '', 0, mb_strlen($uploadurl_downloads));
235
            // permet de donner le chemin du fichier
236
            $urlfile = $uploaddir_downloads . $urlfile;
237
            // si le fichier est sur le serveur il es détruit
238
            if (is_file($urlfile)) {
239
                chmod($urlfile, 0777);
240
                unlink($urlfile);
241
            }
242
        }
243
        // mise à jour:
244
        $obj->setVar('title', $viewModdownloads->getVar('title'));
245
        $obj->setVar('url', $viewModdownloads->getVar('url'));
246
        $obj->setVar('cid', $viewModdownloads->getVar('cid'));
247
        $obj->setVar('homepage', $viewModdownloads->getVar('homepage'));
248
        $obj->setVar('version', $viewModdownloads->getVar('version'));
249
        $obj->setVar('size', $viewModdownloads->getVar('size'));
250
        $obj->setVar('platform', $viewModdownloads->getVar('platform'));
251
        $obj->setVar('description', $viewModdownloads->getVar('description'));
252
        $obj->setVar('logourl', $viewModdownloads->getVar('logourl'));
253
        $obj->setVar('date', time());
254
        $obj->setVar('status', 2);
255
        // Récupération des champs supplémentaires:
256
        $criteria = new \CriteriaCompo();
257
        $criteria->setSort('weight ASC, title');
258
        $criteria->setOrder('ASC');
259
        $downloads_field = $fieldHandler->getAll($criteria);
260
        foreach (array_keys($downloads_field) as $i) {
261
            $contenu = '';
262
            $iddata  = 0;
263
            if (0 == $downloads_field[$i]->getVar('status_def')) {
264
                $criteria = new \CriteriaCompo();
265
                $criteria->add(new \Criteria('lid', $viewModdownloads->getVar('requestid')));
266
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
267
                $downloadsfieldmoddata = $modifieddataHandler->getAll($criteria);
268
                foreach (array_keys($downloadsfieldmoddata) as $j) {
269
                    $contenu = $downloadsfieldmoddata[$j]->getVar('moddata');
270
                }
271
                $criteria = new \CriteriaCompo();
272
                $criteria->add(new \Criteria('lid', $viewModdownloads->getVar('lid')));
273
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
274
                $downloadsfielddata = $fielddataHandler->getAll($criteria);
275
                foreach (array_keys($downloadsfielddata) as $j) {
276
                    $iddata = $downloadsfielddata[$j]->getVar('iddata');
277
                }
278
                if (0 == $iddata) {
279
                    $objdata = $fielddataHandler->create();
280
                    $objdata->setVar('fid', $downloads_field[$i]->getVar('fid'));
281
                    $objdata->setVar('lid', $viewModdownloads->getVar('lid'));
282
                } else {
283
                    $objdata = $fielddataHandler->get($iddata);
284
                }
285
                $objdata->setVar('data', $contenu);
286
                $fielddataHandler->insert($objdata) || $objdata->getHtmlErrors();
287
            }
288
        }
289
        // supression du rapport de modification
290
        $objmod = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
291
        $modifiedHandler->delete($objmod);
292
        // supression des data des champs sup
293
        $criteria = new \CriteriaCompo();
294
        $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
295
        $downloads_fielddata = $modifieddataHandler->getAll($criteria);
296
        foreach (array_keys($downloads_fielddata) as $i) {
297
            $objfielddata = $modifieddataHandler->get($downloads_fielddata[$i]->getVar('modiddata'));
298
            $modifieddataHandler->delete($objfielddata) || $objvfielddata->getHtmlErrors();
299
        }
300
        // enregistrement
301
        if ($downloadsHandler->insert($obj)) {
302
            redirect_header('modified.php', 1, _AM_TDMDOWNLOADS_REDIRECT_SAVE);
303
        }
304
        $GLOBALS['xoopsTpl']->assign('error', $obj->getHtmlErrors());
305
        break;
306
}
307
308
// Local icons path
309
if (is_object($helper->getModule())) {
310
    $pathModIcon16 = $helper->getModule()->getInfo('modicons16');
311
    $pathModIcon32 = $helper->getModule()->getInfo('modicons32');
312
313
    $GLOBALS['xoopsTpl']->assign('pathModIcon16', XOOPS_URL . '/modules/' . $moduleDirName . '/' . $pathModIcon16);
314
    $GLOBALS['xoopsTpl']->assign('pathModIcon32', $pathModIcon32);
315
}
316
317
require __DIR__ . '/admin_footer.php';
318