Download::category()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 0
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace XoopsModules\Wfdownloads;
4
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
10
 This program is distributed in the hope that it will be useful,
11
 but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
 */
14
15
/**
16
 * Wfdownloads module
17
 *
18
 * @copyright       XOOPS Project (https://xoops.org)
19
 * @license         GNU GPL 2 or later (https://www.gnu.org/licenses/gpl-2.0.html)
20
 * @package         wfdownload
21
 * @since           3.23
22
 * @author          Xoops Development Team
23
 */
24
25
require_once \dirname(__DIR__) . '/include/common.php';
26
27
/**
28
 * Class Download
29
 */
30
class Download extends \XoopsObject
31
{
32
    /**
33
     * @access public
34
     */
35
    public $helper;
36
    /**
37
     * @var Category
38
     * @access public
39
     */
40
    public $category;
41
    public $db;
42
43
    /**
44
     * @param int|null $id
45
     */
46
    public function __construct($id = null)
47
    {
48
        /** @var \XoopsModules\Wfdownloads\Helper $this ->helper */
49
        $this->helper = Helper::getInstance();
0 ignored issues
show
Bug introduced by
The property helper does not seem to exist on XoopsModules\Wfdownloads\Helper.
Loading history...
50
        $this->db     = \XoopsDatabaseFactory::getDatabaseConnection();
0 ignored issues
show
Bug introduced by
The property db does not seem to exist on XoopsModules\Wfdownloads\Helper.
Loading history...
51
        $this->initVar('lid', \XOBJ_DTYPE_INT);
0 ignored issues
show
Bug introduced by
The method initVar() does not exist on XoopsModules\Wfdownloads\Helper. Did you maybe mean init()? ( Ignorable by Annotation )

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

51
        $this->/** @scrutinizer ignore-call */ 
52
               initVar('lid', \XOBJ_DTYPE_INT);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
52
        $this->initVar('cid', \XOBJ_DTYPE_INT, 0);
53
        $this->initVar('title', \XOBJ_DTYPE_TXTBOX, '');
54
        $this->initVar('url', \XOBJ_DTYPE_URL, 'http://');
55
        $this->initVar('filename', \XOBJ_DTYPE_TXTBOX, '');
56
        $this->initVar('filetype', \XOBJ_DTYPE_TXTBOX, '');
57
        $this->initVar('homepage', \XOBJ_DTYPE_URL, 'http://');
58
        $this->initVar('version', \XOBJ_DTYPE_TXTBOX, '');
59
        $this->initVar('size', \XOBJ_DTYPE_INT, 0);
60
        $this->initVar('platform', \XOBJ_DTYPE_TXTBOX, '');
61
        $this->initVar('screenshot', \XOBJ_DTYPE_TXTBOX, '');
62
        $this->initVar('screenshot2', \XOBJ_DTYPE_TXTBOX, '');
63
        $this->initVar('screenshot3', \XOBJ_DTYPE_TXTBOX, '');
64
        $this->initVar('screenshot4', \XOBJ_DTYPE_TXTBOX, '');
65
        $this->initVar('submitter', \XOBJ_DTYPE_INT);
66
        $this->initVar('publisher', \XOBJ_DTYPE_TXTBOX, '');
67
        $this->initVar('status', \XOBJ_DTYPE_INT, \_WFDOWNLOADS_STATUS_WAITING);
68
        $this->initVar('date', \XOBJ_DTYPE_INT);
69
        $this->initVar('hits', \XOBJ_DTYPE_INT, 0);
70
        $this->initVar('rating', \XOBJ_DTYPE_OTHER, 0.0);
71
        $this->initVar('votes', \XOBJ_DTYPE_INT, 0);
72
        $this->initVar('comments', \XOBJ_DTYPE_INT, 0);
73
        $this->initVar('license', \XOBJ_DTYPE_TXTBOX, '');
74
        $this->initVar('mirror', \XOBJ_DTYPE_TXTBOX, '');
75
        $this->initVar('price', \XOBJ_DTYPE_TXTBOX, 0);
76
        $this->initVar('paypalemail', \XOBJ_DTYPE_TXTBOX, '');
77
        $this->initVar('features', \XOBJ_DTYPE_TXTAREA, '');
78
        $this->initVar('requirements', \XOBJ_DTYPE_TXTAREA, '');
79
        $this->initVar('homepagetitle', \XOBJ_DTYPE_TXTBOX, '');
80
        $this->initVar('forumid', \XOBJ_DTYPE_INT, 0);
81
        $this->initVar('limitations', \XOBJ_DTYPE_TXTBOX, '');
82
        $this->initVar('versiontypes', \XOBJ_DTYPE_TXTBOX, '');
83
        $this->initVar('dhistory', \XOBJ_DTYPE_TXTAREA, '');
84
        $this->initVar('published', \XOBJ_DTYPE_INT, 0); // published time or 0
85
        $this->initVar('expired', \XOBJ_DTYPE_INT, 0);
86
        $this->initVar('updated', \XOBJ_DTYPE_INT, 0); // uploaded time or 0
87
        $this->initVar('offline', \XOBJ_DTYPE_INT, false); // boolean
88
        $this->initVar('summary', \XOBJ_DTYPE_TXTAREA, '');
89
        $this->initVar('description', \XOBJ_DTYPE_TXTAREA, '');
90
        $this->initVar('ipaddress', \XOBJ_DTYPE_TXTBOX, '');
91
        $this->initVar('notifypub', \XOBJ_DTYPE_INT, 0);
92
        // Formulize module support (2006/05/04) jpc
93
        $this->initVar('formulize_idreq', \XOBJ_DTYPE_INT, 0);
94
        // added 3.23
95
        $this->initVar('screenshots', \XOBJ_DTYPE_ARRAY, []); // IN PROGRESS
96
        $this->initVar('dohtml', \XOBJ_DTYPE_INT, false); // boolean
97
        $this->initVar('dosmiley', \XOBJ_DTYPE_INT, true); // boolean
98
        $this->initVar('doxcode', \XOBJ_DTYPE_INT, true); // boolean
99
        $this->initVar('doimage', \XOBJ_DTYPE_INT, true); // boolean
100
        $this->initVar('dobr', \XOBJ_DTYPE_INT, true); // boolean
101
102
        if (null !== $id) {
103
            $item = $this->helper->getHandler('Item')->get($id);
104
            foreach ($item->vars as $k => $v) {
105
                $this->assignVar($k, $v['value']);
0 ignored issues
show
Bug introduced by
The method assignVar() does not exist on XoopsModules\Wfdownloads\Helper. ( Ignorable by Annotation )

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

105
                $this->/** @scrutinizer ignore-call */ 
106
                       assignVar($k, $v['value']);

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
106
            }
107
        }
108
    }
109
110
    /**
111
     * @param string $method
112
     * @param array  $args
113
     *
114
     * @return mixed
115
     */
116
    public function __call($method, $args)
117
    {
118
        $arg = $args[0] ?? null;
119
120
        return $this->getVar($method, $arg);
121
    }
122
123
    /**
124
     * @return null|\XoopsModules\Wfdownloads\Category
125
     */
126
    public function category()
127
    {
128
        if (!isset($this->_category)) {
129
            $this->_category = $this->helper->getHandler('Category')->get($this->getVar('cid'));
0 ignored issues
show
Bug Best Practice introduced by
The property _category does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
130
        }
131
132
        return $this->_category;
133
    }
134
135
    /**
136
     * @return mixed
137
     */
138
    public function getDownloadInfo()
139
    {
140
        \xoops_load('XoopsUserUtility');
141
142
        $download['id']  = $this->getVar('lid');
0 ignored issues
show
Comprehensibility Best Practice introduced by
$download was never initialized. Although not strictly required by PHP, it is generally a good practice to add $download = array(); before regardless.
Loading history...
143
        $download['cid'] = $this->getVar('cid');
144
145
        $use_mirrors = $this->helper->getConfig('enable_mirrors');
146
        $add_mirror  = false;
147
        if (!\is_object($GLOBALS['xoopsUser'])
148
            && (\_WFDOWNLOADS_ANONPOST_MIRROR == $this->helper->getConfig('anonpost')
149
                || \_WFDOWNLOADS_ANONPOST_BOTH == $this->helper->getConfig('anonpost'))
150
            && (\_WFDOWNLOADS_SUBMISSIONS_MIRROR == $this->helper->getConfig('submissions')
151
                || \_WFDOWNLOADS_SUBMISSIONS_BOTH == $this->helper->getConfig('submissions'))
152
            && true === $use_mirrors) {
153
            $add_mirror = true;
154
        } elseif (\is_object($GLOBALS['xoopsUser'])
155
                  && (\_WFDOWNLOADS_SUBMISSIONS_MIRROR == $this->helper->getConfig('submissions')
156
                      || \_WFDOWNLOADS_SUBMISSIONS_BOTH == $this->helper->getConfig('submissions')
157
                      || Utility::userIsAdmin())
158
                  && true === $use_mirrors) {
159
            $add_mirror = true;
160
        }
161
        $download['add_mirror']  = $add_mirror;
162
        $download['use_mirrors'] = $use_mirrors;
163
164
        $download['use_reviews']       = $this->helper->getConfig('enable_reviews');
165
        $download['use_ratings']       = $this->helper->getConfig('enable_ratings');
166
        $download['use_brokenreports'] = $this->helper->getConfig('enable_brokenreports');
167
        $download['rateimg']           = 'rate' . \round(\number_format($this->getVar('rating'), 0) / 2) . '.gif'; // this definition is not removed for backward compatibility issues
168
        $download['average_rating']    = $this->getVar('rating'); // new
169
        $download['votes']             = (1 == $this->getVar('votes')) ? \_MD_WFDOWNLOADS_ONEVOTE : \sprintf(\_MD_WFDOWNLOADS_NUMVOTES, $this->getVar('votes'));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('votes') can also be of type array and array; however, parameter $args of sprintf() 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

169
        $download['votes']             = (1 == $this->getVar('votes')) ? \_MD_WFDOWNLOADS_ONEVOTE : \sprintf(\_MD_WFDOWNLOADS_NUMVOTES, /** @scrutinizer ignore-type */ $this->getVar('votes'));
Loading history...
170
        $download['hits']              = $this->getVar('hits');
171
172
        $download['path'] = $this->helper->getHandler('Category')->getNicePath($download['cid']);
173
174
        $download['imageheader'] = Utility::headerImage();
175
176
        $download['title']    = \trim($this->getVar('title'));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('title') can also be of type array and array; however, parameter $str of trim() 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

176
        $download['title']    = \trim(/** @scrutinizer ignore-type */ $this->getVar('title'));
Loading history...
177
        $download['url']      = $this->getVar('url');
178
        $download['filename'] = $this->getVar('filename');
179
        $download['filetype'] = $this->getVar('filetype');
180
        /*
181
                if ($this->getVar('screenshot')) { // IN PROGRESS
182
                    $download['screenshot_full'] = $this->getVar('screenshot'); // IN PROGRESS
183
                    $download['screenshot_full1'] = $this->getVar('screenshot'); // IN PROGRESS
184
                    if ($this->getVar('screenshot') // IN PROGRESS
185
                        && file_exists(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot')))
186
                    ) {
187
                        if ($this->helper->getConfig('usethumbs') === true) {
188
                            $download['screenshot_thumb'] = Utility::createThumb(
189
                                $download['screenshot_full'], $this->helper->getConfig('screenshots'), 'thumbs',
190
                                $this->helper->getConfig('shotwidth'), $this->helper->getConfig('shotheight'),
191
                                $this->helper->getConfig('imagequality'), $this->helper->getConfig('updatethumbs'), $this->helper->getConfig('keepaspect')
192
                            );
193
                        } else {
194
                            $download['screenshot_thumb'] = XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot'));
195
                        }
196
                        $download['screenshot_thumb1'] = $download['screenshot_thumb']; // IN PROGRESS
197
                    }
198
                }
199
                if ($this->getVar('screenshot2') && $this->helper->getConfig('max_screenshot') >= 2) { // IN PROGRESS
200
                    $download['screenshot_full2'] = $this->getVar('screenshot2');
201
                    if ($this->getVar('screenshot2')
202
                        && file_exists(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot2')))
203
                    ) {
204
                        if ($this->helper->getConfig('usethumbs') === true) {
205
                            $download['screenshot_thumb2'] = Utility::createThumb(
206
                                $download['screenshot_full2'], $this->helper->getConfig('screenshots'), 'thumbs',
207
                                $this->helper->getConfig('shotwidth'), $this->helper->getConfig('shotheight'),
208
                                $this->helper->getConfig('imagequality'), $this->helper->getConfig('updatethumbs'), $this->helper->getConfig('keepaspect')
209
                            );
210
                        } else {
211
                            $download['screenshot_thumb2'] = XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot2'));
212
                        }
213
                    }
214
                }
215
                if ($this->getVar('screenshot3') && $this->helper->getConfig('max_screenshot') >= 3) { // IN PROGRESS
216
                    $download['screenshot_full3'] = $this->getVar('screenshot3');
217
                    if ($this->getVar('screenshot3')
218
                        && file_exists(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot3')))
219
                    ) {
220
                        if ($this->helper->getConfig('usethumbs') === true) {
221
                            $download['screenshot_thumb3'] = Utility::createThumb(
222
                                $download['screenshot_full3'], $this->helper->getConfig('screenshots'), 'thumbs',
223
                                $this->helper->getConfig('shotwidth'), $this->helper->getConfig('shotheight'),
224
                                $this->helper->getConfig('imagequality'), $this->helper->getConfig('updatethumbs'), $this->helper->getConfig('keepaspect')
225
                            );
226
                        } else {
227
                            $download['screenshot_thumb3'] = XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot3'));
228
                        }
229
                    }
230
                }
231
                if ($this->getVar('screenshot4') && $this->helper->getConfig('max_screenshot') >= 4) { // IN PROGRESS
232
                    $download['screenshot_full4'] = $this->getVar('screenshot4');
233
                    if ($this->getVar('screenshot4')
234
                        && file_exists(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot4')))
235
                    ) {
236
                        if ($this->helper->getConfig('usethumbs') === true) {
237
                            $download['screenshot_thumb4'] = Utility::createThumb(
238
                                $download['screenshot_full4'], $this->helper->getConfig('screenshots'), 'thumbs',
239
                                $this->helper->getConfig('shotwidth'), $this->helper->getConfig('shotheight'),
240
                                $this->helper->getConfig('imagequality'), $this->helper->getConfig('updatethumbs'), $this->helper->getConfig('keepaspect')
241
                            );
242
                        } else {
243
                            $download['screenshot_thumb4'] = XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . xoops_trim($this->getVar('screenshot4'));
244
                        }
245
                    }
246
                }
247
        */
248
        // IN PROGRESS
249
        $screenshots             = $this->getVar('screenshots');
250
        $download['screenshots'] = [];
251
        foreach ($screenshots as $key => $screenshot) {
252
            if (\file_exists(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots') . '/' . \xoops_trim($screenshot))) {
253
                if ('' != $screenshot && 1 === $this->helper->getConfig('usethumbs')) {
254
                    $screenshot_thumb = Utility::createThumb(
255
                        $screenshot,
256
                        $this->helper->getConfig('screenshots'),
257
                        'thumbs',
258
                        $this->helper->getConfig('shotwidth'),
259
                        $this->helper->getConfig('shotheight'),
260
                        $this->helper->getConfig('imagequality'),
261
                        $this->helper->getConfig('updatethumbs'),
262
                        $this->helper->getConfig('keepaspect')
263
                    );
264
                } else {
265
                    $screenshot_thumb = XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . \xoops_trim($screenshot);
266
                }
267
                $download['screenshots'][$key]['filename']  = $screenshot;
268
                $download['screenshots'][$key]['thumb_url'] = $screenshot_thumb;
269
                unset($screenshot_thumb);
270
            }
271
        }
272
273
        $download['homepage'] = (!$this->getVar('homepage') || 'http://' === $this->getVar('homepage')) ? '' : $GLOBALS['myts']->htmlSpecialChars(\trim($this->getVar('homepage')));
274
275
        $homepagetitle = $this->getVar('homepagetitle');
276
        if ($download['homepage'] && !empty($download['homepage'])) {
277
            $download['homepagetitle'] = ('' !== $homepagetitle) ? \trim($download['homepage']) : \trim($homepagetitle);
278
            $download['homepage']      = "<a href='" . $download['homepage'] . "' target='_blank'>" . $homepagetitle . '</a>';
279
        } else {
280
            $download['homepage'] = '';
281
        }
282
283
        if (true !== $use_mirrors) {
284
            $download['mirror'] = ('http://' === $this->getVar('mirror')) ? '' : \trim($this->getVar('mirror'));
285
            if ($download['mirror'] && !empty($download['mirror'])) {
286
                $download['mirror'] = "<a href='" . $download['mirror'] . "' target='_blank'>" . \_MD_WFDOWNLOADS_MIRRORSITE . '</a>';
287
            } else {
288
                $download['mirror'] = '';
289
            }
290
        }
291
292
        $download['comments'] = $this->getVar('comments');
293
294
        $download['version'] = $this->getVar('version') ?: 0;
295
296
        $download['downtime'] = \str_replace('|', '<br>', Utility::getDownloadTime($this->getVar('size'), 1, 1, 1, 1, 0));
297
298
        $download['size'] = Utility::bytesToSize1024($this->getVar('size'));
299
300
        $time                     = (0 != $this->getVar('updated')) ? $this->getVar('updated') : $this->getVar('published');
301
        $download['updated']      = \formatTimestamp($time, $this->helper->getConfig('dateformat'));
302
        $download['lang_subdate'] = (0 != $this->getVar('updated')) ? \_MD_WFDOWNLOADS_UPDATEDON : \_MD_WFDOWNLOADS_SUBMITDATE;
303
304
        $summary = $this->getVar('summary');
305
        if ((\_WFDOWNLOADS_AUTOSUMMARY_YES == $this->helper->getConfig('autosummary')) || (\_WFDOWNLOADS_AUTOSUMMARY_IFBLANK == $this->helper->getConfig('autosummary') && empty($summary))) {
306
            // generate auto summary from description field
307
            $download['summary'] = $this->getVar('description');
308
            // patch for multilanguage summary if xlanguage module is installed
309
            if (Utility::checkModule('xlanguage')) {
310
                global $xlanguage;
311
                require_once XOOPS_ROOT_PATH . '/modules/xlanguage/include/vars.php';
312
                require_once XOOPS_ROOT_PATH . '/modules/xlanguage/include/functions.php';
313
                $download['summary'] = xlanguage_ml($download['summary']);
0 ignored issues
show
Bug introduced by
The function xlanguage_ml was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

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

313
                $download['summary'] = /** @scrutinizer ignore-call */ xlanguage_ml($download['summary']);
Loading history...
314
            }
315
            // html or plain text auto summary
316
            if ($this->helper->getConfig('autosumplaintext')) {
317
                $download['summary'] = \strip_tags($download['summary'], '<br><br>');
318
            }
319
            // truncate auto summary
320
            $autosumLength = (int)$this->helper->getConfig('autosumlength');
321
            if (mb_strlen($download['summary']) > $autosumLength) {
322
                $download['summary'] = Utility::truncateHtml($download['summary'], $autosumLength, '...', false, true);
323
            }
324
        } else {
325
            $download['summary'] = $summary;
326
        }
327
328
        $download['description'] = $this->getVar('description'); //no html
329
        //
330
        $download['price'] = (0 != $this->getVar('price')) ? $this->getVar('price') : \_MD_WFDOWNLOADS_PRICEFREE;
331
332
        $limitationsArray        = $this->helper->getConfig('limitations');
333
        $download['limitations'] = ('' === $this->getVar('limitations')) ? \_MD_WFDOWNLOADS_NOTSPECIFIED : $GLOBALS['myts']->htmlSpecialChars(\trim($limitationsArray[$this->getVar('limitations')]));
334
        //
335
        //        $versiontypesArray        = $this->helper->getConfig('versiontypes');
336
        //        $download['versiontypes'] = ('' === $this->getVar('versiontypes')) ? _MD_WFDOWNLOADS_NOTSPECIFIED : $GLOBALS['myts']->htmlSpecialChars(trim($versiontypesArray[$this->getVar('versiontypes')]));
337
        $temp                     = $this->getVar('versiontypes') ?? '';
338
        $download['versiontypes'] = (!$temp) ? \_MD_WFDOWNLOADS_NOTSPECIFIED : $temp;
339
340
        $licenseArray        = $this->helper->getConfig('license');
341
        $download['license'] = ('' === $this->getVar('license')) ? \_MD_WFDOWNLOADS_NOTSPECIFIED : $GLOBALS['myts']->htmlSpecialChars(\trim($licenseArray[$this->getVar('license')]));
342
343
        $download['submitter'] = \XoopsUserUtility::getUnameFromId($this->getVar('submitter'));
344
345
        $publisher             = $this->getVar('publisher');
346
        $download['publisher'] = !empty($publisher) ? $publisher : '';
347
348
        $platformArray        = $this->helper->getConfig('platform');
349
        $download['platform'] = $GLOBALS['myts']->htmlSpecialChars($platformArray[$this->getVar('platform')]);
350
351
        $history             = $this->getVar('dhistory', 'n');
352
        $download['history'] = $GLOBALS['myts']->displayTarea($history, true);
353
354
        $download['features'] = [];
355
        if ($this->getVar('features')) {
356
            $features = \explode('|', \trim($this->getVar('features')));
357
            foreach ($features as $feature) {
358
                $download['features'][] = $feature;
359
            }
360
        }
361
362
        $download['requirements'] = [];
363
        if ($this->getVar('requirements')) {
364
            $requirements = \explode('|', \trim($this->getVar('requirements')));
365
            foreach ($requirements as $requirement) {
366
                $download['requirements'][] = $requirement;
367
            }
368
        }
369
370
        $download['mail_subject'] = \rawurlencode(\sprintf(\_MD_WFDOWNLOADS_INTFILEFOUND, $GLOBALS['xoopsConfig']['sitename']));
371
372
        $download['mail_body'] = \rawurlencode(\sprintf(\_MD_WFDOWNLOADS_INTFILEFOUND, $GLOBALS['xoopsConfig']['sitename']) . ':  ' . WFDOWNLOADS_URL . '/singlefile.php?cid=' . $download['cid'] . '&amp;lid=' . $download['id']);
0 ignored issues
show
Bug introduced by
The constant XoopsModules\Wfdownloads\WFDOWNLOADS_URL was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
373
374
        $download['isadmin'] = Utility::userIsAdmin() ? true : false;
375
376
        $download['adminlink'] = '';
377
        if (true === $download['isadmin']) {
378
            $download['adminlink'] = '[<a href="' . WFDOWNLOADS_URL . '/admin/downloads.php?op=download.edit&amp;lid=' . $download['id'] . '">' . \_MD_WFDOWNLOADS_EDIT . '</a> | ';
379
            $download['adminlink'] .= '<a href="' . WFDOWNLOADS_URL . '/admin/downloads.php?op=download.delete&amp;lid=' . $download['id'] . '">' . \_MD_WFDOWNLOADS_DELETE . '</a>]';
380
        }
381
382
        $download['is_updated'] = ($this->getVar('updated') > 0) ? \_MD_WFDOWNLOADS_UPDATEDON : \_MD_WFDOWNLOADS_SUBMITDATE;
383
384
        if (\is_object($GLOBALS['xoopsUser']) && true !== $download['isadmin']) {
385
            $download['useradminlink'] = (int)$GLOBALS['xoopsUser']->getvar('uid') == $this->getVar('submitter'); // this definition is not removed for backward compatibility issues
386
            $download['issubmitter']   = (int)$GLOBALS['xoopsUser']->getvar('uid') == $this->getVar('submitter');
387
        }
388
389
        $sql2                    = 'SELECT rated';
390
        $sql2                    .= ' FROM ' . $GLOBALS['xoopsDB']->prefix('wfdownloads_reviews');
391
        $sql2                    .= " WHERE lid = '" . (int)$download['id'] . "' AND submit = '1'";
392
        $results                 = $GLOBALS['xoopsDB']->query($sql2);
393
        $numrows                 = $GLOBALS['xoopsDB']->getRowsNum($results);
394
        $download['reviews_num'] = $numrows ?: 0;
395
396
        $totalReviewsRating = 0;
397
        while (false !== ($review_text = $GLOBALS['xoopsDB']->fetchArray($results))) {
398
            $totalReviewsRating += $review_text['rated'];
399
        }
400
        $averageReviewsRating              = ($download['reviews_num'] > 0) ? $totalReviewsRating / $download['reviews_num'] : 0;
401
        $download['review_average_rating'] = $averageReviewsRating; // new
402
        //
403
        $download['review_rateimg'] = 'rate' . \round(\number_format($averageReviewsRating, 0) / 2) . '.gif'; // this definition is not removed for backward compatibility issues
404
        //
405
        $download['icons'] = Utility::displayIcons($this->getVar('published'), $this->getVar('status'), $this->getVar('hits'));
406
407
        $sql3                    = 'SELECT downurl';
408
        $sql3                    .= ' FROM ' . $GLOBALS['xoopsDB']->prefix('wfdownloads_mirrors');
409
        $sql3                    .= " WHERE lid = '" . (int)$download['id'] . "' AND submit = '1'";
410
        $results3                = $GLOBALS['xoopsDB']->query($sql3);
411
        $numrows2                = $GLOBALS['xoopsDB']->getRowsNum($results3);
412
        $download['mirrors_num'] = $numrows2 ?: 0;
413
        // file url
414
        $fullFilename = \trim($download['filename']);
415
        if (('' === !$download['url'] && 'http://' === !$download['url']) || '' == $fullFilename) {
0 ignored issues
show
introduced by
The condition '' === ! $download['url'] is always false.
Loading history...
416
            $download['file_url'] = $GLOBALS['myts']->htmlSpecialChars(\preg_replace('/javascript:/si', 'javascript:', $download['url']), \ENT_QUOTES);
417
        } else {
418
            $download['file_url'] = XOOPS_URL . \str_replace(XOOPS_ROOT_PATH, '', $this->helper->getConfig('uploaddir')) . '/' . \stripslashes(\trim($fullFilename));
419
        }
420
        // has_custom_fields
421
        $download['has_custom_fields'] = (Utility::checkModule('formulize') && $this->getVar('formulize_idreq'));
422
423
        return $download;
424
    }
425
426
    /**
427
     * @param array $customArray
428
     *
429
     * @return \XoopsThemeForm
430
     */
431
    public function getForm($customArray = []) // $custom array added April 22, 2006 by jwe)
432
    {
433
        require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
434
        require_once XOOPS_ROOT_PATH . '/class/tree.php';
435
436
        $groups = \is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : [0 => XOOPS_GROUP_ANONYMOUS];
437
438
        $use_mirrors = $this->helper->getConfig('enable_mirrors');
439
440
        $sform = new \XoopsThemeForm(\_MD_WFDOWNLOADS_SUBMITCATHEAD, 'storyform', $_SERVER['REQUEST_URI']);
441
        $sform->setExtra('enctype="multipart/form-data"');
442
        // download: title
443
        $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_FILETITLE, 'title', 50, 255, $this->getVar('title', 'e')), true);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('title', 'e') 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

443
        $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_FILETITLE, 'title', 50, 255, /** @scrutinizer ignore-type */ $this->getVar('title', 'e')), true);
