Passed
Pull Request — master (#88)
by Michael
02:56
created

admin/modified.php (1 issue)

Labels
Severity
1
<?php declare(strict_types=1);
2
3
/**
4
 * TDMDownload
5
 *
6
 * You may not change or alter any portion of this comment or credits
7
 * of supporting developers from this source code or any supporting source code
8
 * which is considered copyrighted (c) material of the original comment or credit authors.
9
 * This program is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
 *
13
 * @copyright   Gregory Mage (Aka Mage)
14
 * @license     GNU GPL 2 (https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
15
 * @author      Gregory Mage (Aka Mage)
16
 */
17
18
use XoopsModules\Tdmdownloads\Helper;
19
20
require __DIR__ . '/admin_header.php';
21
22
// Template
23
$templateMain = 'tdmdownloads_admin_modified.tpl';
24
25
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
26
$helper = Helper::getInstance();
27
28
//On recupere la valeur de l'argument op dans l'URL$
29
$op = \Xmf\Request::getCmd('op', 'list');
30
31
xoops_cp_header();
32
33
//Les valeurs de op qui vont permettre d'aller dans les differentes parties de la page
34
switch ($op) {
35
    // show list
36
    case 'list':
37
        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
38
39
        $criteria = new \CriteriaCompo();
40
        if (\Xmf\Request::hasVar('limit', 'REQUEST')) {
41
            $criteria->setLimit(\Xmf\Request::getInt('limit', 0, 'REQUEST'));
42
43
            $limit = \Xmf\Request::getInt('limit', 0, 'REQUEST');
44
        } else {
45
            $criteria->setLimit($helper->getConfig('perpageadmin'));
46
47
            $limit = $helper->getConfig('perpageadmin');
48
        }
49
        if (\Xmf\Request::hasVar('start', 'REQUEST')) {
50
            $criteria->setStart(\Xmf\Request::getInt('start', 0, 'REQUEST'));
51
52
            $start = \Xmf\Request::getInt('start', 0, 'REQUEST');
53
        } else {
54
            $criteria->setStart(0);
55
56
            $start = 0;
57
        }
58
        $criteria->setSort('requestid');
59
        $criteria->setOrder('ASC');
60
        $downloadsmod_arr = $modifiedHandler->getAll($criteria);
61
        //        $numrows          = $modifiedHandler->getCount($criteria);
62
        $numrows = $modifiedHandler->getCount(); //Ggoffy
63
        if ($numrows > $limit) {
64
            $pagenav = new \XoopsPageNav($numrows, $limit, $start, 'start', 'op=liste&limit=' . $limit);
65
66
            $GLOBALS['xoopsTpl']->assign('pagenav', $pagenav->renderNav(4));
67
        } else {
68
            $pagenav = '';
69
        }
70
        //Affichage du tableau des téléchargements modifiés
71
        if ($numrows > 0) {
72
            $GLOBALS['xoopsTpl']->assign('modified_count', $numrows);
73
74
            foreach (array_keys($downloadsmod_arr) as $i) {
75
                /** @var \XoopsModules\Tdmdownloads\Modified[] $downloadsmod_arr */
76
77
                $downloads = $downloadsHandler->get($downloadsmod_arr[$i]->getVar('lid'));
78
79
                // pour savoir si le fichier est nouveau
80
81
                $downloads_url = $downloads->getVar('url');
82
83
                $moddownloads_url = $downloadsmod_arr[$i]->getVar('url');
84
85
                $new_file = ($downloads_url != $moddownloads_url);
86
87
                $modified = [
88
                    'lid'             => $downloadsmod_arr[$i]->getVar('lid'),
89
                    'requestid'       => $downloadsmod_arr[$i]->getVar('requestid'),
90
                    'new_file'        => $new_file,
91
                    'download_title'  => $downloads->getVar('title'),
92
                    'modifysubmitter' => XoopsUser::getUnameFromId($downloadsmod_arr[$i]->getVar('modifysubmitter')),
93
                ];
94
95
                $GLOBALS['xoopsTpl']->append('modified_list', $modified);
96
97
                unset($modified);
98
            }
99
        } else {
100
            $GLOBALS['xoopsTpl']->assign('message_erreur', _AM_TDMDOWNLOADS_ERREUR_NOBMODDOWNLOADS);
101
        }
102
        break;
103
    // show a comparision of the versions
104
    case 'view_downloads':
105
        $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
106
        $adminObject->addItemButton(_MI_TDMDOWNLOADS_ADMENU5, 'modified.php', 'list');
107
        $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
108
109
        //information du téléchargement
110
        $viewDownloads = $downloadsHandler->get(\Xmf\Request::getInt('downloads_lid', 0, 'REQUEST'));
111
        //information du téléchargement modifié
112
        $viewModdownloads = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
113
114
        // original
115
        $downloads_title = $viewDownloads->getVar('title');
116
        $downloads_url   = $viewDownloads->getVar('url');
117
        //catégorie
118
        $view_category         = $categoryHandler->get($viewDownloads->getVar('cid'));
119
        $downloads_category    = $view_category->getVar('cat_title');
120
        $downloads_homepage    = $viewDownloads->getVar('homepage');
121
        $downloads_version     = $viewDownloads->getVar('version');
122
        $downloads_size        = $viewDownloads->getVar('size');
123
        $downloads_platform    = $viewDownloads->getVar('platform');
124
        $downloads_description = $viewDownloads->getVar('description');
125
        $downloads_logourl     = $viewDownloads->getVar('logourl');
126
        // modifié
127
        $moddownloads_title = $viewModdownloads->getVar('title');
128
        $moddownloads_url   = $viewModdownloads->getVar('url');
129
        //catégorie
130
        $view_category            = $categoryHandler->get($viewModdownloads->getVar('cid'));
131
        $moddownloads_category    = $view_category->getVar('cat_title');
132
        $moddownloads_homepage    = $viewModdownloads->getVar('homepage');
133
        $moddownloads_version     = $viewModdownloads->getVar('version');
134
        $moddownloads_size        = $viewModdownloads->getVar('size');
135
        $moddownloads_platform    = $viewModdownloads->getVar('platform');
136
        $moddownloads_description = $viewModdownloads->getVar('description');
137
        $moddownloads_logourl     = $viewModdownloads->getVar('logourl');
138
139
        $compare['title']       = ['info' => _AM_TDMDOWNLOADS_FORMTITLE, 'current' => $downloads_title, 'modified' => $moddownloads_title];
140
        $compare['description'] = ['info' => _AM_TDMDOWNLOADS_FORMTEXT, 'current' => $downloads_description, 'modified' => $moddownloads_description];
141
        $compare['url']         = ['info' => _AM_TDMDOWNLOADS_FORMURL, 'current' => $downloads_url, 'modified' => $moddownloads_url];
142
        $compare['category']    = ['info' => _AM_TDMDOWNLOADS_FORMCAT, 'current' => $downloads_category, 'modified' => $moddownloads_category];
143
144
        $criteria = new \CriteriaCompo();
145
        $criteria->setSort('weight ASC, title');
146
        $criteria->setOrder('ASC');
147
        $criteria->add(new \Criteria('status', 1));
148
        $downloads_field = $fieldHandler->getAll($criteria);
149
        foreach (array_keys($downloads_field) as $i) {
150
            /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
151
152
            if (1 == $downloads_field[$i]->getVar('status_def')) {
153
                if (1 == $downloads_field[$i]->getVar('fid')) {
154
                    //page d'accueil
155
156
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMHOMEPAGE, 'current' => $downloads_homepage, 'modified' => $moddownloads_homepage];
157
                }
158
159
                if (2 == $downloads_field[$i]->getVar('fid')) {
160
                    //version
161
162
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMVERSION, 'current' => $downloads_version, 'modified' => $moddownloads_version];
163
                }
164
165
                if (3 == $downloads_field[$i]->getVar('fid')) {
166
                    //taille du fichier
167
168
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMSIZE, 'current' => $downloads_size, 'modified' => $moddownloads_size];
169
                }
170
171
                if (4 == $downloads_field[$i]->getVar('fid')) {
172
                    //plateforme
173
174
                    $compare['cfields'][] = ['info' => _AM_TDMDOWNLOADS_FORMPLATFORM, 'current' => $downloads_platform, 'modified' => $moddownloads_platform];
175
                }
176
            } else {
177
                //original
178
179
                $contenu = '';
180
181
                $criteria = new \CriteriaCompo();
182
183
                $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('downloads_lid', 0, 'REQUEST')));
