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

submit.php (2 issues)

Labels
Severity
1
<?php
2
3
use XoopsModules\Tag\Tag;
4
use XoopsModules\Tag\TagHandler;
5
6
/**
7
 * TDMDownload
8
 *
9
 * You may not change or alter any portion of this comment or credits
10
 * of supporting developers from this source code or any supporting source code
11
 * which is considered copyrighted (c) material of the original comment or credit authors.
12
 * This program is distributed in the hope that it will be useful,
13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
 *
16
 * @copyright   Gregory Mage (Aka Mage)
17
 * @license     GNU GPL 2 (http://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
18
 * @author      Gregory Mage (Aka Mage)
19
 */
20
require_once __DIR__ . '/header.php';
21
$moduleDirName = basename(__DIR__);
22
23
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
24
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
25
// template d'affichage
26
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_submit.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
//On recupere la valeur de l'argument op dans l'URL$
32
$op = \Xmf\Request::getString('op', 'list');
33
$lid = \Xmf\Request::getInt('lid', 0, 'REQUEST');
34
35
// redirection si pas de droit pour poster
36
if (false === $perm_submit) {
37
    redirect_header('index.php', 2, _NOPERM);
38
}
39
// user must have perm to autoapprove if he want to modify, otherwise modfile.php must be used
40
if (false === $perm_autoapprove && $lid > 0) {
41
    redirect_header('index.php', 2, _NOPERM);
42
}
43
44
//Les valeurs de op qui vont permettre d'aller dans les differentes parties de la page
45
switch ($op) {
46
    // Vue liste
47
    case 'list':
48
        //navigation
49
        $navigation = _MD_TDMDOWNLOADS_SUBMIT_PROPOSER;
50
        $xoopsTpl->assign('navigation', $navigation);
51
        // référencement
52
        // titre de la page
53
        $titre = _MD_TDMDOWNLOADS_SUBMIT_PROPOSER . '&nbsp;-&nbsp;';
54
        $titre .= $xoopsModule->name();
55
        $xoopsTpl->assign('xoops_pagetitle', $titre);
56
        //description
57
        $xoTheme->addMeta('meta', 'description', strip_tags(_MD_TDMDOWNLOADS_SUBMIT_PROPOSER));
58
59
        //Affichage du formulaire de notation des téléchargements
60
        /** @var \XoopsModules\Tdmdownloads\Downloads $obj */
61
        $obj = $downloadsHandler->create();
62
        /** @var \XoopsThemeForm $form */
63
        $form = $obj->getForm($donnee = [], false);
64
        $xoopsTpl->assign('themeForm', $form->render());
65
        break;
66
    // save
67
    case 'save_downloads':
68
        require_once XOOPS_ROOT_PATH . '/class/uploader.php';
69
        $newUpload = true;
70
        /** @var \XoopsModules\Tdmdownloads\Downloads $obj */
71
        if (true === $perm_autoapprove && $lid > 0) {
72
            $obj = $downloadsHandler->get($lid);
73
            $newUpload = false;
74
        } else {
75
            $obj = $downloadsHandler->create();
76
        }
77
        $erreur = false;
78
        $errorMessage = '';
79
        $donnee = [];
80
        $obj->setVar('title', \Xmf\Request::getString('title', '', 'POST'));
81
        $donnee['title'] = \Xmf\Request::getString('title', '', 'POST');
82
        $obj->setVar('cid', \Xmf\Request::getString('cid', '', 'POST'));
83
        $donnee['cid'] = \Xmf\Request::getString('cid', '', 'POST');
84
        $obj->setVar('homepage', formatURL(\Xmf\Request::getString('homepage', '', 'POST')));
85
        $obj->setVar('version', \Xmf\Request::getString('version', '', 'POST'));
86
        $obj->setVar('paypal', \Xmf\Request::getString('paypal', '', 'POST'));
87
        if (\Xmf\Request::hasVar('platform', 'POST')) {
88
            $obj->setVar('platform', implode('|', \Xmf\Request::getString('platform', '', 'POST')));
89
        }
90
        $obj->setVar('description', \Xmf\Request::getString('description', '', 'POST'));
91
        if (\Xmf\Request::hasVar('submitter', 'POST')) {
92
            $obj->setVar('submitter', \Xmf\Request::getString('submitter', '', 'POST'));
93
            $donnee['submitter'] = \Xmf\Request::getString('submitter', '', 'POST');
94
        } else {
95
            $obj->setVar('submitter', !empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0);
96
            $donnee['submitter'] = !empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
97
        }
98
        $obj->setVar('date', time());
99
        if (true === $perm_autoapprove) {
100
            $obj->setVar('status', 1);
101
        } else {
102
            $obj->setVar('status', 0);
103
        }
104
        if ($xoopsUser) {
105
            if ($xoopsUser->isAdmin($xoopsModule->mid())) {
106
                if (\Xmf\Request::hasVar('status', 'POST')) {
107
                    $obj->setVar('status', \Xmf\Request::getInt('status', 0, 'POST'));
108
                    $donnee['status'] = \Xmf\Request::getInt('status', 0, 'POST');
109
                } else {
110
                    $obj->setVar('status', 0);
111
                    $donnee['status'] = 0;
112
                }
113
            }
114
        }
115
        $donnee['date_update'] = 0;
116
        // erreur si la catégorie est vide
117
        if (\Xmf\Request::hasVar('cid', 'REQUEST')) {
118
            if (0 === \Xmf\Request::getInt('cid', 0, 'REQUEST')) {
119
                $erreur = true;
120
                $errorMessage .= _MD_TDMDOWNLOADS_ERREUR_NOCAT . '<br>';
121
            }
122
        }
123
        // erreur si le captcha est faux
124
        xoops_load('xoopscaptcha');
125
        $xoopsCaptcha = \XoopsCaptcha::getInstance();
126
        if (!$xoopsCaptcha->verify()) {
127
            $errorMessage .= $xoopsCaptcha->getMessage() . '<br>';
128
            $erreur = true;
129
        }
130
        // pour enregistrer temporairement les valeur des champs sup
131
        $criteria = new \CriteriaCompo();
132
        $criteria->setSort('weight ASC, title');
133
        $criteria->setOrder('ASC');
134
        $downloads_field = $fieldHandler->getAll($criteria);
135
        foreach (array_keys($downloads_field) as $i) {
136
            /** @var \XoopsModules\Tdmdownloads\Field[] $downloads_field */
137
            if (0 === $downloads_field[$i]->getVar('status_def')) {
138
                $fieldName = 'champ' . $downloads_field[$i]->getVar('fid');
139
                $donnee[$fieldName] = \Xmf\Request::getString($fieldName, '', 'POST');
140
            }
141
        }
142
        // enregistrement temporaire des tags
143
        if ((1 == $helper->getConfig('usetag')) && class_exists(Tag::class)) {
144
            $donnee['TAG'] = $_POST['tag'];
145
        }
146
        if (true === $erreur) {
147
            $xoopsTpl->assign('message_erreur', $errorMessage);
148
            /** @var \XoopsThemeForm $form */
149
            $form = $obj->getForm($donnee, true);
150
            $GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
151
            break;
152
        }
153
            $obj->setVar('size', \Xmf\Request::getString('size', '', 'POST') . ' ' . \Xmf\Request::getString('type_size', '', 'POST'));
154
            // Pour le fichier
155
			$mediaSize = 0;
156
            if (isset($_POST['xoops_upload_file'][0])) {
157
                $uploader = new \XoopsMediaUploader($uploaddir_downloads, $helper->getConfig('mimetype'), $helper->getConfig('maxuploadsize'), null, null);
158
                if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
159
                    if ($helper->getConfig('newnamedownload')) {
160
                        $uploader->setPrefix($helper->getConfig('prefixdownloads'));
161
                    }
162
                    $uploader->fetchMedia($_POST['xoops_upload_file'][0]);
163
                    if (!$uploader->upload()) {
164
                        $errors = $uploader->getErrors();
165
                        redirect_header('javascript:history.go(-1)', 3, $errors);
166
                    } else {
167
						$mediaSize = $uploader->getMediaSize();
168
                        $obj->setVar('url', $uploadurl_downloads . $uploader->getSavedFileName());
169
                    }
170
                } else {
171
                    if ($_FILES['attachedfile']['name'] > '') {
172
                        // file name was given, but fetchMedia failed - show error when e.g. file size exceed maxuploadsize
173
                        $errorMessage .= $uploader->getErrors() . '<br>';
174
                        $GLOBALS['xoopsTpl']->assign('message_erreur', $errorMessage);
175
                        $form = $obj->getForm($donnee, true);
176
                        $GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
177
                        break;
178
                    }
179
                    $obj->setVar('url', \Xmf\Request::getString('url', '', 'REQUEST'));
180
                }
181
            } else {
182
				$obj->setVar('url', \Xmf\Request::getString('url', '', 'REQUEST'));
183
			}