Loading history...
444
        // download: url
445
        $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_DLURL, 'url', 50, 255, $this->getVar('url', 'e')), false);
446
        if (!$this->isNew()) {
447
            // download: filename
448
            $sform->addElement(new \XoopsFormHidden('filename', $this->getVar('filename', 'e')));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('filename', 'e') can also be of type array and array; however, parameter $value of XoopsFormHidden::__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

448
            $sform->addElement(new \XoopsFormHidden('filename', /** @scrutinizer ignore-type */ $this->getVar('filename', 'e')));
Loading history...
449
            // download: filetype
450
            $sform->addElement(new \XoopsFormHidden('filetype', $this->getVar('filetype', 'e')));
451
        }
452
        // download: userfile
453
        if (($this->helper->getConfig('useruploads')
454
             && \array_intersect($this->helper->getConfig('useruploadsgroup'), $groups))
0 ignored issues
show
Bug introduced by
It seems like $this->helper->getConfig('useruploadsgroup') can also be of type null; however, parameter $array1 of array_intersect() does only seem to accept array, 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

454
             && \array_intersect(/** @scrutinizer ignore-type */ $this->helper->getConfig('useruploadsgroup'), $groups))
Loading history...
455
            || Utility::userIsAdmin()) {
456
            $userfile_file = new \XoopsFormFile(\_MD_WFDOWNLOADS_UPLOAD_FILEC, 'userfile', 0);
457
            // get max file size (setup and php.ini)
458
            $phpiniMaxFileSize = \min((int)\ini_get('upload_max_filesize'), (int)\ini_get('post_max_size'), (int)\ini_get('memory_limit')) * 1024 * 1024; // bytes
459
            $maxFileSize       = Utility::bytesToSize1024(\min($this->helper->getConfig('maxfilesize'), $phpiniMaxFileSize));
460
            // get allowed mimetypes
461
            if (Utility::userIsAdmin()) {
462
                $criteria = new \Criteria('mime_admin', true);
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type string expected by parameter $value of Criteria::__construct(). ( Ignorable by Annotation )

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

462
                $criteria = new \Criteria('mime_admin', /** @scrutinizer ignore-type */ true);
Loading history...
463
            } else {
464
                $criteria = new \Criteria('mime_user', true);
465
            }
466
            $mimetypes         = $this->helper->getHandler('Mimetype')->getList($criteria);
467
            $allowedExtensions = \implode(' | ', $mimetypes);
468
            $userfile_file->setDescription(\sprintf(\_MD_WFDOWNLOADS_UPLOAD_FILEC_DESC, $maxFileSize, $this->helper->getConfig('maximgwidth'), $this->helper->getConfig('maximgheight'), $allowedExtensions, mb_substr($allowedExtensions, 0, 40) . '...'));
469
            $sform->addElement($userfile_file, false);
470
        }
