Passed
Pull Request — master (#13)
by Michael
01:52
created

submit.php (1 issue)

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_once __DIR__ . '/header.php';
17
$moduleDirName = basename(__DIR__);
18
19
/** @var \XoopsModules\Tdmdownloads\Helper $helper */
20
$helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
21
// template d'affichage
22
$GLOBALS['xoopsOption']['template_main'] = 'tdmdownloads_submit.tpl';
23
require_once XOOPS_ROOT_PATH . '/header.php';
24
/** @var \xos_opal_Theme $xoTheme */
25
$xoTheme->addStylesheet(XOOPS_URL . '/modules/' . $moduleDirName . '/assets/css/styles.css', null);
26
27
//On recupere la valeur de l'argument op dans l'URL$
28
$op = \Xmf\Request::getString('op', 'list');
29
30
// redirection si pas de droit pour poster
31
if (false === $perm_submit) {
32
    redirect_header('index.php', 2, _NOPERM);
33
}
34
35
//Les valeurs de op qui vont permettre d'aller dans les differentes parties de la page
36
switch ($op) {
37
    // Vue liste
38
    case 'list':
39
        //navigation
40
        $navigation = _MD_TDMDOWNLOADS_SUBMIT_PROPOSER;
41
        $xoopsTpl->assign('navigation', $navigation);
42
        // référencement
43
        // titre de la page
44
        $titre = _MD_TDMDOWNLOADS_SUBMIT_PROPOSER . '&nbsp;-&nbsp;';
45
        $titre .= $xoopsModule->name();
46
        $xoopsTpl->assign('xoops_pagetitle', $titre);
47
        //description
48
        $xoTheme->addMeta('meta', 'description', strip_tags(_MD_TDMDOWNLOADS_SUBMIT_PROPOSER));
49
50
        //Affichage du formulaire de notation des téléchargements
51
        $obj  = $downloadsHandler->create();
52
        $form = $obj->getForm($donnee = [], false);
53
        $xoopsTpl->assign('themeForm', $form->render());
54
        break;
55
    // save
56
    case 'save_downloads':
57
        require_once XOOPS_ROOT_PATH . '/class/uploader.php';
58
        $obj            = $downloadsHandler->create();
59
        $erreur         = false;
60
        $errorMessage = '';
61
        $donnee         = [];
62
        $obj->setVar('title', \Xmf\Request::getString('title', '', 'POST'));
63
        $donnee['title'] = \Xmf\Request::getString('title', '', 'POST');
64
        $obj->setVar('cid', \Xmf\Request::getString('cid', '', 'POST'));
65
        $donnee['cid'] = \Xmf\Request::getString('cid', '', 'POST');
66
        $obj->setVar('homepage', formatURL(\Xmf\Request::getString('homepage', '', 'POST')));
67
        $obj->setVar('version', \Xmf\Request::getString('version', '', 'POST'));
68
        $obj->setVar('size', \Xmf\Request::getString('size', '', 'POST'));
69
        $donnee['type_size'] = \Xmf\Request::getString('type_size', '', 'POST');
70
        $obj->setVar('paypal', \Xmf\Request::getString('paypal', '', 'POST'));
71
        if (\Xmf\Request::hasVar('platform', 'POST')) {
72
            $obj->setVar('platform', implode('|', \Xmf\Request::getString('platform', '', 'POST')));
0 ignored issues
show
Xmf\Request::getString('platform', '', 'POST') of type string is incompatible with the type array expected by parameter $pieces of implode(). ( Ignorable by Annotation )

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

72
            $obj->setVar('platform', implode('|', /** @scrutinizer ignore-type */ \Xmf\Request::getString('platform', '', 'POST')));
Loading history...
73
        }
74
        $obj->setVar('description', \Xmf\Request::getString('description', '', 'POST'));
75
        if (\Xmf\Request::hasVar('submitter', 'POST')) {
76
            $obj->setVar('submitter', \Xmf\Request::getString('submitter', '', 'POST'));
77
            $donnee['submitter'] = \Xmf\Request::getString('submitter', '', 'POST');
78
        } else {
79
            $obj->setVar('submitter', !empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0);
80
            $donnee['submitter'] = !empty($xoopsUser) ? $xoopsUser->getVar('uid') : 0;
81
        }
82
        $obj->setVar('date', time());
83
        if (true === $perm_autoapprove) {
84
            $obj->setVar('status', 1);
85
        } else {
86
            $obj->setVar('status', 0);
87
        }
88
        if ($xoopsUser) {
89
            if ($xoopsUser->isAdmin($xoopsModule->mid())) {
90
                if (\Xmf\Request::hasVar('status', 'POST')) {
91
                    $obj->setVar('status', \Xmf\Request::getInt('status', 0, 'POST'));
92
                    $donnee['status'] = \Xmf\Request::getInt('status', 0, 'POST');
93
                } else {
94
                    $obj->setVar('status', 0);
95
                    $donnee['status'] = 0;
96
                }
97
            }
98
        }
99
        $donnee['date_update'] = 0;
100
        // erreur si la taille du fichier n'est pas un nombre
101
        if (\Xmf\Request::hasVar('size', 'REQUEST')) {
102
            if (0 === \Xmf\Request::getInt('size', 0, 'REQUEST')) {
103
                $erreur = false;
104
            } else {
105
                $erreur         = true;
106
                $errorMessage .= _MD_TDMDOWNLOADS_ERREUR_SIZE . '<br>';
107
            }
108
        }
109
        // erreur si la catégorie est vide
110
        if (\Xmf\Request::hasVar('cid', 'REQUEST')) {
111
            if (\Xmf\Request::getInt('cid', 0, 'REQUEST')) {
112
                $erreur         = true;
113
                $errorMessage .= _MD_TDMDOWNLOADS_ERREUR_NOCAT . '<br>';
114
            }
115
        }
116
        // erreur si le captcha est faux
117
        xoops_load('xoopscaptcha');
118
        $xoopsCaptcha = \XoopsCaptcha::getInstance();
119
        if (!$xoopsCaptcha->verify()) {
120
            $errorMessage .= $xoopsCaptcha->getMessage() . '<br>';
121
            $erreur         = true;
122
        }
123
        // pour enregistrer temporairement les valeur des champs sup
124
        $criteria = new \CriteriaCompo();
125
        $criteria->setSort('weight ASC, title');
126
        $criteria->setOrder('ASC');
127
        $downloads_field = $fieldHandler->getAll($criteria);
128
        foreach (array_keys($downloads_field) as $i) {
129
            if (0 === $downloads_field[$i]->getVar('status_def')) {
130
                $fieldName          = 'champ' . $downloads_field[$i]->getVar('fid');
131
                $donnee[$fieldName] = \Xmf\Request::getString($fieldName, '', 'POST');
132
            }
133
        }
134
        // enregistrement temporaire des tags
135
        if ((1 === $helper->getConfig('usetag')) && is_dir('../tag')) {
136
            $donnee['TAG'] = $_POST['tag'];
137
        }
138
        if (true === $erreur) {
139
            $xoopsTpl->assign('errorMessage', $errorMessage);
140
        } else {
141
            $obj->setVar('size', \Xmf\Request::getString('size', '', 'POST') . ' ' . \Xmf\Request::getString('type_size', '', 'POST'));
142
            // Pour le fichier
143
            if (isset($_POST['xoops_upload_file'][0])) {
144
                $uploader = new \XoopsMediaUploader($uploaddir_downloads, explode('|', $helper->getConfig('mimetype')), $helper->getConfig('maxuploadsize'), null, null);
145
                if ($uploader->fetchMedia($_POST['xoops_upload_file'][0])) {
146
                    if ($helper->getConfig('newnamedownload')) {
147
                        $uploader->setPrefix($helper->getConfig('prefixdownloads'));
148
                    }
149
                    $uploader->fetchMedia($_POST['xoops_upload_file'][0]);
150
                    if (!$uploader->upload()) {
151
                        $errors = $uploader->getErrors();
152
                        redirect_header('javascript:history.go(-1)', 3, $errors);
153
                    } else {
154
                        $obj->setVar('url', $uploadurl_downloads . $uploader->getSavedFileName());
155
                    }
156
                } else {
157
                    $obj->setVar('url', \Xmf\Request::getString('url', '', 'REQUEST'));
158
                }
159
            }
160
            // Pour l'image
161
            if (isset($_POST['xoops_upload_file'][1])) {
162
                $uploader_2 = new \XoopsMediaUploader($uploaddir_shots, [
163
                    'image/gif',
164
                    'image/jpeg',
165
                    'image/pjpeg',
166
                    'image/x-png',
167
                    'image/png',
168
                ], $helper->getConfig('maxuploadsize'), null, null);
169
                if ($uploader_2->fetchMedia($_POST['xoops_upload_file'][1])) {
170
                    $uploader_2->setPrefix('downloads_');
171
                    $uploader_2->fetchMedia($_POST['xoops_upload_file'][1]);
172
                    if (!$uploader_2->upload()) {
173
                        $errors = $uploader_2->getErrors();
174
                        redirect_header('javascript:history.go(-1)', 3, $errors);
175
                    } else {
176
                        $obj->setVar('logourl', $uploader_2->getSavedFileName());
177
                    }
178
                } else {
179
                    $obj->setVar('logourl', \Xmf\Request::getString('logo_img', '', 'REQUEST'));
180
                }
181
            }
182
183
            if ($downloadsHandler->insert($obj)) {
184
                $lidDownloads = $obj->getNewEnreg($db);
185
                //tags
186
                if ((1 === $helper->getConfig('usetag')) && is_dir('../tag')) {
187
                    /** @var \XoopsModules\Tag\TagHandler $tagHandler */
188
                    $tagHandler = \XoopsModules\Tag\Helper::getInstance()->getHandler('Tag');
189
                    $tagHandler->updateByItem($_POST['tag'], $lidDownloads, $moduleDirName, 0);
190
                }
191
                // Récupération des champs supplémentaires:
192
                $criteria = new \CriteriaCompo();
193
                $criteria->setSort('weight ASC, title');
194
                $criteria->setOrder('ASC');
195
                $downloads_field = $fieldHandler->getAll($criteria);
196
                foreach (array_keys($downloads_field) as $i) {
197
                    if (0 === $downloads_field[$i]->getVar('status_def')) {
198
                        $objdata   = $fielddataHandler->create();
199
                        $fieldName = 'champ' . $downloads_field[$i]->getVar('fid');
200
                        $objdata->setVar('data', \Xmf\Request::getString($fieldName, '', 'POST'));
201
                        $objdata->setVar('lid', $lidDownloads);
202
                        $objdata->setVar('fid', $downloads_field[$i]->getVar('fid'));
203
                        $fielddataHandler->insert($objdata) || $objdata->getHtmlErrors();
204
                    }
205
                }
206
                if ($xoopsUser) {
207
                    if ($xoopsUser->isAdmin($xoopsModule->mid())) {
208
                        //permission pour télécharger
209
                        if (1 == $helper->getConfig('permission_download')) {
210
                            /** @var \XoopsGroupPermHandler $grouppermHandler */
211
                            $grouppermHandler = xoops_getHandler('groupperm');
212
                            $criteria         = new \CriteriaCompo();
213
                            $criteria->add(new \Criteria('gperm_itemid', $lidDownloads, '='));
214
                            $criteria->add(new \Criteria('gperm_modid', $xoopsModule->getVar('mid'), '='));
215
                            $criteria->add(new \Criteria('gperm_name', 'tdmdownloads_download_item', '='));
216
                            $grouppermHandler->deleteAll($criteria);
217
                            if (\Xmf\Request::hasVar('item_download', 'POST')) {
218
                                foreach ($_POST['item_download'] as $onegroup_id) {
219
                                    $grouppermHandler->addRight('tdmdownloads_download_item', $lidDownloads, $onegroup_id, $xoopsModule->getVar('mid'));
220
                                }
221
                            }
222
                        }
223
                    }
224
                }
225
                /** @var \XoopsNotificationHandler $notificationHandler */
226
                $notificationHandler   = xoops_getHandler('notification');
227
                $tags                  = [];
228
                $tags['FILE_NAME']     = $donnee['title'];
229
                $tags['FILE_URL']      = XOOPS_URL . '/modules/' . $moduleDirName . '/singlefile.php?cid=' . $donnee['cid'] . '&lid=' . $lidDownloads;
230
                $downloadscat_cat      = $categoryHandler->get($donnee['cid']);
231
                $tags['CATEGORY_NAME'] = $downloadscat_cat->getVar('cat_title');
232
                $tags['CATEGORY_URL']  = XOOPS_URL . '/modules/' . $moduleDirName . '/viewcat.php?cid=' . $donnee['cid'];
233
234
                if (true === $perm_autoapprove) {
235
                    $notificationHandler->triggerEvent('global', 0, 'new_file', $tags);
236
                    $notificationHandler->triggerEvent('category', $donnee['cid'], 'new_file', $tags);
237
                    redirect_header('index.php', 2, _MD_TDMDOWNLOADS_SUBMIT_RECEIVED . '<br>' . _MD_TDMDOWNLOADS_SUBMIT_ISAPPROVED . '');
238
                    exit;
239
                }
240
                $tags['WAITINGFILES_URL'] = XOOPS_URL . '/modules/' . $moduleDirName . '/admin/index.php?op=listNewDownloads';
241
                $notificationHandler->triggerEvent('global', 0, 'file_submit', $tags);
242
                $notificationHandler->triggerEvent('category', $donnee['cid'], 'file_submit', $tags);
243
                redirect_header('index.php', 2, _MD_TDMDOWNLOADS_SUBMIT_RECEIVED);
244
                exit;
245
            }
246
            echo $obj->getHtmlErrors();
247
        }
248
        $form = $obj->getForm($donnee, true);
249
        $xoopsTpl->assign('themeForm', $form->render());
250
251
        break;
252
}
253
require XOOPS_ROOT_PATH . '/footer.php';
254