184
            // Pour l'image
185
            if (isset($_POST['xoops_upload_file'][1])) {
186
                $uploader_2 = new \XoopsMediaUploader($uploaddir_shots, [
187
                    'image/gif',
188
                    'image/jpeg',
189
                    'image/pjpeg',
190
                    'image/x-png',
191
                    'image/png',
192
                ], $helper->getConfig('maxuploadsize'), null, null);
193
                if ($uploader_2->fetchMedia($_POST['xoops_upload_file'][1])) {
194
                    $uploader_2->setPrefix('downloads_');
195
                    $uploader_2->fetchMedia($_POST['xoops_upload_file'][1]);
196
                    if (!$uploader_2->upload()) {
197
                        $errors = $uploader_2->getErrors();
198
                        redirect_header('javascript:history.go(-1)', 3, $errors);
199
                    } else {
200
                        $obj->setVar('logourl', $uploader_2->getSavedFileName());
201
                    }
202
                } else {
203
                    if ($_FILES['attachedimage']['name'] > '') {
204
                        // file name was given, but fetchMedia failed - show error when e.g. file size exceed maxuploadsize
205
                        $errorMessage .= $uploader_2->getErrors() . '<br>';
206
                        $GLOBALS['xoopsTpl']->assign('message_erreur', $errorMessage);
207
                        $form = $obj->getForm($donnee, true);
208
                        $GLOBALS['xoopsTpl']->assign('themeForm', $form->render());
209
                        break;
210
                    }
211
                    $obj->setVar('logourl', \Xmf\Request::getString('logo_img', '', 'REQUEST'));
212
                }
213
            } else {
214
				$obj->setVar('logourl', \Xmf\Request::getString('logo_img', '', 'REQUEST'));
215
			}