471
        // download: mirror
472
        if (true !== $use_mirrors) {
473
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_MIRROR, 'mirror', 50, 255, $this->getVar('mirror', 'e')), false);
474
        }
475
        // download: cid
476
        // Formulize module support (2006/05/04) jpc - start
477
        if (Utility::checkModule('formulize')) {
478
            $sform->addElement(new \XoopsFormHidden('cid', $this->getVar('cid', 'e')));
479
        } else {
480
            $categoryObjs     = $this->helper->getHandler('Category')->getUserUpCategories();
481
            $categoryObjsTree = new ObjectTree($categoryObjs, 'cid', 'pid');
482
483
            if (Utility::checkVerXoops($GLOBALS['xoopsModule'], '2.5.9')) {
484
                $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '--', $this->getVar('cid'), true, 0, '', \_MD_WFDOWNLOADS_CATEGORYC);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid') can also be of type array and array; however, parameter $selected of XoopsObjectTree::makeSelectElement() 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

484
                $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '--', /** @scrutinizer ignore-type */ $this->getVar('cid'), true, 0, '', \_MD_WFDOWNLOADS_CATEGORYC);
Loading history...
485
                $sform->addElement($catSelect);
486
            } else {
487
                $sform->addElement(new \XoopsFormLabel(\_MD_WFDOWNLOADS_CATEGORYC, $categoryObjsTree->makeSelBox('cid', 'title', '-', $this->getVar('cid', 'e'))));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid', 'e') can also be of type array and array; however, parameter $selected of XoopsModules\Wfdownloads\ObjectTree::makeSelBox() 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

487
                $sform->addElement(new \XoopsFormLabel(\_MD_WFDOWNLOADS_CATEGORYC, $categoryObjsTree->makeSelBox('cid', 'title', '-', /** @scrutinizer ignore-type */ $this->getVar('cid', 'e'))));
Loading history...
488
            }
