Passed
Pull Request — master (#5)
by Michael
02:50
created

Modified::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 16
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 13
nc 1
nop 0
dl 0
loc 16
rs 9.8333
c 0
b 0
f 0
1
<?php
2
3
namespace XoopsModules\Tdmdownloads;
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
20
use XoopsModules\Tdmdownloads;
21
22
defined('XOOPS_ROOT_PATH') || die('Restricted access');
23
24
/**
25
 * Class Modified
26
 * @package XoopsModules\Tdmdownloads
27
 */
28
class Modified extends \XoopsObject
29
{
30
    // constructor
31
    public function __construct()
32
    {
33
        $this->initVar('requestid', XOBJ_DTYPE_INT, null, false, 11);
34
        $this->initVar('lid', XOBJ_DTYPE_INT, null, false, 11);
35
        $this->initVar('cid', XOBJ_DTYPE_INT, null, false, 5);
36
        $this->initVar('title', XOBJ_DTYPE_TXTBOX, null, false);
37
        $this->initVar('url', XOBJ_DTYPE_TXTBOX, null, false);
38
        $this->initVar('homepage', XOBJ_DTYPE_TXTBOX, null, false);
39
        $this->initVar('version', XOBJ_DTYPE_TXTBOX, null, false);
40
        $this->initVar('size', XOBJ_DTYPE_TXTBOX, null, false);
41
        $this->initVar('platform', XOBJ_DTYPE_TXTBOX, null, false);
42
        $this->initVar('logourl', XOBJ_DTYPE_TXTBOX, null, false);
43
        $this->initVar('description', XOBJ_DTYPE_TXTAREA, null, false);
44
        // Pour autoriser le html
45
        $this->initVar('dohtml', XOBJ_DTYPE_INT, 1, false);
46
        $this->initVar('modifysubmitter', XOBJ_DTYPE_INT, null, false, 11);
47
    }
48
49
    /**
50
     * @param null $db
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $db is correct as it would always require null to be passed?
Loading history...
51
     * @return int
52
     */
53
    public function getNewEnreg($db = null)
54
    {
55
        $newEnreg = 0;
56
        /** @var \XoopsMySQLDatabase $db */
57
        if (null !== $db) {
58
            $newEnreg = $db->getInsertId();
59
        }
60
61
        return $newEnreg;
62
    }
63
64
    /**
65
     * @param       $lid
66
     * @param       $erreur
67
     * @param array $donnee
68
     * @param bool  $action
69
     * @return \XoopsThemeForm
70
     */
71
    public function getForm($lid, $erreur, $donnee = [], $action = false)
72
    {
73
        global $xoopsDB, $xoopsModule, $xoopsUser;
74
        /** @var \XoopsModules\Tdmdownloads\Helper $helper */
75
        $helper = \XoopsModules\Tdmdownloads\Helper::getInstance();
76
77
        $moduleDirName = basename(dirname(__DIR__));
78
        if (false === $action) {
79
            $action = $_SERVER['REQUEST_URI'];
80
        }
81
        $groups = is_object($xoopsUser) ? $xoopsUser->getGroups() : XOOPS_GROUP_ANONYMOUS;
82
        /** @var \XoopsGroupPermHandler $grouppermHandler */
83
        $grouppermHandler = xoops_getHandler('groupperm');
84
        $perm_upload      = $grouppermHandler->checkRight('tdmdownloads_ac', 32, $groups, $xoopsModule->getVar('mid')) ? true : false;
85
        //appel des class
86
        /** @var \XoopsModules\Tdmdownloads\DownloadsHandler $downloadsHandler */
87
        $downloadsHandler = \XoopsModules\Tdmdownloads\Helper::getInstance()->getHandler('Downloads');
88
        //        $categoryHandler  = \XoopsModules\Tdmdownloads\Helper::getInstance()->getHandler('Category');
89
90
        $viewDownloads = $downloadsHandler->get($lid);
91
        require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
92
93
        // affectation des variables
94
        if (true === $erreur) {
95
            $d_title       = $donnee['title'];
96
            $d_cid         = $donnee['cid'];
97
            $d_homepage    = $donnee['homepage'];
98
            $d_version     = $donnee['version'];
99
            $d_size        = $donnee['size'];
0 ignored issues
show
Unused Code introduced by
The assignment to $d_size is dead and can be removed.
Loading history...
100
            $d_platform    = $donnee['platform'];
101
            $d_description = $donnee['description'];
102
        } else {
103
            $d_title       = $viewDownloads->getVar('title');
104
            $d_cid         = $viewDownloads->getVar('cid');
105
            $d_homepage    = $viewDownloads->getVar('homepage');
106
            $d_version     = $viewDownloads->getVar('version');
107
            $d_size        = $viewDownloads->getVar('size');
108
            $d_platform    = $viewDownloads->getVar('platform');
109
            $d_description = $viewDownloads->getVar('description', 'e');
110
        }
111
112
        //nom du formulaire
113
        $title = sprintf(_AM_TDMDOWNLOADS_FORMEDIT);
114
115
        //création du formulaire
116
        $form = new \XoopsThemeForm($title, 'form', $action, 'post', true);
117
        $form->setExtra('enctype="multipart/form-data"');
118
        //titre
119
        $form->addElement(new \XoopsFormText(_AM_TDMDOWNLOADS_FORMTITLE, 'title', 50, 255, $d_title), true);
120
        // fichier
121
        $fichier = new \XoopsFormElementTray(_AM_TDMDOWNLOADS_FORMFILE, '<br><br>');
122
        $url     = $viewDownloads->getVar('url');
123
        $formurl = new \XoopsFormText(_AM_TDMDOWNLOADS_FORMURL, 'url', 75, 255, $url);
0 ignored issues
show
Bug introduced by
It seems like $url can also be of type array and array; however, parameter $value of XoopsFormText::__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

123
        $formurl = new \XoopsFormText(_AM_TDMDOWNLOADS_FORMURL, 'url', 75, 255, /** @scrutinizer ignore-type */ $url);
Loading history...
124
        $fichier->addElement($formurl, false);
125
        if (true === $perm_upload) {
126
            $fichier->addElement(new \XoopsFormFile(_AM_TDMDOWNLOADS_FORMUPLOAD, 'attachedfile', $helper->getConfig('maxuploadsize')), false);
127
        }
128
        $form->addElement($fichier);
129
130
        //catégorie
131
        /** @var \XoopsModules\Tdmdownloads\CategoryHandler $categoryHandler */
132
        $categoryHandler = \XoopsModules\Tdmdownloads\Helper::getInstance()->getHandler('Category');
133
        /** @var \XoopsModules\Tdmdownloads\Utility $utility */
134
        $utility    = new \XoopsModules\Tdmdownloads\Utility();
135
        $categories = $utility->getItemIds('tdmdownloads_submit', $moduleDirName);
136
        $criteria   = new \CriteriaCompo();
137
        $criteria->setSort('cat_weight ASC, cat_title');
138
        $criteria->setOrder('ASC');
139
        if ($xoopsUser) {
140
            if (!$xoopsUser->isAdmin($xoopsModule->mid())) {
141
                $criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
142
            }
143
        } else {
144
            $criteria->add(new \Criteria('cat_cid', '(' . implode(',', $categories) . ')', 'IN'));
145
        }
146
        $downloadscatArray = $categoryHandler->getAll($criteria);
147
        if (0 == count($downloadscatArray)) {
148
            redirect_header('index.php', 2, _NOPERM);
149
        }
150
        $mytree = new \XoopsModules\Tdmdownloads\Tree($downloadscatArray, 'cat_cid', 'cat_pid');
151
        $form->addElement($mytree->makeSelectElement('cid', 'cat_title', '--', $d_cid, true, 0, '', _AM_TDMDOWNLOADS_FORMINCAT), true);
152
153
        //affichage des champs
154
        $fieldHandler = \XoopsModules\Tdmdownloads\Helper::getInstance()->getHandler('Field');
155
        $criteria     = new \CriteriaCompo();
156
        $criteria->setSort('weight ASC, title');
157
        $criteria->setOrder('ASC');
158
        $downloads_field = $fieldHandler->getAll($criteria);
0 ignored issues
show
Bug introduced by
The method getAll() does not exist on XoopsObjectHandler. It seems like you code against a sub-type of XoopsObjectHandler such as XoUserHandler or XoopsPersistableObjectHandler. ( Ignorable by Annotation )

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

158
        /** @scrutinizer ignore-call */ 
159
        $downloads_field = $fieldHandler->getAll($criteria);
Loading history...
159
        foreach (array_keys($downloads_field) as $i) {
160
            if (1 == $downloads_field[$i]->getVar('status_def')) {
161
                if (1 == $downloads_field[$i]->getVar('fid')) {
162
                    //page d'accueil
163
                    if (1 == $downloads_field[$i]->getVar('status')) {
164
                        $form->addElement(new \XoopsFormText(_AM_TDMDOWNLOADS_FORMHOMEPAGE, 'homepage', 50, 255, $d_homepage));
165
                    } else {
166
                        $form->addElement(new \XoopsFormHidden('homepage', ''));
167
                    }
168
                }
169
                if (2 == $downloads_field[$i]->getVar('fid')) {
170
                    //version
171
                    if (1 == $downloads_field[$i]->getVar('status')) {
172
                        $form->addElement(new \XoopsFormText(_AM_TDMDOWNLOADS_FORMVERSION, 'version', 10, 255, $d_version));
173
                    } else {
174
                        $form->addElement(new \XoopsFormHidden('version', ''));
175
                    }
176
                }
177
                if (3 == $downloads_field[$i]->getVar('fid')) {
178
                    //taille du fichier
179
                    /*if ($downloads_field[$i]->getVar('status') == 1) {
180
                        $form->addElement(new \XoopsFormText(_AM_TDMDOWNLOADS_FORMSIZE, 'size', 10, 255, $d_size));
181
                    } else {
182
                        $form->addElement(new \XoopsFormHidden('size', ''));
183
                    }*/
184
185
                    if (1 == $downloads_field[$i]->getVar('status')) {
186
                        $size_value_arr = explode(' ', $viewDownloads->getVar('size'));
0 ignored issues
show
Bug introduced by
It seems like $viewDownloads->getVar('size') can also be of type array and array; however, parameter $string of explode() 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

186
                        $size_value_arr = explode(' ', /** @scrutinizer ignore-type */ $viewDownloads->getVar('size'));
Loading history...
187
                        $size_value     = $size_value_arr[0];
188
                        if (false === $erreur) {
189
                            $type_value = $size_value_arr[1];
190
                        } else {
191
                            $type_value = $donnee['type_size'];
192
                        }
193
                        $aff_size = new \XoopsFormElementTray(_AM_TDMDOWNLOADS_FORMSIZE, '');
194
                        $aff_size->addElement(new \XoopsFormText('', 'size', 10, 255, $size_value));
195
                        $type = new \XoopsFormSelect('', 'type_size', $type_value);
196
                        //$type_arr = array('[o]' => _AM_TDMDOWNLOADS_BYTES, '[Ko]' => _AM_TDMDOWNLOADS_KBYTES, '[Mo]' => _AM_TDMDOWNLOADS_MBYTES, '[Go]' => _AM_TDMDOWNLOADS_GBYTES, '[To]' => _AM_TDMDOWNLOADS_TBYTES);
197
                        $type_arr = [
198
                            _AM_TDMDOWNLOADS_BYTES  => '[' . _AM_TDMDOWNLOADS_BYTES . ']',
199
                            _AM_TDMDOWNLOADS_KBYTES => '[' . _AM_TDMDOWNLOADS_KBYTES . ']',
200
                            _AM_TDMDOWNLOADS_MBYTES => '[' . _AM_TDMDOWNLOADS_MBYTES . ']',
201
                            _AM_TDMDOWNLOADS_GBYTES => '[' . _AM_TDMDOWNLOADS_GBYTES . ']',
202
                            _AM_TDMDOWNLOADS_TBYTES => '[' . _AM_TDMDOWNLOADS_TBYTES . ']',
203
                        ];
204
                        $type->addOptionArray($type_arr);
205
                        $aff_size->addElement($type);
206
                        $form->addElement($aff_size);
207
                    } else {
208
                        $form->addElement(new \XoopsFormHidden('size', ''));
209
                        $form->addElement(new \XoopsFormHidden('type_size', ''));
210
                    }
211
                }
212
                if (4 == $downloads_field[$i]->getVar('fid')) {
213
                    //plateforme
214
                    if (1 == $downloads_field[$i]->getVar('status')) {
215
                        $platformselect = new \XoopsFormSelect(_AM_TDMDOWNLOADS_FORMPLATFORM, 'platform', explode('|', $d_platform), 5, true);
216
                        $platform_array = explode('|', $helper->getConfig('platform'));
217
                        foreach ($platform_array as $platform) {
218
                            $platformselect->addOption((string)$platform, $platform);
219
                        }
220
                        $form->addElement($platformselect, false);
221
                        //$form->addElement(new \XoopsFormText(_AM_TDMDOWNLOADS_FORMPLATFORM, 'platform', 50, 255, $d_platform));
222
                    } else {
223
                        $form->addElement(new \XoopsFormHidden('platform', ''));
224
                    }
225
                }
226
            } else {
227
                $contenu          = '';
228
                $nom_champ        = 'champ' . $downloads_field[$i]->getVar('fid');
229
                $fielddataHandler = \XoopsModules\Tdmdownloads\Helper::getInstance()->getHandler('Fielddata');
230
                $criteria         = new \CriteriaCompo();
231
                $criteria->add(new \Criteria('lid', $viewDownloads->getVar('lid')));
0 ignored issues
show
Bug introduced by
It seems like $viewDownloads->getVar('lid') 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

231
                $criteria->add(new \Criteria('lid', /** @scrutinizer ignore-type */ $viewDownloads->getVar('lid')));
Loading history...
232
                $criteria->add(new \Criteria('fid', $downloads_field[$i]->getVar('fid')));
233
                $downloadsfielddata = $fielddataHandler->getAll($criteria);
234
                foreach (array_keys($downloadsfielddata) as $j) {
235
                    if (true === $erreur) {
236
                        $contenu = $donnee[$nom_champ];
237
                    } else {
238
                        $contenu = $downloadsfielddata[$j]->getVar('data');
239
                    }
240
                }
241
                if (1 == $downloads_field[$i]->getVar('status')) {
242
                    $form->addElement(new \XoopsFormText($downloads_field[$i]->getVar('title'), $nom_champ, 50, 255, $contenu));
243
                } else {
244
                    $form->addElement(new \XoopsFormHidden($nom_champ, ''));
245
                }
246
            }
247
        }
248
        //description
249
        $editor_configs           = [];
250
        $editor_configs['name']   = 'description';
251
        $editor_configs['value']  = $d_description;
252
        $editor_configs['rows']   = 20;
253
        $editor_configs['cols']   = 60;
254
        $editor_configs['width']  = '100%';
255
        $editor_configs['height'] = '400px';
256
        $editor_configs['editor'] = $helper->getConfig('editor');
257
        $form->addElement(new \XoopsFormEditor(_AM_TDMDOWNLOADS_FORMTEXTDOWNLOADS, 'description', $editor_configs), true);
258
        //image
259
        if ($helper->getConfig('useshots')) {
260
            $uploaddir        = XOOPS_ROOT_PATH . '/uploads/' . $moduleDirName . '/images/shots/' . $viewDownloads->getVar('logourl');
261
            $downloadscat_img = $viewDownloads->getVar('logourl') ?: 'blank.gif';
262
            $uploadirectory   = '/uploads/' . $moduleDirName . '/images/shots';
263
            if (!is_file($uploaddir)) {
264
                $downloadscat_img = 'blank.gif';
265
            }
266
            $imgtray      = new \XoopsFormElementTray(_AM_TDMDOWNLOADS_FORMIMG, '<br>');
267
            $imgpath      = sprintf(_AM_TDMDOWNLOADS_FORMPATH, $uploadirectory);
268
            $imageselect  = new \XoopsFormSelect($imgpath, 'logo_img', $downloadscat_img);
269
            $topics_array = \XoopsLists:: getImgListAsArray(XOOPS_ROOT_PATH . $uploadirectory);
270
            foreach ($topics_array as $image) {
271
                $imageselect->addOption((string)$image, $image);
272
            }
273
            $imageselect->setExtra("onchange='showImgSelected(\"image3\", \"logo_img\", \"" . $uploadirectory . '", "", "' . XOOPS_URL . "\")'");
274
            $imgtray->addElement($imageselect, false);
275
            $imgtray->addElement(new \XoopsFormLabel('', "<br><img src='" . XOOPS_URL . '/' . $uploadirectory . '/' . $downloadscat_img . "' name='image3' id='image3' alt=''>"));
276
            $fileseltray = new \XoopsFormElementTray('', '<br>');
277
            if (true === $perm_upload) {
278
                $fileseltray->addElement(new \XoopsFormFile(_AM_TDMDOWNLOADS_FORMUPLOAD, 'attachedimage', $helper->getConfig('maxuploadsize')), false);
279
            }
280
            $imgtray->addElement($fileseltray);
281
            $form->addElement($imgtray);
282
        }
283
        $form->addElement(new \XoopsFormCaptcha(), true);
284
        $form->addElement(new \XoopsFormHidden('lid', $lid));
285
        //pour enregistrer le formulaire
286
        $form->addElement(new \XoopsFormHidden('op', 'save'));
287
        //bouton d'envoi du formulaire
288
        $form->addElement(new \XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
289
290
        return $form;
291
    }
292
}
293