216
			//Automatic file size
217
			if (Xmf\Request::getString('sizeValue', '') == ''){
218
				if ($mediaSize == 0) {
219
					$obj->setVar('size', $utility::GetFileSize(Xmf\Request::getUrl('url', '')));
220
				} else {
221
					$obj->setVar('size', $utility::FileSizeConvert($mediaSize));
222
				}
223
			} else {
224
				$obj->setVar('size', Xmf\Request::getFloat('sizeValue', 0) . ' ' . Xmf\Request::getString('sizeType', ''));
225
			}
226
			$timeToRedirect = 2;
227
			if ($obj->getVar('size') == 0){
228
				$obj->setVar('size', '');
229
				$error_message = _AM_TDMDOWNLOADS_ERREUR_SIZE;
230
				$timeToRedirect = 10;
231
			}
232
            if ($downloadsHandler->insert($obj)) {
233
                if ($newUpload) {
234
                    $lidDownloads = $obj->getNewEnreg($db);
235
                } else {
236
                    $lidDownloads = $lid;
237
                }
238
                //tags
239
                if ((1 == $helper->getConfig('usetag')) && class_exists(TagHandler::class)) {
240
                    /** @var \XoopsModules\Tag\TagHandler $tagHandler */
241
                    $tagHandler = \XoopsModules\Tag\Helper::getInstance()->getHandler('Tag');
242
                    $tagHandler->updateByItem($_POST['tag'], $lidDownloads, $moduleDirName, 0);
243
                }
244
                // Récupération des champs supplémentaires:
245
                $criteria = new \CriteriaCompo();
246
                $criteria->setSort('weight ASC, title');
247
                $criteria->setOrder('ASC');
248
                $downloads_field = $fieldHandler->getAll($criteria);
249
                foreach (array_keys($downloads_field) as $i) {
250
                    if (0 === $downloads_field[$i]->getVar('status_def')) {
251
                        $objdata = $fielddataHandler->create();
252
                        $fieldName = 'champ' . $downloads_field[$i]->getVar('fid');
253
                        $objdata->setVar('data', \Xmf\Request::getString($fieldName, '', 'POST'));
254
                        $objdata->setVar('lid', $lidDownloads);
255
                        $objdata->setVar('fid', $downloads_field[$i]->getVar('fid'));
256
                        $fielddataHandler->insert($objdata) || $objdata->getHtmlErrors();
257
                    }
258
                }
259
                if ($xoopsUser) {
260
                    if ($xoopsUser->isAdmin($xoopsModule->mid())) {
261
                        //permission pour télécharger
262
                        if (1 == $helper->getConfig('permission_download')) {
263
                            /** @var \XoopsGroupPermHandler $grouppermHandler */
264
                            $grouppermHandler = xoops_getHandler('groupperm');
265
                            $criteria = new \CriteriaCompo();
266
                            $criteria->add(new \Criteria('gperm_itemid', $lidDownloads, '='));
267
                            $criteria->add(new \Criteria('gperm_modid', $xoopsModule->getVar('mid'), '='));
268
                            $criteria->add(new \Criteria('gperm_name', 'tdmdownloads_download_item', '='));
269
                            $grouppermHandler->deleteAll($criteria);
270
                            if (\Xmf\Request::hasVar('item_download', 'POST')) {
271
                                foreach ($_POST['item_download'] as $onegroup_id) {
272
                                    $grouppermHandler->addRight('tdmdownloads_download_item', $lidDownloads, $onegroup_id, $xoopsModule->getVar('mid'));
273
                                }
274
                            }
275
                        }
276
                    }
277
                }
278
                /** @var \XoopsNotificationHandler $notificationHandler */
279
                $notificationHandler = xoops_getHandler('notification');
280
                $tags = [];
281
                $tags['FILE_NAME'] = $donnee['title'];
282
                $tags['FILE_URL'] = XOOPS_URL . '/modules/' . $moduleDirName . '/singlefile.php?cid=' . $donnee['cid'] . '&lid=' . $lidDownloads;
283
                $downloadscat_cat = $categoryHandler->get($donnee['cid']);
284
                $tags['CATEGORY_NAME'] = $downloadscat_cat->getVar('cat_title');
285
                $tags['CATEGORY_URL'] = XOOPS_URL . '/modules/' . $moduleDirName . '/viewcat.php?cid=' . $donnee['cid'];
286
				
287
                if (true === $perm_autoapprove) {
288
                    $notificationHandler->triggerEvent('global', 0, 'new_file', $tags);
0 ignored issues
show
'new_file' of type string is incompatible with the type integer expected by parameter $event of XoopsNotificationHandler::triggerEvent(). ( Ignorable by Annotation )

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

288
                    $notificationHandler->triggerEvent('global', 0, /** @scrutinizer ignore-type */ 'new_file', $tags);
Loading history...
'global' of type string is incompatible with the type integer expected by parameter $category of XoopsNotificationHandler::triggerEvent(). ( Ignorable by Annotation )

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

288
                    $notificationHandler->triggerEvent(/** @scrutinizer ignore-type */ 'global', 0, 'new_file', $tags);
Loading history...
289
                    $notificationHandler->triggerEvent('category', $donnee['cid'], 'new_file', $tags);
290
                    redirect_header('index.php', $timeToRedirect, _MD_TDMDOWNLOADS_SUBMIT_RECEIVED . '<br>' . _MD_TDMDOWNLOADS_SUBMIT_ISAPPROVED . '<br><br>' . $error_message);
291
                    exit;
292
                }
293
                $tags['WAITINGFILES_URL'] = XOOPS_URL . '/modules/' . $moduleDirName . '/admin/index.php?op=listNewDownloads';
294
                $notificationHandler->triggerEvent('global', 0, 'file_submit', $tags);
295
                $notificationHandler->triggerEvent('category', $donnee['cid'], 'file_submit', $tags);
296
                redirect_header('index.php', $timeToRedirect, _MD_TDMDOWNLOADS_SUBMIT_RECEIVED . '<br><br>' . $error_message);
297
                exit;
298
            }
299
            $errors = $obj->getHtmlErrors();
300
301
        $form = $obj->getForm($donnee, true);
302
        $xoopsTpl->assign('themeForm', $form->render());
303
        break;
304
}
305
require XOOPS_ROOT_PATH . '/footer.php';
306