489
        }
490
491
        if (0 == \count($customArray)) {
492
            // download: homepagetitle
493
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_HOMEPAGETITLEC, 'homepagetitle', 50, 255, $this->getVar('homepagetitle', 'e')), false);
494
            // download: homepage
495
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_HOMEPAGEC, 'homepage', 50, 255, $this->getVar('homepage', 'e')), false);
496
            // download: version
497
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_VERSIONC, 'version', 10, 20, $this->getVar('version', 'e')), false);
498
            // download: publisher
499
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_PUBLISHERC, 'publisher', 50, 255, $this->getVar('publisher', 'e')), false);
500
            // download: size
501
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_FILESIZEC, 'size', 10, 20, $this->getVar('size', 'e')), false);
502
            // download: platform
503
            $platform_array  = $this->helper->getConfig('platform');
504
            $platform_select = new \XoopsFormSelect(\_MD_WFDOWNLOADS_PLATFORMC, 'platform', $this->getVar('platform', 'e'));
505
            $platform_select->addOptionArray($platform_array);
506
            $sform->addElement($platform_select);
507
            // download: license
508
            $license_array  = $this->helper->getConfig('license');
509
            $license_select = new \XoopsFormSelect(\_MD_WFDOWNLOADS_LICENCEC, 'license', $this->getVar('license', 'e'));
510
            $license_select->addOptionArray($license_array);
511
            $sform->addElement($license_select);
512
            // download: limitations
513
            $limitations_array  = $this->helper->getConfig('limitations');
514
            $limitations_select = new \XoopsFormSelect(\_MD_WFDOWNLOADS_LIMITATIONS, 'limitations', $this->getVar('limitations', 'e'));
515
            $limitations_select->addOptionArray($limitations_array);
516
            $sform->addElement($limitations_select);
517
            // download: versiontype
518
            $versiontypes_array  = $this->helper->getConfig('versiontypes');
519
            $versiontypes_select = new \XoopsFormSelect(\_MD_WFDOWNLOADS_VERSIONTYPES, 'versiontypes', $this->getVar('versiontypes', 'e'));
520
            $versiontypes_select->addOptionArray($versiontypes_array);
521
            $sform->addElement($versiontypes_select);
522
            // download: price
523
            $sform->addElement(new \XoopsFormText(\_MD_WFDOWNLOADS_PRICEC, 'price', 10, 20, $this->getVar('price', 'e')), false);
524
            // download: summary
525
            switch ($this->helper->getConfig('autosummary')) {
526
                case \_WFDOWNLOADS_AUTOSUMMARY_YES:
527
                    $summary_dhtmltextarea = new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_SUMMARY, 'summary', $this->getVar('summary', 'e'), 10, 60, 'smartHiddenSummary');
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('summary', 'e') can also be of type array and array; however, parameter $value of XoopsFormDhtmlTextArea::__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

527
                    $summary_dhtmltextarea = new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_SUMMARY, 'summary', /** @scrutinizer ignore-type */ $this->getVar('summary', 'e'), 10, 60, 'smartHiddenSummary');
Loading history...
528
                    $summary_dhtmltextarea->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_YES);
529
                    $summary_dhtmltextarea->setExtra('disabled', 'disabled');
0 ignored issues
show
Bug introduced by
'disabled' of type string is incompatible with the type boolean expected by parameter $replace of XoopsFormElement::setExtra(). ( Ignorable by Annotation )

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

529
                    $summary_dhtmltextarea->setExtra('disabled', /** @scrutinizer ignore-type */ 'disabled');
Loading history...
530
                    $sform->addElement($summary_dhtmltextarea, false);
531
                    break;
532
                case \_WFDOWNLOADS_AUTOSUMMARY_IFBLANK:
533
                    $summary_dhtmltextarea = new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_SUMMARY, 'summary', $this->getVar('summary', 'e'), 10, 60, 'smartHiddenSummary');
534
                    $summary_dhtmltextarea->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_IFBLANK);
535
                    $sform->addElement($summary_dhtmltextarea, false);
536
                    break;
537
                default:
538
                case \_WFDOWNLOADS_AUTOSUMMARY_NO:
539
                    $summary_dhtmltextarea = new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_SUMMARY, 'summary', $this->getVar('summary', 'e'), 10, 60, 'smartHiddenSummary');
540
                    $summary_dhtmltextarea->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_NO);
541
                    $sform->addElement($summary_dhtmltextarea, false);
542
                    break;
543
            }
544
            // download: description
545
            $description_dhtmltextarea = new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_DESCRIPTION, 'description', $this->getVar('description', 'e'), 15, 60, 'smartHiddenDescription');
546
            $description_dhtmltextarea->setDescription(\_MD_WFDOWNLOADS_DESCRIPTION_DESC);
547
            $sform->addElement($description_dhtmltextarea, true);
548
            // download: dohtml, dosmiley, doxcode, doimage, dobr
549
            $options_tray = new \XoopsFormElementTray(\_MD_WFDOWNLOADS_TEXTOPTIONS, '<br>');
550
            $options_tray->setDescription(\_MD_WFDOWNLOADS_TEXTOPTIONS_DESC);
551
            $html_checkbox = new \XoopsFormCheckBox('', 'dohtml', $this->getVar('dohtml'));
552
            $html_checkbox->addOption(1, \_MD_WFDOWNLOADS_ALLOWHTML);
553
            $options_tray->addElement($html_checkbox);
554
            $smiley_checkbox = new \XoopsFormCheckBox('', 'dosmiley', $this->getVar('dosmiley'));
555
            $smiley_checkbox->addOption(1, \_MD_WFDOWNLOADS_ALLOWSMILEY);
556
            $options_tray->addElement($smiley_checkbox);
557
            $xcodes_checkbox = new \XoopsFormCheckBox('', 'doxcode', $this->getVar('doxcode'));
558
            $xcodes_checkbox->addOption(1, \_MD_WFDOWNLOADS_ALLOWXCODE);
559
            $options_tray->addElement($xcodes_checkbox);
560
            $noimages_checkbox = new \XoopsFormCheckBox('', 'doimage', $this->getVar('doimage'));
561
            $noimages_checkbox->addOption(1, \_MD_WFDOWNLOADS_ALLOWIMAGES);
562
            $options_tray->addElement($noimages_checkbox);
563
            $breaks_checkbox = new \XoopsFormCheckBox('', 'dobr', $this->getVar('dobr'));
564
            $breaks_checkbox->addOption(1, \_MD_WFDOWNLOADS_ALLOWBREAK);
565
            $options_tray->addElement($breaks_checkbox);
566
            $sform->addElement($options_tray);
567
            // download: features
568
            $features_textarea = new \XoopsFormTextArea(\_MD_WFDOWNLOADS_KEYFEATURESC, 'features', $this->getVar('features', 'e'), 7, 60);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('features', 'e') can also be of type array and array; however, parameter $value of XoopsFormTextArea::__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