184
185
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
186
187
                $downloadsfielddata = $fielddataHandler->getAll($criteria);
188
189
                foreach (array_keys($downloadsfielddata) as $j) {
190
                    /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
191
192
                    //                    $contenu = $downloadsfielddata[$j]->getVar('data');
193
194
                    $contenu = $downloadsfielddata[$j]->getVar('data', 'e');
195
                }
196
197
                //proposé
198
199
                $contentModified = '';
200
201
                $criteria = new \CriteriaCompo();
202
203
                $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
204
205
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
206
207
                $downloadsfieldmoddata = $modifieddataHandler->getAll($criteria);
208
209
                foreach (array_keys($downloadsfieldmoddata) as $j) {
210
                    /** @var \XoopsModules\Tdmdownloads\Modified[] $downloadsfieldmoddata */
211
212
                    $contentModified = $downloadsfieldmoddata[$j]->getVar('moddata', 'e');
213
                }
214
215
                //                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>';
216
217
                $compare['cfields'][] = ['info' => $downloads_field[$i]->getVar('title'), 'current' => $contenu, 'modified' => $contentModified];
218
            }
219
        }
220
        $compare['img'] = ['info' => _AM_TDMDOWNLOADS_FORMIMG, 'current' => $downloads_logourl, 'modified' => $moddownloads_logourl];