568
            $features_textarea = new \XoopsFormTextArea(\_MD_WFDOWNLOADS_KEYFEATURESC, 'features', /** @scrutinizer ignore-type */ $this->getVar('features', 'e'), 7, 60);
Loading history...
569
            $features_textarea->setDescription(\_MD_WFDOWNLOADS_KEYFEATURESC_DESC);
570
            $sform->addElement($features_textarea, false);
571
            // download: requirements
572
            $requirements_textarea = new \XoopsFormTextArea(\_MD_WFDOWNLOADS_REQUIREMENTSC, 'requirements', $this->getVar('requirements', 'e'), 7, 60);
573
            $requirements_textarea->setDescription(\_MD_WFDOWNLOADS_REQUIREMENTSC_DESC);
574
            $sform->addElement($requirements_textarea, false);
575
        } else {
576
            // if we are using a custom form, then add in the form's elements here
577
            $sform->addElement(new \XoopsFormDhtmlTextArea(\_MD_WFDOWNLOADS_DESCRIPTION, 'description', $this->getVar('description', 'e'), 15, 60, 'smartHiddenDescription'), true);
578
            $sform->addElement(new \XoopsFormHidden('size', $this->getVar('size', 'e')));
579
            if (Utility::checkModule('formulize')) {
580
                require_once XOOPS_ROOT_PATH . '/modules/formulize/include/formdisplay.php';
581
                require_once XOOPS_ROOT_PATH . '/modules/formulize/include/functions.php';
582
                $sform = compileElements(// is a Formulize function
0 ignored issues
show
Bug introduced by
The function compileElements was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

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

582
                $sform = /** @scrutinizer ignore-call */ compileElements(// is a Formulize function
Loading history...
583
                    $customArray['fid'],
584
                    $sform,
585
                    $customArray['formulize_mgr'],
586
                    $customArray['prevEntry'],
587
                    $customArray['entry'],
588
                    $customArray['go_back'],
589
                    $customArray['parentLinks'],
590
                    $customArray['owner_groups'],
591
                    $customArray['groups'],
592
                    null,
593
                    null,
594
                    null,
595
                    null,
596
                    null,
597
                    null,
598
                    null,
599
                    null,
600
                    null,
601
                    null
602
                );
603
            }
604
            // IN PROGRESS... formulize module not installed!!!
605
        }
606
        // Formulize module support (2006/05/04) jpc - end
607
        // download: dhistory
608
        $sform->addElement(new \XoopsFormTextArea(\_MD_WFDOWNLOADS_HISTORYC, 'dhistory', $this->getVar('dhistory', 'e'), 7, 60), false);
609
        if (!$this->isNew() && '' !== $this->getVar('dhistory', 'n')) {
610
            $dhistoryaddedd_textarea = new \XoopsFormTextArea(\_MD_WFDOWNLOADS_HISTORYD, 'dhistoryaddedd', '', 7, 60);
611
            $dhistoryaddedd_textarea->setDescription(\_MD_WFDOWNLOADS_HISTORYD_DESC);
612
            $sform->addElement($dhistoryaddedd_textarea, false);
613
        }
614
        // download: screenshot, screenshot2, screenshot3, screenshot4
615
        if (($this->helper->getConfig('useruploads')
616
             && \array_intersect($this->helper->getConfig('useruploadsgroup'), $groups))
617
            || Utility::userIsAdmin()) {
618
            $sform->addElement(new \XoopsFormFile(\_MD_WFDOWNLOADS_DUPLOADSCRSHOT, 'screenshot', 0), false); // IN PROGRESS
619
            if ($this->helper->getConfig('max_screenshot') >= 2) {
620
                $sform->addElement(new \XoopsFormFile(\_MD_WFDOWNLOADS_DUPLOADSCRSHOT, 'screenshot2', 0), false); // IN PROGRESS
621
            }
622
            if ($this->helper->getConfig('max_screenshot') >= 3) {
623
                $sform->addElement(new \XoopsFormFile(\_MD_WFDOWNLOADS_DUPLOADSCRSHOT, 'screenshot3', 0), false); // IN PROGRESS
624
            }
625
            if ($this->helper->getConfig('max_screenshot') >= 4) {
626
                $sform->addElement(new \XoopsFormFile(\_MD_WFDOWNLOADS_DUPLOADSCRSHOT, 'screenshot4', 0), false); // IN PROGRESS
627
            }
628
        }
629
630
        // download: notifypub
631
        $option_tray     = new \XoopsFormElementTray(\_MD_WFDOWNLOADS_OPTIONS, '<br>');
632
        $notify_checkbox = new \XoopsFormCheckBox('', 'notifypub');
633
        $notify_checkbox->addOption(1, \_MD_WFDOWNLOADS_NOTIFYAPPROVE);
634
        $option_tray->addElement($notify_checkbox);
635
        $sform->addElement($option_tray);
636
        // form: button tray
637
        $buttonTray = new \XoopsFormElementTray('', '');
638
        if ($this->isNew()) {
639
            $buttonTray->addElement(new \XoopsFormHidden('op', 'download.save'));
640
            $button_submit = new \XoopsFormButton('', '', _SUBMIT, 'submit');
641
            //$button_submit->setExtra('onclick="this.form.elements.op.value=\'download.save\'"');
642
            $buttonTray->addElement($button_submit);
643
        } else {
644
            $buttonTray->addElement(new \XoopsFormHidden('lid', (int)$this->getVar('lid')));
645
            $buttonTray->addElement(new \XoopsFormHidden('op', 'download.save'));
646
            $button_submit = new \XoopsFormButton('', '', _SUBMIT, 'submit');
647
            //$button_submit->setExtra('onclick="this.form.elements.op.value=\'download.save\'"');
648
            $buttonTray->addElement($button_submit);
649
        }
650
        $button_reset = new \XoopsFormButton('', '', _RESET, 'reset');
651
        $buttonTray->addElement($button_reset);
652
        $buttonCancel = new \XoopsFormButton('', '', _CANCEL, 'button');
653
        $buttonCancel->setExtra('onclick="history.go(-1)"');
654
        $buttonTray->addElement($buttonCancel);
655
        $sform->addElement($buttonTray);
656
657
        return $sform;
658
    }
659
660
    /**
661
     * @param       $title
662
     * @param array $customArray
663
     *
664
     * @return \XoopsThemeForm
665
     */
666
    public function getAdminForm($title, $customArray = []) // $custom array added April 22, 2006 by jwe
667
    {
668
        require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
669
670
        $use_mirrors = $this->helper->getConfig('enable_mirrors');
671
672
        $sform = new \XoopsThemeForm($title, 'storyform', $_SERVER['REQUEST_URI']);
673
        $sform->setExtra('enctype="multipart/form-data"');
674
        // download: lid
675
        if (!$this->isNew()) {
676
            $sform->addElement(new \XoopsFormLabel(\_AM_WFDOWNLOADS_FILE_ID, (int)$this->getVar('lid')));
677
        }
678
        // download: ipaddress
679
        if ('' != $this->getVar('ipaddress')) {
680
            $sform->addElement(new \XoopsFormLabel(\_AM_WFDOWNLOADS_FILE_IP, $this->getVar('ipaddress')));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('ipaddress') can also be of type array and array; however, parameter $value of XoopsFormLabel::__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

680
            $sform->addElement(new \XoopsFormLabel(\_AM_WFDOWNLOADS_FILE_IP, /** @scrutinizer ignore-type */ $this->getVar('ipaddress')));
Loading history...
681
        }
682
        // download: title
683
        $titles_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_TITLE, '<br>');
684
        $titles      = new \XoopsFormText('', 'title', 50, 255, $this->getVar('title', 'e'));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('title', 'e') 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

684
        $titles      = new \XoopsFormText('', 'title', 50, 255, /** @scrutinizer ignore-type */ $this->getVar('title', 'e'));
Loading history...
685
        $titles_tray->addElement($titles);
686
        $titles_checkbox = new \XoopsFormCheckBox('', 'title_checkbox', 0);
687
        $titles_checkbox->addOption(1, \_AM_WFDOWNLOADS_FILE_USE_UPLOAD_TITLE);
688
        $titles_tray->addElement($titles_checkbox);
689
        $sform->addElement($titles_tray);
690
        // download: submitter
691
        if (!$this->isNew()) {
692
            //$sform -> addElement(new \XoopsFormText(_AM_WFDOWNLOADS_FILE_SUBMITTERID, 'submitter', 10, 10, $this->getVar('submitter', 'e')), true);
693
            $submitter_select = new \XoopsFormSelectUser(\_AM_WFDOWNLOADS_FILE_SUBMITTER, 'submitter', false, $this->getVar('submitter', 'e'), 1, false);
694
            $submitter_select->setDescription(\_AM_WFDOWNLOADS_FILE_SUBMITTER_DESC);
695
            $sform->addElement($submitter_select);
696
        } else {
697
            $sform->addElement(new \XoopsFormHidden('submitter', $GLOBALS['xoopsUser']->getVar('uid', 'e')));
698
        }
699
        // download: url
700
        $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_DLURL, 'url', 50, 255, $this->getVar('url', 'e')), false);
701
        // download: filename
702
        $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_FILENAME, 'filename', 50, 255, $this->getVar('filename', 'e')), false);
703
        // download: filetype
704
        $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_FILETYPE, 'filetype', 50, 100, $this->getVar('filetype', 'e')), false);
705
        // download: mirror
706
        if (true !== $use_mirrors) {
707
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_MIRRORURL, 'mirror', 50, 255, $this->getVar('mirror', 'e')), false);
708
        }
709
        // download: userfile
710
        $userfile_file = new \XoopsFormFile(\_MD_WFDOWNLOADS_UPLOAD_FILEC, 'userfile', 0);
711
        // get max file size (setup and php.ini)
712
        $phpiniMaxFileSize = \min((int)\ini_get('upload_max_filesize'), (int)\ini_get('post_max_size'), (int)\ini_get('memory_limit')) * 1024 * 1024; // bytes
713
        $maxFileSize       = Utility::bytesToSize1024(\min($this->helper->getConfig('maxfilesize'), $phpiniMaxFileSize));
714
        // get allowed mimetypes
715
        $criteria          = new \Criteria('mime_admin', true);
0 ignored issues
show
Bug introduced by
true of type true is incompatible with the type string expected by parameter $value of Criteria::__construct(). ( Ignorable by Annotation )

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

715
        $criteria          = new \Criteria('mime_admin', /** @scrutinizer ignore-type */ true);
Loading history...
716
        $mimetypes         = $this->helper->getHandler('Mimetype')->getList($criteria);
717
        $allowedExtensions = \implode(' | ', $mimetypes);
718
        $userfile_file->setDescription(\sprintf(\_MD_WFDOWNLOADS_UPLOAD_FILEC_DESC, $maxFileSize, $this->helper->getConfig('maximgwidth'), $this->helper->getConfig('maximgheight'), $allowedExtensions, mb_substr($allowedExtensions, 0, 40) . '...'));
719
        $sform->addElement($userfile_file, false);
720
        // download: cid
721
        $categoryObjs     = $this->helper->getHandler('Category')->getObjects();
722
        $categoryObjsTree = new ObjectTree($categoryObjs, 'cid', 'pid');
723
724
        if (Utility::checkVerXoops($GLOBALS['xoopsModule'], '2.5.9')) {
725
            $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '--', $this->getVar('cid'), true, 0, '', \_AM_WFDOWNLOADS_FILE_CATEGORY);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid') can also be of type array and array; however, parameter $selected of XoopsObjectTree::makeSelectElement() 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

725
            $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '--', /** @scrutinizer ignore-type */ $this->getVar('cid'), true, 0, '', \_AM_WFDOWNLOADS_FILE_CATEGORY);
Loading history...
726
            $sform->addElement($catSelect);
727
        } else {
728
            $sform->addElement(new \XoopsFormLabel(\_AM_WFDOWNLOADS_FILE_CATEGORY, $categoryObjsTree->makeSelBox('cid', 'title', '-', $this->getVar('cid', 'e'))));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid', 'e') can also be of type array and array; however, parameter $selected of XoopsModules\Wfdownloads\ObjectTree::makeSelBox() 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

728
            $sform->addElement(new \XoopsFormLabel(\_AM_WFDOWNLOADS_FILE_CATEGORY, $categoryObjsTree->makeSelBox('cid', 'title', '-', /** @scrutinizer ignore-type */ $this->getVar('cid', 'e'))));
Loading history...
729
        }
730
731
        // Formulize module support (2006/03/06, 2006/03/08) jpc - start
732
        if (0 == \count($customArray)) {
733
            // download: homepagetitle
734
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_HOMEPAGETITLE, 'homepagetitle', 50, 255, $this->getVar('homepagetitle', 'e')), false);
735
            // download: homepage
736
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_HOMEPAGE, 'homepage', 50, 255, $this->getVar('homepage', 'e')), false);
737
            // download: version
738
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_VERSION, 'version', 10, 20, $this->getVar('version', 'e')), false);
739
            // download: publisher
740
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_PUBLISHER, 'publisher', 50, 255, $this->getVar('publisher', 'e')), false);
741
            // download: size
742
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_SIZE, 'size', 10, 20, $this->getVar('size', 'e')), false);
743
            // download: platform
744
            $platform_array  = $this->helper->getConfig('platform');
745
            $platform_select = new \XoopsFormSelect('', 'platform', $this->getVar('platform', 'e'), '', '', 0);
0 ignored issues
show
Bug introduced by
'' of type string is incompatible with the type boolean expected by parameter $multiple of XoopsFormSelect::__construct(). ( Ignorable by Annotation )

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

745
            $platform_select = new \XoopsFormSelect('', 'platform', $this->getVar('platform', 'e'), '', /** @scrutinizer ignore-type */ '', 0);
Loading history...
Bug introduced by
'' of type string is incompatible with the type integer expected by parameter $size of XoopsFormSelect::__construct(). ( Ignorable by Annotation )

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

745
            $platform_select = new \XoopsFormSelect('', 'platform', $this->getVar('platform', 'e'), /** @scrutinizer ignore-type */ '', '', 0);
Loading history...
Unused Code introduced by
The call to XoopsFormSelect::__construct() has too many arguments starting with 0. ( Ignorable by Annotation )

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

745
            $platform_select = /** @scrutinizer ignore-call */ new \XoopsFormSelect('', 'platform', $this->getVar('platform', 'e'), '', '', 0);

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
746
            $platform_select->addOptionArray($platform_array);
747
            $platform_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_PLATFORM, '&nbsp;');
748
            $platform_tray->addElement($platform_select);
749
            $sform->addElement($platform_tray);
750
            // download: license
751
            $license_array  = $this->helper->getConfig('license');
752
            $license_select = new \XoopsFormSelect('', 'license', $this->getVar('license', 'e'), '', '', 0);
753
            $license_select->addOptionArray($license_array);
754
            $license_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_LICENCE, '&nbsp;');
755
            $license_tray->addElement($license_select);
756
            $sform->addElement($license_tray);
757
            // download: limitations
758
            $limitations_array  = $this->helper->getConfig('limitations');
759
            $limitations_select = new \XoopsFormSelect('', 'limitations', $this->getVar('limitations', 'e'), '', '', 0);
760
            $limitations_select->addOptionArray($limitations_array);
761
            $limitations_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_LIMITATIONS, '&nbsp;');
762
            $limitations_tray->addElement($limitations_select);
763
            $sform->addElement($limitations_tray);
764
            // download: versiontypes
765
            $versiontypes_array  = $this->helper->getConfig('versiontypes');
766
            $versiontypes_select = new \XoopsFormSelect('', 'versiontypes', $this->getVar('versiontypes', 'e'), '', '', 0);
767
            $versiontypes_select->addOptionArray($versiontypes_array);
768
            $versiontypes_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_VERSIONTYPES, '&nbsp;');
769
            $versiontypes_tray->addElement($versiontypes_select);
770
            $sform->addElement($versiontypes_tray);
771
            // download: versiontypes
772
            $sform->addElement(new \XoopsFormText(\_AM_WFDOWNLOADS_FILE_PRICE, 'price', 10, 20, $this->getVar('price', 'e')), false);
773
            // download: summary
774
            $mode              = 'html';
775
            $summary_tray      = new \XoopsFormElementTray(\_MD_WFDOWNLOADS_SUMMARY, '<br>');
776
            $options['name']   = 'summary';
0 ignored issues
show
Comprehensibility Best Practice introduced by
$options was never initialized. Although not strictly required by PHP, it is generally a good practice to add $options = array(); before regardless.
Loading history...
777
            $options['value']  = $this->getVar('summary', 'e');
778
            $options['rows']   = 10;
779
            $options['cols']   = '100%';
780
            $options['width']  = '100%';
781
            $options['height'] = '200px';
782
            $options['mode']   = $mode; // for editors that support mode option
783
            $summary_editor    = new \XoopsFormEditor('', $this->helper->getConfig('editor_options'), $options, $nohtml = false, $onfailure = 'textarea');
784
            $summary_tray->addElement($summary_editor);
785
            switch ($this->helper->getConfig('autosummary')) {
786
                case \_WFDOWNLOADS_AUTOSUMMARY_YES:
787
                    $summary_tray->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_YES);
788
                    break;
789
                case \_WFDOWNLOADS_AUTOSUMMARY_IFBLANK:
790
                    $summary_tray->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_IFBLANK);
791
                    break;
792
                default:
793
                case \_WFDOWNLOADS_AUTOSUMMARY_NO:
794
                    $summary_tray->setDescription(\_MD_WFDOWNLOADS_SUMMARY_DESC_AUTOSUMMARY_NO);
795
                    break;
796
            }
797
            $sform->addElement($summary_tray);
798
            // download: decription
799
            $description_tray   = new \XoopsFormElementTray(\_MD_WFDOWNLOADS_DESCRIPTION, '<br>');
800
            $options['name']    = 'description';
801
            $options['value']   = $this->getVar('description', 'e');
802
            $options['rows']    = 15;
803
            $options['cols']    = '100%';
804
            $options['width']   = '100%';
805
            $options['height']  = '200px';
806
            $description_editor = new \XoopsFormEditor('', $this->helper->getConfig('editor_options'), $options, $nohtml = false, $onfailure = 'textarea');
807
            $description_tray->addElement($description_editor, true);
808
            $description_tray->setDescription(\_MD_WFDOWNLOADS_DESCRIPTION_DESC);
809
            $sform->addElement($description_tray);
810
            // download: dohtml, dosmiley, doxcode, doimage, dobr
811
            $options_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_TEXTOPTIONS, ' ');
812
            $options_tray->setDescription(\_AM_WFDOWNLOADS_TEXTOPTIONS_DESC);
813
            $html_checkbox = new \XoopsFormCheckBox('', 'dohtml', $this->getVar('dohtml'));
814
            $html_checkbox->addOption(1, \_AM_WFDOWNLOADS_ALLOWHTML);
815
            $options_tray->addElement($html_checkbox);
816
            $smiley_checkbox = new \XoopsFormCheckBox('', 'dosmiley', $this->getVar('dosmiley'));
817
            $smiley_checkbox->addOption(1, \_AM_WFDOWNLOADS_ALLOWSMILEY);
818
            $options_tray->addElement($smiley_checkbox);
819
            $xcodes_checkbox = new \XoopsFormCheckBox('', 'doxcode', $this->getVar('doxcode'));
820
            $xcodes_checkbox->addOption(1, \_AM_WFDOWNLOADS_ALLOWXCODE);