221
        //permet de savoir si le fichier est nouveau
222
        $new_file = ($downloads_url != $moddownloads_url);
223
        $buttons  = [
224
            myTextForm('modified.php?op=approve&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, _AM_TDMDOWNLOADS_FORMAPPROVE),
225
            myTextForm('downloads.php?op=edit_downloads&downloads_lid=' . \Xmf\Request::getInt('downloads_lid', 0, 'GET'), _AM_TDMDOWNLOADS_FORMEDIT),
226
            myTextForm('modified.php?op=del_moddownloads&mod_id=' . \Xmf\Request::getInt('mod_id', 0, 'GET') . '&new_file=' . $new_file, _AM_TDMDOWNLOADS_FORMIGNORE),
227
        ];
228
        $GLOBALS['xoopsTpl']->assign('compare_list', $compare);
229
        $GLOBALS['xoopsTpl']->assign('cbuttons', $buttons);
230
        $GLOBALS['xoopsTpl']->assign('uploadurl_shots', $uploadurl_shots);
231
        break;
232
    // permet de suprimmer le téléchargment modifié
233
    case 'del_moddownloads':
234
        $obj = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
235
        if (1 === \Xmf\Request::getInt('ok', 0, 'POST')) {
236
            if (!$GLOBALS['xoopsSecurity']->check()) {
237
                redirect_header('downloads.php', 3, implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
238
            }
239
240
            if (true === \Xmf\Request::getBool('new_file', false, 'REQUEST')) {
241
                $urlfile = substr_replace($obj->getVar('url'), '', 0, mb_strlen($uploadurl_downloads));
242
243
                // permet de donner le chemin du fichier
244
245
                $urlfile = $uploaddir_downloads . $urlfile;
0 ignored issues
show
Are you sure $urlfile of type array|string can be used in concatenation? ( Ignorable by Annotation )

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

245
                $urlfile = $uploaddir_downloads . /** @scrutinizer ignore-type */ $urlfile;
Loading history...
246
247
                // si le fichier est sur le serveur il es détruit
248
249
                if (is_file($urlfile)) {
250
                    chmod($urlfile, 0777);
251
252
                    unlink($urlfile);
253
                }
254
            }
255
256
            // supression des data des champs sup
257
258
            $criteria = new \CriteriaCompo();
259
260
            $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
261
262
            $downloads_fielddata = $modifieddataHandler->getAll($criteria);
263
264
            foreach (array_keys($downloads_fielddata) as $i) {
265
                /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloads_fielddata */
266
267
                $objfielddata = $modifieddataHandler->get($downloads_fielddata[$i]->getVar('modiddata'));
268
269
                $modifieddataHandler->delete($objfielddata) || $objvfielddata->getHtmlErrors();
270
            }
271
272
            if ($modifiedHandler->delete($obj)) {
273
                redirect_header('modified.php', 1, _AM_TDMDOWNLOADS_REDIRECT_DELOK);
274
            }
275
276
            $GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
277
        } else {
278
            $GLOBALS['xoopsTpl']->assign('navigation', $adminObject->displayNavigation(basename(__FILE__)));
279
280
            $adminObject->addItemButton(_MI_TDMDOWNLOADS_ADMENU5, 'modified.php', 'list');
281
282
            $GLOBALS['xoopsTpl']->assign('buttons', $adminObject->displayButton('left'));
283
284
            xoops_confirm(
285
                [
286
                    'ok'       => 1,
287
                    'mod_id'   => \Xmf\Request::getInt('mod_id', 0, 'REQUEST'),
288
                    'new_file' => \Xmf\Request::getString('new_file', 0, 'REQUEST'),
289
                    'op'       => 'del_moddownloads',
290
                ],
291
                $_SERVER['REQUEST_URI'],
292
                _AM_TDMDOWNLOADS_MODIFIED_SURDEL . '<br>'
293
            );
294
        }
295
        break;
296
    // permet d'accépter la modification
297
    case 'approve':
298
        // choix du téléchargement:
299
        $viewModdownloads = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
300
        $obj              = $downloadsHandler->get($viewModdownloads->getVar('lid'));
301
        // delete the current file if a new proposed file is accepted.
302
        if (true === \Xmf\Request::getBool('new_file', false, 'REQUEST')) {
303
            $urlfile = substr_replace($obj->getVar('url'), '', 0, mb_strlen($uploadurl_downloads));
304
305
            // permet de donner le chemin du fichier
306
307
            $urlfile = $uploaddir_downloads . $urlfile;
308
309
            // si le fichier est sur le serveur il es détruit
310
311
            if (is_file($urlfile)) {
312
                chmod($urlfile, 0777);
313
314
                unlink($urlfile);
315
            }
316
        }
317
        // mise à jour:
318
        $obj->setVar('title', $viewModdownloads->getVar('title'));
319
        $obj->setVar('url', $viewModdownloads->getVar('url'));
320
        $obj->setVar('cid', $viewModdownloads->getVar('cid'));
321
        $obj->setVar('homepage', $viewModdownloads->getVar('homepage'));
322
        $obj->setVar('version', $viewModdownloads->getVar('version'));
323
        $obj->setVar('size', $viewModdownloads->getVar('size'));
324
        $obj->setVar('platform', $viewModdownloads->getVar('platform'));
325
        $obj->setVar('description', $viewModdownloads->getVar('description'));
326
        $obj->setVar('logourl', $viewModdownloads->getVar('logourl'));
327
        $obj->setVar('date', time());
328
        $obj->setVar('status', 2);
329
        // Récupération des champs supplémentaires:
330
        $criteria = new \CriteriaCompo();
331
        $criteria->setSort('weight ASC, title');
332
        $criteria->setOrder('ASC');
333
        $downloads_field = $fieldHandler->getAll($criteria);
334
        foreach (array_keys($downloads_field) as $i) {
335
            /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
336
337
            $contenu = '';
338
339
            $iddata = 0;
340
341
            if (0 == $downloads_field[$i]->getVar('status_def')) {
342
                $criteria = new \CriteriaCompo();
343
344
                $criteria->add(new \Criteria('lid', $viewModdownloads->getVar('requestid')));
345
346
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
347
348
                $downloadsfieldmoddata = $modifieddataHandler->getAll($criteria);
349
350
                foreach (array_keys($downloadsfieldmoddata) as $j) {
351
                    /** @var \XoopsModules\Tdmdownloads\Modified[] $downloadsfieldmoddata */
352
353
                    $contenu = $downloadsfieldmoddata[$j]->getVar('moddata');
354
                }
355
356
                $criteria = new \CriteriaCompo();
357
358
                $criteria->add(new \Criteria('lid', $viewModdownloads->getVar('lid')));
359
360
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
361
362
                $downloadsfielddata = $fielddataHandler->getAll($criteria);
363
364
                foreach (array_keys($downloadsfielddata) as $j) {
365
                    /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloadsfielddata */
366
367
                    $iddata = $downloadsfielddata[$j]->getVar('iddata');
368
                }
369
370
                if (0 == $iddata) {
371
                    $objdata = $fielddataHandler->create();
372
373
                    $objdata->setVar('fid', $downloads_field[$i]->getVar('fid'));
374
375
                    $objdata->setVar('lid', $viewModdownloads->getVar('lid'));
376
                } else {
377
                    $objdata = $fielddataHandler->get($iddata);
378
                }
379
380
                $objdata->setVar('data', $contenu);
381
382
                $fielddataHandler->insert($objdata) || $objdata->getHtmlErrors();
383
            }
384
        }
385
        // supression du rapport de modification
386
        $objmod = $modifiedHandler->get(\Xmf\Request::getInt('mod_id', 0, 'REQUEST'));
387
        $modifiedHandler->delete($objmod);
388
        // supression des data des champs sup
389
        $criteria = new \CriteriaCompo();
390
        $criteria->add(new \Criteria('lid', \Xmf\Request::getInt('mod_id', 0, 'REQUEST')));
391
        $downloads_fielddata = $modifieddataHandler->getAll($criteria);
392
        foreach (array_keys($downloads_fielddata) as $i) {
393
            /** @var \XoopsModules\Tdmdownloads\Fielddata[] $downloads_fielddata */
394
395
            $objfielddata = $modifieddataHandler->get($downloads_fielddata[$i]->getVar('modiddata'));
396
397
            $modifieddataHandler->delete($objfielddata) || $objvfielddata->getHtmlErrors();
398
        }
399
        // enregistrement
400
        if ($downloadsHandler->insert($obj)) {
401
            redirect_header('modified.php', 1, _AM_TDMDOWNLOADS_REDIRECT_SAVE);
402
        }
403
        $GLOBALS['xoopsTpl']->assign('message_erreur', $obj->getHtmlErrors());
404
        break;
405
}
406
407
// Local icons path
408
if (is_object($helper->getModule())) {
409
    $pathModIcon16 = $helper->getModule()->getInfo('modicons16');
410
411
    $pathModIcon32 = $helper->getModule()->getInfo('modicons32');
412
413
    $GLOBALS['xoopsTpl']->assign('pathModIcon16', XOOPS_URL . '/modules/' . $moduleDirName . '/' . $pathModIcon16);
414
415
    $GLOBALS['xoopsTpl']->assign('pathModIcon32', $pathModIcon32);
416
}
417
418
require __DIR__ . '/admin_footer.php';
419