821
            $options_tray->addElement($xcodes_checkbox);
822
            $noimages_checkbox = new \XoopsFormCheckBox('', 'doimage', $this->getVar('doimage'));
823
            $noimages_checkbox->addOption(1, \_AM_WFDOWNLOADS_ALLOWIMAGES);
824
            $options_tray->addElement($noimages_checkbox);
825
            $breaks_checkbox = new \XoopsFormCheckBox('', 'dobr', $this->getVar('dobr'));
826
            $breaks_checkbox->addOption(1, \_AM_WFDOWNLOADS_ALLOWBREAK);
827
            $options_tray->addElement($breaks_checkbox);
828
            $sform->addElement($options_tray);
829
            // download: features
830
            $sform->addElement(new \XoopsFormTextArea(\_AM_WFDOWNLOADS_FILE_KEYFEATURES, 'features', $this->getVar('features', 'e'), 7, 60), false);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('features', 'e') can also be of type array and array; however, parameter $value of XoopsFormTextArea::__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

830
            $sform->addElement(new \XoopsFormTextArea(\_AM_WFDOWNLOADS_FILE_KEYFEATURES, 'features', /** @scrutinizer ignore-type */ $this->getVar('features', 'e'), 7, 60), false);
Loading history...
831
            // download: requirements
832
            $sform->addElement(new \XoopsFormTextArea(\_AM_WFDOWNLOADS_FILE_REQUIREMENTS, 'requirements', $this->getVar('requirements', 'e'), 7, 60), false);
833
        } else {
834
            // if we are using a custom form, then add in the form's elements here
835
            // download: description
836
            $description_tray   = new \XoopsFormElementTray(\_MD_WFDOWNLOADS_DESCRIPTION, '<br>');
837
            $options['name']    = 'description';
838
            $options['value']   = $this->getVar('description', 'e');
839
            $options['rows']    = 15;
840
            $options['cols']    = '100%';
841
            $options['width']   = '100%';
842
            $options['height']  = '200px';
843
            $description_editor = new \XoopsFormEditor('', $this->helper->getConfig('editor_options'), $options, $nohtml = false, $onfailure = 'textarea');
844
            $description_tray->addElement($description_editor, true);
845
            $description_tray->setDescription(\_MD_WFDOWNLOADS_DESCRIPTION_DESC);
846
            $sform->addElement($description_tray);
847
            // download: size
848
            $sform->addElement(new \XoopsFormHidden('size', $this->getVar('size', 'e')));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('size', 'e') can also be of type array and array; however, parameter $value of XoopsFormHidden::__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

848
            $sform->addElement(new \XoopsFormHidden('size', /** @scrutinizer ignore-type */ $this->getVar('size', 'e')));
Loading history...
849
850
            if (Utility::checkModule('formulize')) {
851
                require_once XOOPS_ROOT_PATH . '/modules/formulize/include/formdisplay.php';
852
                require_once XOOPS_ROOT_PATH . '/modules/formulize/include/functions.php';
853
                $sform = compileElements(// is a Formulize function
0 ignored issues
show
Bug introduced by
The function compileElements was not found. Maybe you did not declare it correctly or list all dependencies? ( Ignorable by Annotation )

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

853
                $sform = /** @scrutinizer ignore-call */ compileElements(// is a Formulize function
Loading history...
854
                    $customArray['fid'],
855
                    $sform,
856
                    $customArray['formulize_mgr'],
857
                    $customArray['prevEntry'],
858
                    $customArray['entry'],
859
                    $customArray['go_back'],
860
                    $customArray['parentLinks'],
861
                    $customArray['owner_groups'],
862
                    $customArray['groups'],
863
                    null,
864
                    null,
865
                    null,
866
                    null,
867
                    null,
868
                    null,
869
                    null,
870
                    null,
871
                    null,
872
                    null
873
                );
874
            }
875
            // IN PROGRESS... Formulize module not installed!!!
876
        }
877
        // Formulize module support (2006/03/06, 2006/03/08) jpc - end
878
        // download: dhistory
879
        $sform->addElement(new \XoopsFormTextArea(\_AM_WFDOWNLOADS_FILE_HISTORY, 'dhistory', $this->getVar('dhistory', 'e'), 7, 60), false);
880
        if (!$this->isNew() && '' != $this->getVar('dhistory')) {
881
            $sform->addElement(new \XoopsFormTextArea(\_AM_WFDOWNLOADS_FILE_HISTORYD, 'dhistoryaddedd', '', 7, 60), false);
882
        }
883
884
        // download: screenshot
885
        $graph_array1       = WfsLists::getListTypeAsArray(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots'), 'images');
886
        $indeximage_select1 = new \XoopsFormSelect('', 'screenshot', $this->getVar('screenshot', 'e'));
887
        $indeximage_select1->addOptionArray($graph_array1);
888
        $indeximage_select1->setExtra("onchange='showImgSelected(\"image1\", \"screenshot\", \"" . $this->helper->getConfig('screenshots') . '", "", "' . XOOPS_URL . "\")'");
889
        $indeximage_tray1 = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_SHOTIMAGE, '&nbsp;');
890
        $indeximage_tray1->addElement($indeximage_select1);
891
        if ('' != $this->getVar('screenshot')) { // IN PROGRESS
892
            $indeximage_tray1->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . $this->getVar('screenshot', 'e') . "' id='image1' alt='' title='screenshot 1'>"));
893
        } else {
894
            $indeximage_tray1->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . "/uploads/blank.png' id='image1' alt='' title=''>"));
895
        }
896
        $sform->addElement($indeximage_tray1);
897
898
        // download: screenshot2
899
        $graph_array2       = WfsLists::getListTypeAsArray(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots'), 'images');
900
        $indeximage_select2 = new \XoopsFormSelect('', 'screenshot2', $this->getVar('screenshot2', 'e'));
901
        $indeximage_select2->addOptionArray($graph_array2);
902
        $indeximage_select2->setExtra("onchange='showImgSelected(\"image2\", \"screenshot2\", \"" . $this->helper->getConfig('screenshots') . '", "", "' . XOOPS_URL . "\")'");
903
        $indeximage_tray2 = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_SHOTIMAGE, '&nbsp;');
904
        $indeximage_tray2->addElement($indeximage_select2);
905
        if ('' != $this->getVar('screenshot2')) {
906
            $indeximage_tray2->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . $this->getVar('screenshot2', 'e') . "' id='image2' alt='' title='screenshot 2'>"));
907
        } else {
908
            $indeximage_tray2->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . "/uploads/blank.png' id='image2' alt='' title=''>"));
909
        }
910
        $sform->addElement($indeximage_tray2);
911
912
        // download: screenshot3
913
        $graph_array3       = WfsLists::getListTypeAsArray(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots'), 'images');
914
        $indeximage_select3 = new \XoopsFormSelect('', 'screenshot3', $this->getVar('screenshot3', 'e', true));
0 ignored issues
show
Unused Code introduced by
The call to XoopsObject::getVar() has too many arguments starting with true. ( Ignorable by Annotation )

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

914
        $indeximage_select3 = new \XoopsFormSelect('', 'screenshot3', $this->/** @scrutinizer ignore-call */ getVar('screenshot3', 'e', true));

This check compares calls to functions or methods with their respective definitions. If the call has more arguments than are defined, it raises an issue.

If a function is defined several times with a different number of parameters, the check may pick up the wrong definition and report false positives. One codebase where this has been known to happen is Wordpress. Please note the @ignore annotation hint above.

Loading history...
915
        $indeximage_select3->addOptionArray($graph_array3);
916
        $indeximage_select3->setExtra("onchange='showImgSelected(\"image3\", \"screenshot3\", \"" . $this->helper->getConfig('screenshots') . '", "", "' . XOOPS_URL . "\")'");
917
        $indeximage_tray3 = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_SHOTIMAGE, '&nbsp;');
918
        $indeximage_tray3->addElement($indeximage_select3);
919
        if ('' != $this->getVar('screenshot3')) {
920
            $indeximage_tray3->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . $this->getVar('screenshot3', 'e') . "' id='image3' alt='' title='screenshot 3'>"));
921
        } else {
922
            $indeximage_tray3->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . "/uploads/blank.png' id='image3' alt='' title=''>"));
923
        }
924
        $sform->addElement($indeximage_tray3);
925
926
        // download: screenshot4
927
        $graph_array4       = WfsLists::getListTypeAsArray(XOOPS_ROOT_PATH . '/' . $this->helper->getConfig('screenshots'), 'images');
928
        $indeximage_select4 = new \XoopsFormSelect('', 'screenshot4', $this->getVar('screenshot4', 'e'));
929
        $indeximage_select4->addOptionArray($graph_array4);
930
        $indeximage_select4->setExtra("onchange='showImgSelected(\"image4\", \"screenshot4\", \"" . $this->helper->getConfig('screenshots') . '", "", "' . XOOPS_URL . "\")'");
931
        $indeximage_tray4 = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_SHOTIMAGE, '&nbsp;');
932
        $indeximage_tray4->addElement($indeximage_select4);
933
        if ('' != $this->getVar('screenshot4')) {
934
            $indeximage_tray4->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . '/' . $this->helper->getConfig('screenshots') . '/' . $this->getVar('screenshot4', 'e') . "' id='image4' alt='' title='screenshot 4'>"));
935
        } else {
936
            $indeximage_tray4->addElement(new \XoopsFormLabel('', "<br><br><img src='" . XOOPS_URL . "/uploads/blank.png' id='image4' alt='' title=''>"));
937
        }
938
        $sform->addElement($indeximage_tray4);
939
940
        $sform->insertBreak(\sprintf(\_AM_WFDOWNLOADS_FILE_MUSTBEVALID, '<b>' . $this->helper->getConfig('screenshots') . '</b>'), 'even');
941
942
        // download: published
943
        $publishtext = ($this->isNew() || 0 == $this->getVar('published')) ? \_AM_WFDOWNLOADS_FILE_SETPUBLISHDATE : \_AM_WFDOWNLOADS_FILE_SETNEWPUBLISHDATE;
944
        if ($this->getVar('published') > \time()) {
945
            $publishtext = \_AM_WFDOWNLOADS_FILE_SETPUBDATESETS;
946
        }
947
        $ispublished          = $this->getVar('published') > \time();
948
        $publishdates         = ($this->getVar('published') > \time()) ? \_AM_WFDOWNLOADS_FILE_PUBLISHDATESET . \formatTimestamp($this->getVar('published', 'e'), 'Y-m-d H:s') : \_AM_WFDOWNLOADS_FILE_SETDATETIMEPUBLISH;
949
        $publishdate_checkbox = new \XoopsFormCheckBox('', 'publishdateactivate', $ispublished);
950
        $publishdate_checkbox->addOption(1, $publishdates . '<br>');
951
        if (!$this->isNew()) {
952
            $sform->addElement(new \XoopsFormHidden('was_published', $this->getVar('published', 'e')));
953
            $sform->addElement(new \XoopsFormHidden('was_expired', $this->getVar('expired', 'e')));
954
        }
955
        $publishdate_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_PUBLISHDATE, '');
956
        $publishdate_tray->addElement($publishdate_checkbox);
957
        $publishdate_tray->addElement(new \XoopsFormDateTime($publishtext, 'published', 15, $this->getVar('published', 'e')));
958
        $publishdate_tray->addElement(new \XoopsFormRadioYN(\_AM_WFDOWNLOADS_FILE_CLEARPUBLISHDATE, 'clearpublish', 0));
959
        $sform->addElement($publishdate_tray);
960
        // download: expired
961
        $isexpired           = $this->getVar('expired', 'e') > \time();
962
        $expiredates         = ($this->getVar('expired', 'e') > \time()) ? \_AM_WFDOWNLOADS_FILE_EXPIREDATESET . \formatTimestamp($this->getVar('expired'), 'Y-m-d H:s') : \_AM_WFDOWNLOADS_FILE_SETDATETIMEEXPIRE;
963
        $warning             = ($this->getVar('published') > $this->getVar('expired')
964
                                && $this->getVar('expired') > \time()) ? \_AM_WFDOWNLOADS_FILE_EXPIREWARNING : '';
965
        $expiredate_checkbox = new \XoopsFormCheckBox('', 'expiredateactivate', $isexpired);
966
        $expiredate_checkbox->addOption(1, $expiredates . '<br>');
967
        $expiredate_tray = new \XoopsFormElementTray(\_AM_WFDOWNLOADS_FILE_EXPIREDATE . $warning, '');
968
        $expiredate_tray->addElement($expiredate_checkbox);
969
        $expiredate_tray->addElement(new \XoopsFormDateTime(\_AM_WFDOWNLOADS_FILE_SETEXPIREDATE, 'expired', 15, $this->getVar('expired')));
970
        $expiredate_tray->addElement(new \XoopsFormRadioYN(\_AM_WFDOWNLOADS_FILE_CLEAREXPIREDATE, 'clearexpire', 0));
971
        $sform->addElement($expiredate_tray);
972
        // download: offline
973
        $filestatus_radio = new \XoopsFormRadioYN(\_AM_WFDOWNLOADS_FILE_FILESSTATUS, 'offline', $this->getVar('offline', 'e'));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('offline', 'e') can also be of type array and array; however, parameter $value of XoopsFormRadioYN::__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

973
        $filestatus_radio = new \XoopsFormRadioYN(\_AM_WFDOWNLOADS_FILE_FILESSTATUS, 'offline', /** @scrutinizer ignore-type */ $this->getVar('offline', 'e'));
Loading history...
974
        $sform->addElement($filestatus_radio);
975
        // download: up_dated
976
        $file_updated_radio = new \XoopsFormRadioYN(\_AM_WFDOWNLOADS_FILE_SETASUPDATED, 'up_dated', true === $this->getVar('updated', 'e'));
977
        $sform->addElement($file_updated_radio);
978
        // download: approved
979
        if (!$this->isNew() && 0 == $this->getVar('published')) {
980
            $approved         = 0 != $this->getVar('published');
0 ignored issues
show
Unused Code introduced by
The assignment to $approved is dead and can be removed.
Loading history...
981
            $approve_checkbox = new \XoopsFormCheckBox(\_AM_WFDOWNLOADS_FILE_EDITAPPROVE, 'approved', true);
982
            $approve_checkbox->addOption(1, ' ');
983
            $sform->addElement($approve_checkbox);
984
        }
985
        // form: button tray
986
        $buttonTray = new \XoopsFormElementTray('', '');
987
        $buttonTray->addElement(new \XoopsFormHidden('op', 'download.save'));
988
        if ($this->isNew()) {
989
            $buttonTray->addElement(new \XoopsFormHidden('status', \_WFDOWNLOADS_STATUS_APPROVED));
990
            $buttonTray->addElement(new \XoopsFormHidden('notifypub', $this->getVar('notifypub', 'e')));
991
992
            $buttonTray->addElement(new \XoopsFormButton('', '', _SUBMIT, 'submit'));
993
        } else {
994
            $buttonTray->addElement(new \XoopsFormHidden('status', \_WFDOWNLOADS_STATUS_UPDATED));
995
            $buttonTray->addElement(new \XoopsFormHidden('lid', (int)$this->getVar('lid')));
996
            $button_submit = new \XoopsFormButton('', '', _SUBMIT, 'submit');
997
            $button_submit->setExtra('onclick="this.form.elements.op.value=\'download.save\'"');
998
            $buttonTray->addElement($button_submit);
999
            $deleteButton = new \XoopsFormButton('', '', _DELETE, 'submit');
1000
            $deleteButton->setExtra('onclick="this.form.elements.op.value=\'download.delete\'"');
1001
            $buttonTray->addElement($deleteButton);
1002
        }
1003
        $button_reset = new \XoopsFormButton('', '', _RESET, 'reset');
1004
        $buttonTray->addElement($button_reset);
1005
        $buttonCancel = new \XoopsFormButton('', '', _CANCEL, 'button');
1006
        $buttonCancel->setExtra('onclick="history.go(-1)"');
1007
        $buttonTray->addElement($buttonCancel);
1008
1009
        $sform->addElement($buttonTray);
1010
1011
        return $sform;
1012
    }
1013
1014
    // Formulize module support (2006/03/06, 2006/03/08) jpc - start
1015
1016
    /**
1017
     * @param $title
1018
     *
1019
     * @return \XoopsThemeForm
1020
     */
1021
    public function getCategoryForm($title)
1022
    {
1023
        require_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
1024
        require_once XOOPS_ROOT_PATH . '/class/tree.php';
1025
        $sform = new \XoopsThemeForm($title, 'storyform', $_SERVER['REQUEST_URI']);
1026
        $sform->setExtra('enctype="multipart/form-data"');
1027
        // download: cid
1028
        $categoryObjs     = $this->helper->getHandler('Category')->getUserUpCategories();
1029
        $categoryObjsTree = new ObjectTree($categoryObjs, 'cid', 'pid');
1030
1031
        if (Utility::checkVerXoops($GLOBALS['xoopsModule'], '2.5.9')) {
1032
            $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '-', $this->getVar('cid'), true, 0, '', \_MD_WFDOWNLOADS_CATEGORYC);
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid') can also be of type array and array; however, parameter $selected of XoopsObjectTree::makeSelectElement() 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

1032
            $catSelect = $categoryObjsTree->makeSelectElement('cid', 'title', '-', /** @scrutinizer ignore-type */ $this->getVar('cid'), true, 0, '', \_MD_WFDOWNLOADS_CATEGORYC);
Loading history...
1033
            $sform->addElement($catSelect);
1034
        } else {
1035
            $sform->addElement(new \XoopsFormLabel(\_MD_WFDOWNLOADS_CATEGORYC, $categoryObjsTree->makeSelBox('cid', 'title', '-', $this->getVar('cid', 'e'))));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('cid', 'e') can also be of type array and array; however, parameter $selected of XoopsModules\Wfdownloads\ObjectTree::makeSelBox() 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

1035
            $sform->addElement(new \XoopsFormLabel(\_MD_WFDOWNLOADS_CATEGORYC, $categoryObjsTree->makeSelBox('cid', 'title', '-', /** @scrutinizer ignore-type */ $this->getVar('cid', 'e'))));
Loading history...
1036
        }
1037
1038
        // form: button tray
1039
        $buttonTray = new \XoopsFormElementTray('', '');
1040
        $buttonTray->addElement(new \XoopsFormButton('', 'submit_category', _SUBMIT, 'submit'));
1041
        if (!$this->isNew()) {
1042
            $buttonTray->addElement(new \XoopsFormHidden('lid', $this->getVar('lid', 'e')));
0 ignored issues
show
Bug introduced by
It seems like $this->getVar('lid', 'e') can also be of type array and array; however, parameter $value of XoopsFormHidden::__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

1042
            $buttonTray->addElement(new \XoopsFormHidden('lid', /** @scrutinizer ignore-type */ $this->getVar('lid', 'e')));
Loading history...
1043
        }
1044
        $sform->addElement($buttonTray);
1045
1046
        return $sform;
1047
    }
1048
1049
    // Formulize module support (2006/03/06, 2006/03/08) jpc - end
1050
1051
    /**
1052
     * Returns an array representation of the object
1053
     *
1054
     * @return array
1055
     */
1056
    public function toArray()
1057
    {
1058
        $ret  = [];
1059
        $vars = &$this->getVars();
1060
        foreach (\array_keys($vars) as $i) {
1061
            $ret[$i] = $this->getVar($i);
1062
        }
1063
1064
        return $ret;
1065
    }
1066
}
1067