Passed
Push — master ( 893ae4...89b06b )
by Michael
02:40
created

Utility::formatCurrency()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 3
c 0
b 0
f 0
dl 0
loc 5
rs 10
cc 1
nc 1
nop 3
1
<?php
2
3
namespace XoopsModules\Adslight;
4
5
/*
6
-------------------------------------------------------------------------
7
                     ADSLIGHT 2 : Module for Xoops
8
9
        Redesigned and ameliorate By Luc Bizet user at www.frxoops.org
10
        Started with the Classifieds module and made MANY changes
11
        Website : http://www.luc-bizet.fr
12
        Contact : [email protected]
13
-------------------------------------------------------------------------
14
             Original credits below Version History
15
##########################################################################
16
#                    Classified Module for Xoops                         #
17
#  By John Mordo user jlm69 at www.xoops.org and www.jlmzone.com         #
18
#      Started with the MyAds module and made MANY changes               #
19
##########################################################################
20
 Original Author: Pascal Le Boustouller
21
 Author Website : [email protected]
22
 Licence Type   : GPL
23
-------------------------------------------------------------------------
24
*/
25
26
/**
27
 * AdslightUtil Class
28
 *
29
 * @copyright   XOOPS Project (https://xoops.org)
30
 * @license     http://www.fsf.org/copyleft/gpl.html GNU public license
31
 * @author      XOOPS Development Team
32
 * @package     AdsLight
33
 * @since       1.03
34
 */
35
36
use Xmf\Request;
37
use XoopsModules\Adslight;
38
use XoopsModules\Adslight\Common;
39
40
require_once XOOPS_ROOT_PATH . '/class/xoopstree.php';
41
$myts = \MyTextSanitizer::getInstance();
42
43
/**
44
 * Class Utility
45
 */
46
class Utility
47
{
48
    use Common\VersionChecks;  //checkVerXoops, checkVerPhp Traits
0 ignored issues
show
introduced by
The trait XoopsModules\Adslight\Common\VersionChecks requires some properties which are not provided by XoopsModules\Adslight\Utility: $tag_name, $prerelease
Loading history...
49
    use Common\ServerStats;    // getServerStats Trait
50
    use Common\FilesManagement;    // Files Management Trait
51
52
    //--------------- Custom module methods -----------------------------
53
54
    public static function expireAd()
55
    {
56
        global $xoopsDB, $xoopsConfig, $xoopsModule, $myts, $meta;
57
58
        $datenow = \time();
59
        $message = '';
60
61
        $result5 = $xoopsDB->query('SELECT lid, title, expire, type, desctext, date, email, submitter, photo, valid, hits, comments, remind FROM ' . $xoopsDB->prefix('adslight_listing') . " WHERE valid='Yes'");
62
63
        while (false !== (list($lids, $title, $expire, $type, $desctext, $dateann, $email, $submitter, $photo, $valid, $hits, $comments, $remind) = $xoopsDB->fetchRow($result5))) {
64
            $title     = \htmlspecialchars($title, \ENT_QUOTES | \ENT_HTML5);
65
            $expire    = \htmlspecialchars($expire, \ENT_QUOTES | \ENT_HTML5);
66
            $type      = \htmlspecialchars($type, \ENT_QUOTES | \ENT_HTML5);
67
            $desctext  = &$myts->displayTarea($desctext, 1, 1, 1, 1, 1);
68
            $submitter = \htmlspecialchars($submitter, \ENT_QUOTES | \ENT_HTML5);
69
            $remind    = \htmlspecialchars($remind, \ENT_QUOTES | \ENT_HTML5);
70
            $supprdate = $dateann + ($expire * 86400);
71
            $almost    = $GLOBALS['xoopsModuleConfig']['adslight_almost'];
72
73
            // give warning that add is about to expire
74
75
            if ($almost > 0 && ($supprdate - $almost * 86400) < $datenow
76
                && 'Yes' === $valid
77
                && 0 == $remind) {
78
                $xoopsDB->queryF('UPDATE ' . $xoopsDB->prefix('adslight_listing') . " SET remind='1' WHERE lid=$lids");
79
80
                if ($email) {
81
                    $tags               = [];
82
                    $subject            = '' . \_ADSLIGHT_ALMOST . '';
83
                    $tags['TITLE']      = $title;
84
                    $tags['HELLO']      = '' . \_ADSLIGHT_HELLO . '';
85
                    $tags['YOUR_AD_ON'] = '' . \_ADSLIGHT_YOUR_AD_ON . '';
86
                    $tags['VEDIT_AD']   = '' . \_ADSLIGHT_VEDIT_AD . '';
87
                    $tags['YOUR_AD']    = '' . \_ADSLIGHT_YOUR_AD . '';
88
                    $tags['SOON']       = '' . \_ADSLIGHT_SOON . '';
89
                    $tags['VIEWED']     = '' . \_ADSLIGHT_VU . '';
90
                    $tags['TIMES']      = '' . \_ADSLIGHT_TIMES . '';
91
                    $tags['WEBMASTER']  = '' . \_ADSLIGHT_WEBMASTER . '';
92
                    $tags['THANKS']     = '' . \_ADSLIGHT_THANKS . '';
93
                    $tags['TYPE']       = static::getNameType($type);
94
                    $tags['DESCTEXT']   = $desctext;
95
                    $tags['HITS']       = $hits;
96
                    $tags['META_TITLE'] = $meta['title'];
97
                    $tags['SUBMITTER']  = $submitter;
98
                    $tags['DURATION']   = $expire;
99
                    $tags['LINK_URL']   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewads.php?' . '&lid=' . $lids;
100
                    $mail               = \getMailer();
101
                    $mail->setTemplateDir(XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname') . '/language/' . $xoopsConfig['language'] . '/mail_template/');
102
                    $mail->setTemplate('listing_expires.tpl');
103
                    $mail->useMail();
104
                    $mail->multimailer->isHTML(true);
105
                    $mail->setFromName($meta['title']);
106
                    $mail->setFromEmail($xoopsConfig['adminmail']);
107
                    $mail->setToEmails($email);
108
                    $mail->setSubject($subject);
109
                    $mail->assign($tags);
110
                    $mail->send();
111
                    echo $mail->getErrors();
112
                }
113
            }
114
115
            // expire ad
116
117
            if ($supprdate < $datenow) {
118
                if (0 != $photo) {
119
                    $result2 = $xoopsDB->query('SELECT url FROM ' . $xoopsDB->prefix('adslight_pictures') . ' WHERE lid=' . $xoopsDB->escape($lids));
120
121
                    while (false !== (list($url) = $xoopsDB->fetchRow($result2))) {
122
                        $destination  = XOOPS_ROOT_PATH . '/uploads/adslight';
123
                        $destination2 = XOOPS_ROOT_PATH . '/uploads/adslight/thumbs';
124
                        $destination3 = XOOPS_ROOT_PATH . '/uploads/adslight/midsize';
125
                        if (\is_file("$destination/$url")) {
126
                            \unlink("$destination/$url");
127
                        }
128
                        if (\is_file("$destination2/thumb_$url")) {
129
                            \unlink("$destination2/thumb_$url");
130
                        }
131
                        if (\is_file("$destination3/resized_$url")) {
132
                            \unlink("$destination3/resized_$url");
133
                        }
134
                    }
135
                }
136
137
                $xoopsDB->queryF('DELETE FROM ' . $xoopsDB->prefix('adslight_listing') . ' WHERE lid=' . $xoopsDB->escape($lids));
138
139
                //  Specification for Japan:
140
                //  $message = ""._ADS_HELLO." $submitter,\n\n"._ADS_STOP2."\n $type : $title\n $desctext\n"._ADS_STOP3."\n\n"._ADS_VU." $lu "._ADS_VU2."\n\n"._ADS_OTHER." ".XOOPS_URL."/modules/myAds\n\n"._ADS_THANK."\n\n"._ADS_TEAM." ".$meta['title']."\n".XOOPS_URL."";
141
                if ($email) {
142
                    $tags               = [];
143
                    $subject            = '' . \_ADSLIGHT_STOP . '';
144
                    $tags['TITLE']      = $title;
145
                    $tags['HELLO']      = '' . \_ADSLIGHT_HELLO . '';
146
                    $tags['TYPE']       = static::getNameType($type);
147
                    $tags['DESCTEXT']   = $desctext;
148
                    $tags['HITS']       = $hits;
149
                    $tags['META_TITLE'] = $meta['title'];
150
                    $tags['SUBMITTER']  = $submitter;
151
                    $tags['YOUR_AD_ON'] = '' . \_ADSLIGHT_YOUR_AD_ON . '';
152
                    $tags['EXPIRED']    = '' . \_ADSLIGHT_EXPIRED . '';
153
                    $tags['MESSTEXT']   = \stripslashes($message);
154
                    $tags['OTHER']      = '' . \_ADSLIGHT_OTHER . '';
155
                    $tags['WEBMASTER']  = '' . \_ADSLIGHT_WEBMASTER . '';
156
                    $tags['THANKS']     = '' . \_ADSLIGHT_THANKS . '';
157
                    $tags['VIEWED']     = '' . \_ADSLIGHT_VU . '';
158
                    $tags['TIMES']      = '' . \_ADSLIGHT_TIMES . '';
159
                    $tags['TEAM']       = '' . \_ADSLIGHT_TEAM . '';
160
                    $tags['DURATION']   = $expire;
161
                    $tags['LINK_URL']   = XOOPS_URL . '/modules/' . $xoopsModule->getVar('dirname') . '/viewads.php?' . '&lid=' . $lids;
162
                    $mail               = \getMailer();
163
                    $mail->setTemplateDir(XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->getVar('dirname') . '/language/' . $xoopsConfig['language'] . '/mail_template/');
164
                    $mail->setTemplate('listing_expired.tpl');
165
                    $mail->useMail();
166
                    $mail->multimailer->isHTML(true);
167
                    $mail->setFromName($meta['title']);
168
                    $mail->setFromEmail($xoopsConfig['adminmail']);
169
                    $mail->setToEmails($email);
170
                    $mail->setSubject($subject);
171
                    $mail->assign($tags);
172
                    $mail->send();
173
                    echo $mail->getErrors();
174
                }
175
            }
176
        }
177
    }
178
179
    //updates rating data in itemtable for a given user
180
181
    /**
182
     * @param $sel_id
183
     */
184
    public static function updateUserRating($sel_id)
185
    {
186
        global $xoopsDB;
187
188
        $usid = Request::getInt('usid', 0, 'GET');
0 ignored issues
show
Unused Code introduced by
The assignment to $usid is dead and can be removed.
Loading history...
189
190
        $query = 'SELECT rating FROM ' . $xoopsDB->prefix('adslight_user_votedata') . ' WHERE usid=' . $xoopsDB->escape($sel_id) . ' ';
191
        //echo $query;
192
        $voteresult  = $xoopsDB->query($query);
193
        $votesDB     = $xoopsDB->getRowsNum($voteresult);
194
        $totalrating = 0;
195
        while (false !== (list($rating) = $xoopsDB->fetchRow($voteresult))) {
196
            $totalrating += $rating;
197
        }
198
        $finalrating = $totalrating / $votesDB;
199
        $finalrating = \number_format($finalrating, 4);
200
        $query       = 'UPDATE ' . $xoopsDB->prefix('adslight_listing') . " SET user_rating=$finalrating, user_votes=$votesDB WHERE usid=" . $xoopsDB->escape($sel_id) . '';
201
        //echo $query;
202
        $xoopsDB->query($query) || exit();
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
203
    }
204
205
    //updates rating data in itemtable for a given item
206
207
    /**
208
     * @param $sel_id
209
     */
210
    public static function updateItemRating($sel_id)
211
    {
212
        global $xoopsDB;
213
214
        $lid = Request::getInt('lid', 0, 'GET');
0 ignored issues
show
Unused Code introduced by
The assignment to $lid is dead and can be removed.
Loading history...
215
216
        $query = 'SELECT rating FROM ' . $xoopsDB->prefix('adslight_item_votedata') . ' WHERE lid=' . $xoopsDB->escape($sel_id) . ' ';
217
        //echo $query;
218
        $voteresult  = $xoopsDB->query($query);
219
        $votesDB     = $xoopsDB->getRowsNum($voteresult);
220
        $totalrating = 0;
221
        while (false !== (list($rating) = $xoopsDB->fetchRow($voteresult))) {
222
            $totalrating += $rating;
223
        }
224
        $finalrating = $totalrating / $votesDB;
225
        $finalrating = \number_format($finalrating, 4);
226
        $query       = 'UPDATE ' . $xoopsDB->prefix('adslight_listing') . " SET item_rating=$finalrating, item_votes=$votesDB WHERE lid=" . $xoopsDB->escape($sel_id) . '';
227
        //echo $query;
228
        $xoopsDB->query($query) || exit();
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
229
    }
230
231
    /**
232
     * @param        $sel_id
233
     * @param string $status
234
     *
235
     * @return int
236
     */
237
    public static function getTotalItems($sel_id, $status = '')
0 ignored issues
show
Unused Code introduced by
The parameter $status is not used and could be removed. ( Ignorable by Annotation )

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

237
    public static function getTotalItems($sel_id, /** @scrutinizer ignore-unused */ $status = '')

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
238
    {
239
        global $xoopsDB, $mytree;
240
        $categories = self::getMyItemIds('adslight_view');
241
        $count      = 0;
242
        $arr        = [];
0 ignored issues
show
Unused Code introduced by
The assignment to $arr is dead and can be removed.
Loading history...
243
        if (\in_array($sel_id, $categories)) {
244
            $query = 'SELECT SQL_CACHE count(*) FROM ' . $xoopsDB->prefix('adslight_listing') . ' WHERE cid=' . (int)$sel_id . " AND valid='Yes' AND status!='1'";
245
246
            $result = $xoopsDB->query($query);
247
            [$thing] = $xoopsDB->fetchRow($result);
248
            $count = $thing;
249
            $arr   = $mytree->getAllChildId($sel_id);
250
            foreach ($arr as $iValue) {
251
                if (\in_array($iValue, $categories)) {
252
                    $query2 = 'SELECT SQL_CACHE count(*) FROM ' . $xoopsDB->prefix('adslight_listing') . ' WHERE cid=' . (int)$iValue . " AND valid='Yes' AND status!='1'";
253
254
                    $result2 = $xoopsDB->query($query2);
255
                    [$thing] = $xoopsDB->fetchRow($result2);
256
                    $count += $thing;
257
                }
258
            }
259
        }
260
261
        return $count;
262
    }
263
264
    /**
265
     * @param $permtype
266
     *
267
     * @return mixed
268
     */
269
    public static function getMyItemIds($permtype)
270
    {
271
        static $permissions = [];
272
        if (\is_array($permissions)
273
            && \array_key_exists($permtype, $permissions)) {
274
            return $permissions[$permtype];
275
        }
276
277
        /** @var \XoopsModuleHandler $moduleHandler */
278
        $moduleHandler = \xoops_getHandler('module');
279
        $myModule      = $moduleHandler->getByDirname('adslight');
280
        $groups        = \is_object($GLOBALS['xoopsUser']) ? $GLOBALS['xoopsUser']->getGroups() : XOOPS_GROUP_ANONYMOUS;
281
        /** @var \XoopsGroupPermHandler $grouppermHandler */
282
        $grouppermHandler       = \xoops_getHandler('groupperm');
283
        $categories             = $grouppermHandler->getItemIds($permtype, $groups, $myModule->getVar('mid'));
284
        $permissions[$permtype] = $categories;
285
286
        return $categories;
287
    }
288
289
    /**
290
     * Returns a module's option
291
     * @param string $option module option's name
292
     * @param string $repmodule
293
     *
294
     * @return bool|mixed option's value
295
     */
296
    public static function getModuleOption($option, $repmodule = 'adslight')
297
    {
298
        global $xoopsModule;
299
        $helper = \XoopsModules\Adslight\Helper::getInstance();
300
        static $tbloptions = [];
301
        if (\is_array($tbloptions) && \array_key_exists($option, $tbloptions)) {
302
            return $tbloptions[$option];
303
        }
304
305
        $retval = false;
306
        if (isset($GLOBALS['xoopsModuleConfig'])
307
            && (\is_object($xoopsModule)
308
                && $xoopsModule->getVar('dirname') == $repmodule
309
                && $xoopsModule->getVar('isactive'))) {
310
            if (isset($GLOBALS['xoopsModuleConfig'][$option])) {
311
                $retval = $GLOBALS['xoopsModuleConfig'][$option];
312
            }
313
        } else {
314
            /** @var \XoopsModuleHandler $moduleHandler */
315
            $moduleHandler = \xoops_getHandler('module');
316
            $module        = $moduleHandler->getByDirname($repmodule);
317
            /** @var \XoopsConfigHandler $configHandler */
318
            $configHandler = \xoops_getHandler('config');
319
            if ($module) {
320
                $moduleConfig = $configHandler->getConfigsByCat(0, $GLOBALS['xoopsModule']->getVar('mid'));
0 ignored issues
show
Unused Code introduced by
The assignment to $moduleConfig is dead and can be removed.
Loading history...
321
                if (null !== $helper->getConfig($option)) {
322
                    $retval = $helper->getConfig($option);
323
                }
324
            }
325
        }
326
        $tbloptions[$option] = $retval;
327
328
        return $retval;
329
    }
330
331
    public static function showImage()
332
    {
333
        echo "<script type=\"text/javascript\">\n";
334
        echo "<!--\n\n";
335
        echo "function showimage() {\n";
336
        echo "if (!document.images)\n";
337
        echo "return\n";
338
        echo "document.images.avatar.src=\n";
339
        echo "'" . XOOPS_URL . "/modules/adslight/assets/images/img_cat/' + document.imcat.img.options[document.imcat.img.selectedIndex].value\n";
340
        echo "}\n\n";
341
        echo "//-->\n";
342
        echo "</script>\n";
343
    }
344
345
    //Reusable Link Sorting Functions
346
347
    /**
348
     * @param $orderby
349
     *
350
     * @return string
351
     */
352
    public static function convertOrderByIn($orderby)
353
    {
354
        switch (\trim($orderby)) {
355
            case 'titleA':
356
                $orderby = 'title ASC';
357
                break;
358
            case 'dateA':
359
                $orderby = 'date ASC';
360
                break;
361
            case 'hitsA':
362
                $orderby = 'hits ASC';
363
                break;
364
            case 'priceA':
365
                $orderby = 'price ASC';
366
                break;
367
            case 'titleD':
368
                $orderby = 'title DESC';
369
                break;
370
            case 'hitsD':
371
                $orderby = 'hits DESC';
372
                break;
373
            case 'priceD':
374
                $orderby = 'price DESC';
375
                break;
376
            case'dateD':
377
            default:
378
                $orderby = 'date DESC';
379
                break;
380
        }
381
382
        return $orderby;
383
    }
384
385
    /**
386
     * @param $orderby
387
     *
388
     * @return string
389
     */
390
    public static function convertOrderByTrans($orderby)
391
    {
392
        $orderbyTrans = '';
393
        if ('hits ASC' === $orderby) {
394
            $orderbyTrans = '' . \_ADSLIGHT_POPULARITYLTOM . '';
395
        }
396
        if ('hits DESC' === $orderby) {
397
            $orderbyTrans = '' . \_ADSLIGHT_POPULARITYMTOL . '';
398
        }
399
        if ('title ASC' === $orderby) {
400
            $orderbyTrans = '' . \_ADSLIGHT_TITLEATOZ . '';
401
        }
402
        if ('title DESC' === $orderby) {
403
            $orderbyTrans = '' . \_ADSLIGHT_TITLEZTOA . '';
404
        }
405
        if ('date ASC' === $orderby) {
406
            $orderbyTrans = '' . \_ADSLIGHT_DATEOLD . '';
407
        }
408
        if ('date DESC' === $orderby) {
409
            $orderbyTrans = '' . \_ADSLIGHT_DATENEW . '';
410
        }
411
        if ('price ASC' === $orderby) {
412
            $orderbyTrans = \_ADSLIGHT_PRICELTOH;
413
        }
414
        if ('price DESC' === $orderby) {
415
            $orderbyTrans = '' . \_ADSLIGHT_PRICEHTOL . '';
416
        }
417
418
        return $orderbyTrans;
419
    }
420
421
    /**
422
     * @param $orderby
423
     *
424
     * @return string
425
     */
426
    public static function convertOrderByOut($orderby)
427
    {
428
        if ('title ASC' === $orderby) {
429
            $orderby = 'titleA';
430
        }
431
        if ('date ASC' === $orderby) {
432
            $orderby = 'dateA';
433
        }
434
        if ('hits ASC' === $orderby) {
435
            $orderby = 'hitsA';
436
        }
437
        if ('price ASC' === $orderby) {
438
            $orderby = 'priceA';
439
        }
440
        if ('title DESC' === $orderby) {
441
            $orderby = 'titleD';
442
        }
443
        if ('date DESC' === $orderby) {
444
            $orderby = 'dateD';
445
        }
446
        if ('hits DESC' === $orderby) {
447
            $orderby = 'hitsD';
448
        }
449
        if ('price DESC' === $orderby) {
450
            $orderby = 'priceD';
451
        }
452
453
        return $orderby;
454
    }
455
456
    /**
457
     * @param string $caption
458
     * @param string $name
459
     * @param string $value
460
     * @param string $width
461
     * @param string $height
462
     * @param string $supplemental
463
     *
464
     * @return \XoopsFormDhtmlTextArea|\XoopsFormEditor
465
     */
466
    public static function getEditor($caption, $name, $value = '', $width = '100%', $height = '300px', $supplemental = '')
0 ignored issues
show
Unused Code introduced by
The parameter $supplemental is not used and could be removed. ( Ignorable by Annotation )

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

466
    public static function getEditor($caption, $name, $value = '', $width = '100%', $height = '300px', /** @scrutinizer ignore-unused */ $supplemental = '')

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
Unused Code introduced by
The parameter $caption is not used and could be removed. ( Ignorable by Annotation )

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

466
    public static function getEditor(/** @scrutinizer ignore-unused */ $caption, $name, $value = '', $width = '100%', $height = '300px', $supplemental = '')

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
467
    {
468
        global $xoopsModule;
469
        $options = [];
470
        $isAdmin = $GLOBALS['xoopsUser']->isAdmin($xoopsModule->getVar('mid'));
471
472
        if (\class_exists('XoopsFormEditor')) {
473
            $options['name']   = $name;
474
            $options['value']  = $value;
475
            $options['rows']   = 20;
476
            $options['cols']   = '100%';
477
            $options['width']  = $width;
478
            $options['height'] = $height;
479
            if ($isAdmin) {
480
                $myEditor = new \XoopsFormEditor(\ucfirst($name), $GLOBALS['xoopsModuleConfig']['adslightAdminUser'], $options, $nohtml = false, $onfailure = 'textarea');
481
            } else {
482
                $myEditor = new \XoopsFormEditor(\ucfirst($name), $GLOBALS['xoopsModuleConfig']['adslightEditorUser'], $options, $nohtml = false, $onfailure = 'textarea');
483
            }
484
        } else {
485
            $myEditor = new \XoopsFormDhtmlTextArea(\ucfirst($name), $name, $value, '100%', '100%');
0 ignored issues
show
Bug introduced by
'100%' of type string is incompatible with the type integer expected by parameter $cols of XoopsFormDhtmlTextArea::__construct(). ( Ignorable by Annotation )

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

485
            $myEditor = new \XoopsFormDhtmlTextArea(\ucfirst($name), $name, $value, '100%', /** @scrutinizer ignore-type */ '100%');
Loading history...
Bug introduced by
'100%' of type string is incompatible with the type integer expected by parameter $rows of XoopsFormDhtmlTextArea::__construct(). ( Ignorable by Annotation )

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

485
            $myEditor = new \XoopsFormDhtmlTextArea(\ucfirst($name), $name, $value, /** @scrutinizer ignore-type */ '100%', '100%');
Loading history...
486
        }
487
488
        //        $form->addElement($descEditor);
489
490
        return $myEditor;
491
    }
492
493
    /**
494
     * @param $tablename
495
     *
496
     * @return bool
497
     */
498
    public static function checkTableExists($tablename)
499
    {
500
        global $xoopsDB;
501
        $result = $xoopsDB->queryF("SHOW TABLES LIKE '$tablename'");
502
503
        return ($xoopsDB->getRowsNum($result) > 0);
504
    }
505
506
    /**
507
     * @param $fieldname
508
     * @param $table
509
     *
510
     * @return bool
511
     */
512
    public static function checkFieldExists($fieldname, $table)
513
    {
514
        global $xoopsDB;
515
        $result = $xoopsDB->queryF("SHOW COLUMNS FROM $table LIKE '$fieldname'");
516
517
        return ($xoopsDB->getRowsNum($result) > 0);
518
    }
519
520
    /**
521
     * @param $field
522
     * @param $table
523
     *
524
     * @return mixed
525
     */
526
    public static function addField($field, $table)
527
    {
528
        global $xoopsDB;
529
        $result = $xoopsDB->queryF('ALTER TABLE ' . $table . " ADD $field;");
530
531
        return $result;
532
    }
533
534
    /**
535
     * @param $cid
536
     *
537
     * @return bool
538
     */
539
    public static function getCatNameFromId($cid)
540
    {
541
        global $xoopsDB, $myts;
542
543
        $sql = 'SELECT SQL_CACHE title FROM ' . $xoopsDB->prefix('adslight_categories') . " WHERE cid = '$cid'";
544
545
        if (!$result = $xoopsDB->query($sql)) {
546
            return false;
547
        }
548
549
        if (!$arr = $xoopsDB->fetchArray($result)) {
550
            return false;
551
        }
552
553
        $title = $arr['title'];
554
555
        return $title;
556
    }
557
558
    /**
559
     * @return array
560
     */
561
    public static function goCategory()
562
    {
563
        global $xoopsDB;
564
565
        $xoopsTree = new \XoopsTree($xoopsDB->prefix('adslight_categories'), 'cid', 'pid');
566
        $jump      = XOOPS_URL . '/modules/adslight/viewcats.php?cid=';
567
        \ob_start();
568
        $xoopsTree->makeMySelBox('title', 'title', 0, 1, 'pid', 'location="' . $jump . '"+this.options[this.selectedIndex].value');
569
        $block['selectbox'] = \ob_get_clean();
0 ignored issues
show
Comprehensibility Best Practice introduced by
$block was never initialized. Although not strictly required by PHP, it is generally a good practice to add $block = array(); before regardless.
Loading history...
570
571
        return $block;
572
    }
573
574
    // ADSLIGHT Version 2 //
575
    // Fonction rss.php RSS par categories
576
577
    /**
578
     * @return array
579
     */
580
    public static function returnAllAdsRss()
581
    {
582
        global $xoopsDB;
583
584
        $cid = Request::getInt('cid', null, 'GET');
585
586
        $result = [];
587
588
        $sql = 'SELECT lid, title, price, date, town FROM ' . $xoopsDB->prefix('adslight_listing') . " WHERE valid='yes' AND cid=" . $xoopsDB->escape($cid) . ' ORDER BY date DESC';
589
590
        $resultValues = $xoopsDB->query($sql);
591
        while (false !== ($resultTemp = $xoopsDB->fetchBoth($resultValues))) {
592
            $result[] = $resultTemp;
593
        }
594
595
        return $result;
596
    }
597
598
    // Fonction fluxrss.php RSS Global
599
600
    /**
601
     * @return array
602
     */
603
    public static function returnAllAdsFluxRss()
604
    {
605
        global $xoopsDB;
606
607
        $result = [];
608
609
        $sql = 'SELECT lid, title, price, desctext, date, town FROM ' . $xoopsDB->prefix('adslight_listing') . " WHERE valid='yes' ORDER BY date DESC LIMIT 0,15";
610
611
        $resultValues = $xoopsDB->query($sql);
612
        while (false !== ($resultTemp = $xoopsDB->fetchBoth($resultValues))) {
613
            $result[] = $resultTemp;
614
        }
615
616
        return $result;
617
    }
618
619
    /**
620
     * @param $type
621
     *
622
     * @return mixed
623
     */
624
    public static function getNameType($type)
625
    {
626
        global $xoopsDB;
627
        $sql = $xoopsDB->query('SELECT nom_type FROM ' . $xoopsDB->prefix('adslight_type') . " WHERE id_type='" . $xoopsDB->escape($type) . "'");
628
        [$nom_type] = $xoopsDB->fetchRow($sql);
629
630
        return $nom_type;
631
    }
632
633
    /**
634
     * @param $format
635
     * @param $number
636
     *
637
     * @return mixed
638
     */
639
    public static function getMoneyFormat($format, $number)
640
    {
641
        $regex = '/%((?:[\^!\-]|\+|\(|\=.)*)([0-9]+)?' . '(?:#([0-9]+))?(?:\.([0-9]+))?([in%])/';
642
        if ('C' === \setlocale(\LC_MONETARY, 0)) {
643
            \setlocale(\LC_MONETARY, '');
644
        }
645
646
        //JJDai
647
        // setlocale(LC_ALL, 'en_US');
648
        //setlocale(LC_ALL, 'fr_FR');
649
        //$symb = $helper->getConfig('adslight_currency_symbol');
650
651
        $locale = \localeconv();
652
        \preg_match_all($regex, $format, $matches, \PREG_SET_ORDER);
653
        foreach ($matches as $fmatch) {
654
            $value      = (float)$number;
655
            $flags      = [
656
                'fillchar'  => \preg_match('/\=(.)/', $fmatch[1], $match) ? $match[1] : ' ',
657
                'nogroup'   => \preg_match('/\^/', $fmatch[1]) > 0,
658
                'usesignal' => \preg_match('/\+|\(/', $fmatch[1], $match) ? $match[0] : '+',
659
                'nosimbol'  => \preg_match('/\!/', $fmatch[1]) > 0,
660
                'isleft'    => \preg_match('/\-/', $fmatch[1]) > 0,
661
            ];
662
            $width      = \trim($fmatch[2]) ? (int)$fmatch[2] : 0;
663
            $left       = \trim($fmatch[3]) ? (int)$fmatch[3] : 0;
664
            $right      = \trim($fmatch[4]) ? (int)$fmatch[4] : $locale['int_frac_digits'];
665
            $conversion = $fmatch[5];
666
667
            $positive = true;
668
            if ($value < 0) {
669
                $positive = false;
670
                $value    *= -1;
671
            }
672
            $letter = $positive ? 'p' : 'n';
673
674
            $prefix = $suffix = $cprefix = $csuffix = $signal = '';
0 ignored issues
show
Unused Code introduced by
The assignment to $signal is dead and can be removed.
Loading history...
675
676
            $signal = $positive ? $locale['positive_sign'] : $locale['negative_sign'];
677
            switch (true) {
678
                case 1 == $locale["{$letter}_sign_posn"]
679
                     && '+' == $flags['usesignal']:
680
                    $prefix = $signal;
681
                    break;
682
                case 2 == $locale["{$letter}_sign_posn"]
683
                     && '+' == $flags['usesignal']:
684
                    $suffix = $signal;
685
                    break;
686
                case 3 == $locale["{$letter}_sign_posn"]
687
                     && '+' == $flags['usesignal']:
688
                    $cprefix = $signal;
689
                    break;
690
                case 4 == $locale["{$letter}_sign_posn"]
691
                     && '+' == $flags['usesignal']:
692
                    $csuffix = $signal;
693
                    break;
694
                case '(' === $flags['usesignal']:
695
                case 0 == $locale["{$letter}_sign_posn"]:
696
                    $prefix = '(';
697
                    $suffix = ')';
698
                    break;
699
            }
700
            if ($flags['nosimbol']) {
701
                $currency = '';
702
            } else {
703
                $currency = $cprefix . ('i' === $conversion ? $locale['int_curr_symbol'] : $locale['currency_symbol']) . $csuffix;
704
            }
705
            $space = $locale["{$letter}_sep_by_space"] ? ' ' : '';
706
707
            $value = \number_format($value, $right, $locale['mon_decimal_point'], $flags['nogroup'] ? '' : $locale['mon_thousands_sep']);
708
            $value = @\explode($locale['mon_decimal_point'], $value);
709
710
            $n = \mb_strlen($prefix) + \mb_strlen($currency) + \mb_strlen($value[0]);
711
            if ($left > 0 && $left > $n) {
712
                $value[0] = \str_repeat($flags['fillchar'], $left - $n) . $value[0];
713
            }
714
            $value = \implode($locale['mon_decimal_point'], $value);
715
            if ($locale["{$letter}_cs_precedes"]) {
716
                $value = $prefix . $currency . $space . $value . $suffix;
717
            } else {
718
                $value = $prefix . $value . $space . $currency . $suffix;
719
            }
720
            if ($width > 0) {
721
                $value = \str_pad($value, $width, $flags['fillchar'], $flags['isleft'] ? \STR_PAD_RIGHT : \STR_PAD_LEFT);
722
            }
723
724
            $format = \str_replace($fmatch[0], $value, $format);
725
        }
726
727
        return $format;
728
    }
729
730
    /**
731
     * Saves permissions for the selected category
732
     *
733
     *   saveCategory_Permissions()
734
     *
735
     * @param array  $groups : group with granted permission
736
     * @param        $categoryId
737
     * @param        $permName
738
     * @return bool : TRUE if the no errors occured
739
     */
740
    public static function saveCategoryPermissions($groups, $categoryId, $permName)
741
    {
742
        global $xoopsModule;
743
        $helper = \XoopsModules\Adslight\Helper::getInstance();
0 ignored issues
show
Unused Code introduced by
The assignment to $helper is dead and can be removed.
Loading history...
744
745
        $result = true;
746
        //        $xoopsModule = sf_getModuleInfo();
747
        //        $moduleId = $helper->getModule()->getVar('mid');
748
        $moduleId = $xoopsModule->getVar('mid');
749
750
        $grouppermHandler = \xoops_getHandler('groupperm');
751
        // First, if the permissions are already there, delete them
752
        /** @var \XoopsGroupPermHandler $grouppermHandler */
753
        $grouppermHandler->deleteByModule($moduleId, $permName, $categoryId);
754
        // Save the new permissions
755
        if (\count($groups) > 0) {
756
            foreach ($groups as $groupId) {
757
                $grouppermHandler->addRight($permName, $categoryId, $groupId, $moduleId);
758
            }
759
        }
760
761
        return $result;
762
    }
763
764
765
    //======================= NEW ========================
766
    //--------------- Custom module methods -----------------------------
767
768
    /**
769
     * @param $text
770
     * @param $form_sort
771
     * @return string
772
     */
773
    public static function selectSorting($text, $form_sort)
774
    {
775
        global $start, $order, $file_cat, $sort, $xoopsModule;
776
777
        $select_view   = '';
0 ignored issues
show
Unused Code introduced by
The assignment to $select_view is dead and can be removed.
Loading history...
778
        $moduleDirName = \basename(\dirname(__DIR__));
779
        $helper        = Adslight\Helper::getInstance();
780
781
        $pathModIcon16 = XOOPS_URL . '/modules/' . $moduleDirName . '/' . $helper->getModule()->getInfo('modicons16');
0 ignored issues
show
Bug introduced by
Are you sure $helper->getModule()->getInfo('modicons16') of type array|string can be used in concatenation? ( Ignorable by Annotation )

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

781
        $pathModIcon16 = XOOPS_URL . '/modules/' . $moduleDirName . '/' . /** @scrutinizer ignore-type */ $helper->getModule()->getInfo('modicons16');
Loading history...
782
783
        $select_view = '<form name="form_switch" id="form_switch" action="' . Request::getString('REQUEST_URI', '', 'SERVER') . '" method="post"><span style="font-weight: bold;">' . $text . '</span>';
784
        //$sorts =  $sort ==  'asc' ? 'desc' : 'asc';
785
        if ($form_sort == $sort) {
786
            $sel1 = 'asc' === $order ? 'selasc.png' : 'asc.png';
787
            $sel2 = 'desc' === $order ? 'seldesc.png' : 'desc.png';
788
        } else {
789
            $sel1 = 'asc.png';
790
            $sel2 = 'desc.png';
791
        }
792
        $select_view .= '  <a href="' . Request::getString('PHP_SELF', '', 'SERVER') . '?start=' . $start . '&sort=' . $form_sort . '&order=asc"><img src="' . $pathModIcon16 . '/' . $sel1 . '" title="ASC" alt="ASC"></a>';
793
        $select_view .= '<a href="' . Request::getString('PHP_SELF', '', 'SERVER') . '?start=' . $start . '&sort=' . $form_sort . '&order=desc"><img src="' . $pathModIcon16 . '/' . $sel2 . '" title="DESC" alt="DESC"></a>';
794
        $select_view .= '</form>';
795
796
        return $select_view;
797
    }
798
799
    /***************Blocks***************/
800
    /**
801
     * @param array $cats
802
     * @return string
803
     */
804
    public static function blockAddCatSelect($cats)
805
    {
806
        $cat_sql = '';
807
        if (\is_array($cats)) {
0 ignored issues
show
introduced by
The condition is_array($cats) is always true.
Loading history...
808
            $cat_sql = '(' . \current($cats);
809
            \array_shift($cats);
810
            foreach ($cats as $cat) {
811
                $cat_sql .= ',' . $cat;
812
            }
813
            $cat_sql .= ')';
814
        }
815
816
        return $cat_sql;
817
    }
818
819
    /**
820
     * @param $content
821
     */
822
    public static function metaKeywords($content)
823
    {
824
        global $xoopsTpl, $xoTheme;
825
        $myts    = \MyTextSanitizer::getInstance();
826
        $content = $myts->undoHtmlSpecialChars($myts->displayTarea($content));
827
        if (null !== $xoTheme && \is_object($xoTheme)) {
828
            $xoTheme->addMeta('meta', 'keywords', \strip_tags($content));
829
        } else {    // Compatibility for old Xoops versions
830
            $xoopsTpl->assign('xoops_metaKeywords', \strip_tags($content));
831
        }
832
    }
833
834
    /**
835
     * @param $content
836
     */
837
    public static function metaDescription($content)
838
    {
839
        global $xoopsTpl, $xoTheme;
840
        $myts    = \MyTextSanitizer::getInstance();
841
        $content = $myts->undoHtmlSpecialChars($myts->displayTarea($content));
842
        if (null !== $xoTheme && \is_object($xoTheme)) {
843
            $xoTheme->addMeta('meta', 'description', \strip_tags($content));
844
        } else {    // Compatibility for old Xoops versions
845
            $xoopsTpl->assign('xoops_metaDescription', \strip_tags($content));
846
        }
847
    }
848
849
    /**
850
     * @param $tableName
851
     * @param $columnName
852
     *
853
     * @return array
854
     */
855
    public static function enumerate($tableName, $columnName)
856
    {
857
        $table = $GLOBALS['xoopsDB']->prefix($tableName);
858
859
        //    $result = $GLOBALS['xoopsDB']->query("SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
860
        //        WHERE TABLE_NAME = '" . $table . "' AND COLUMN_NAME = '" . $columnName . "'")
861
        //    || exit ($GLOBALS['xoopsDB']->error());
862
863
        $sql    = 'SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = "' . $table . '" AND COLUMN_NAME = "' . $columnName . '"';
864
        $result = $GLOBALS['xoopsDB']->query($sql);
865
        if (!$result) {
866
            exit($GLOBALS['xoopsDB']->error());
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
867
        }
868
869
        $row      = $GLOBALS['xoopsDB']->fetchBoth($result);
870
        $enumList = \explode(',', \str_replace("'", '', \substr($row['COLUMN_TYPE'], 5, -6)));
871
        return $enumList;
872
    }
873
874
    /**
875
     * @param array|string $tableName
876
     * @param int          $id_field
877
     * @param int          $id
878
     *
879
     * @return false|void
880
     */
881
    public static function cloneRecord($tableName, $id_field, $id)
882
    {
883
        $new_id = false;
884
        $table  = $GLOBALS['xoopsDB']->prefix($tableName);
885
        // copy content of the record you wish to clone
886
        $tempTable = $GLOBALS['xoopsDB']->fetchArray($GLOBALS['xoopsDB']->query("SELECT * FROM $table WHERE $id_field='$id' "), \MYSQLI_ASSOC) || exit('Could not select record');
0 ignored issues
show
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
887
        // set the auto-incremented id's value to blank.
888
        unset($tempTable[$id_field]);
889
        // insert cloned copy of the original  record
890
        $result = $GLOBALS['xoopsDB']->queryF("INSERT INTO $table (" . \implode(', ', \array_keys($tempTable)) . ") VALUES ('" . \implode("', '", \array_values($tempTable)) . "')") || exit($GLOBALS['xoopsDB']->error());
0 ignored issues
show
Bug introduced by
$tempTable of type boolean is incompatible with the type array expected by parameter $array of array_values(). ( Ignorable by Annotation )

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

890
        $result = $GLOBALS['xoopsDB']->queryF("INSERT INTO $table (" . \implode(', ', \array_keys($tempTable)) . ") VALUES ('" . \implode("', '", \array_values(/** @scrutinizer ignore-type */ $tempTable)) . "')") || exit($GLOBALS['xoopsDB']->error());
Loading history...
Best Practice introduced by
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
Bug introduced by
$tempTable of type boolean is incompatible with the type array expected by parameter $array of array_keys(). ( Ignorable by Annotation )

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

890
        $result = $GLOBALS['xoopsDB']->queryF("INSERT INTO $table (" . \implode(', ', \array_keys(/** @scrutinizer ignore-type */ $tempTable)) . ") VALUES ('" . \implode("', '", \array_values($tempTable)) . "')") || exit($GLOBALS['xoopsDB']->error());
Loading history...
891
892
        if ($result) {
893
            // Return the new id
894
            $new_id = $GLOBALS['xoopsDB']->getInsertId();
895
        }
896
        return $new_id;
897
    }
898
899
    /**
900
     * truncateHtml can truncate a string up to a number of characters while preserving whole words and HTML tags
901
     * www.gsdesign.ro/blog/cut-html-string-without-breaking-the-tags
902
     * www.cakephp.org
903
     *
904
     * @param string $text         String to truncate.
905
     * @param int    $length       Length of returned string, including ellipsis.
906
     * @param string $ending       Ending to be appended to the trimmed string.
907
     * @param bool   $exact        If false, $text will not be cut mid-word
908
     * @param bool   $considerHtml If true, HTML tags would be handled correctly
909
     *
910
     * @return string Trimmed string.
911
     */
912
    public static function truncateHtml($text, $length = 100, $ending = '...', $exact = false, $considerHtml = true)
913
    {
914
        if ($considerHtml) {
915
            // if the plain text is shorter than the maximum length, return the whole text
916
            if (\strlen(\preg_replace('/<.*?' . '>/', '', $text)) <= $length) {
917
                return $text;
918
            }
919
            // splits all html-tags to scanable lines
920
            \preg_match_all('/(<.+?' . '>)?([^<>]*)/s', $text, $lines, \PREG_SET_ORDER);
921
            $total_length = \strlen($ending);
922
            $openTags     = [];
923
            $truncate     = '';
924
            foreach ($lines as $line_matchings) {
925
                // if there is any html-tag in this line, handle it and add it (uncounted) to the output
926
                if (!empty($line_matchings[1])) {
927
                    // if it's an "empty element" with or without xhtml-conform closing slash
928
                    if (\preg_match('/^<(\s*.+?\/\s*|\s*(img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param)(\s.+?)?)>$/is', $line_matchings[1])) {
929
                        // do nothing
930
                        // if tag is a closing tag
931
                    } elseif (\preg_match('/^<\s*\/([^\s]+?)\s*>$/s', $line_matchings[1], $tag_matchings)) {
932
                        // delete tag from $openTags list
933
                        $pos = \array_search($tag_matchings[1], $openTags);
934
                        if (false !== $pos) {
935
                            unset($openTags[$pos]);
936
                        }
937
                        // if tag is an opening tag
938
                    } elseif (\preg_match('/^<\s*([^\s>!]+).*?' . '>$/s', $line_matchings[1], $tag_matchings)) {
939
                        // add tag to the beginning of $openTags list
940
                        \array_unshift($openTags, \strtolower($tag_matchings[1]));
941
                    }
942
                    // add html-tag to $truncate'd text
943
                    $truncate .= $line_matchings[1];
944
                }
945
                // calculate the length of the plain text part of the line; handle entities as one character
946
                $content_length = \strlen(\preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i', ' ', $line_matchings[2]));
947
                if ($total_length + $content_length > $length) {
948
                    // the number of characters which are left
949
                    $left            = $length - $total_length;
950
                    $entities_length = 0;
951
                    // search for html entities
952
                    if (\preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|[0-9a-f]{1,6};/i', $line_matchings[2], $entities, \PREG_OFFSET_CAPTURE)) {
953
                        // calculate the real length of all entities in the legal range
954
                        foreach ($entities[0] as $entity) {
955
                            if ($entity[1] + 1 - $entities_length <= $left) {
956
                                $left--;
957
                                $entities_length += \strlen($entity[0]);
958
                            } else {
959
                                // no more characters left
960
                                break;
961
                            }
962
                        }
963
                    }
964
                    $truncate .= \substr($line_matchings[2], 0, $left + $entities_length);
965
                    // maximum lenght is reached, so get off the loop
966
                    break;
967
                } else {
968
                    $truncate     .= $line_matchings[2];
969
                    $total_length += $content_length;
970
                }
971
                // if the maximum length is reached, get off the loop
972
                if ($total_length >= $length) {
973
                    break;
974
                }
975
            }
976
        } else {
977
            if (\strlen($text) <= $length) {
978
                return $text;
979
            } else {
980
                $truncate = \substr($text, 0, $length - \strlen($ending));
981
            }
982
        }
983
        // if the words shouldn't be cut in the middle...
984
        if (!$exact) {
985
            // ...search the last occurance of a space...
986
            $spacepos = \strrpos($truncate, ' ');
987
            if (isset($spacepos)) {
988
                // ...and cut the text in this position
989
                $truncate = \substr($truncate, 0, $spacepos);
990
            }
991
        }
992
        // add the defined ending to the text
993
        $truncate .= $ending;
994
        if ($considerHtml) {
995
            // close all unclosed html-tags
996
            foreach ($openTags as $tag) {
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $openTags does not seem to be defined for all execution paths leading up to this point.
Loading history...
997
                $truncate .= '</' . $tag . '>';
998
            }
999
        }
1000
1001
        return $truncate;
1002
    }
1003
1004
    /***********************************************************************
1005
     * $fldVersion : dossier version de fancybox
1006
     ***********************************************************************/
1007
    public static function load_lib_js()
1008
    {
1009
        global $xoTheme, $xoopsModuleConfig;
1010
1011
        $fld = XOOPS_URL . '/modules/adslight/' . 'assets/';
1012
1013
        if (1 == $GLOBALS['xoopsModuleConfig']['adslight_lightbox']) {
1014
            // $xoTheme->addScript(XOOPS_URL . '/browse.php?Frameworks/jquery/plugins/jquery.lightbox.js');
1015
            // $xoTheme->addStyleSheet(XOOPS_URL . '/browse.php?Frameworks/jquery/plugins/jquery.lightbox.js');
1016
1017
            $xoTheme->addScript($fld . '/js/lightbox/js/lightbox.js');
1018
            $xoTheme->addStyleSheet($fld . '/js/lightbox/css/lightbox.css');
1019
        } else {
1020
            //$xoTheme->addStyleSheet($fld . "/css/galery.css" type="text/css" media="screen");
1021
1022
        }
1023
        /*
1024
                    if (1 == $GLOBALS['xoopsModuleConfig']['adslight_lightbox']) {
1025
                        $header_lightbox = '<link rel="stylesheet" href="' . XOOPS_URL . '/modules/adslight/assets/css/adslight.css" type="text/css" media="all" >
1026
        <script type="text/javascript" src="assets/lightbox/js/jquery-1.7.2.min.js"></script>
1027
        <script type="text/javascript" src="assets/lightbox/js/jquery-ui-1.8.18.custom.min"></script>
1028
        <script type="text/javascript" src="assets/lightbox/js/jquery.smooth-scroll.min.js"></script>
1029
        <script type="text/javascript" src="assets/lightbox/js/lightbox.js"></script>
1030
1031
        <link rel="stylesheet" href="assets/css/galery.css" type="text/css" media="screen" >
1032
        <link rel="stylesheet" type="text/css" media="screen" href="assets/lightbox/css/lightbox.css"></link>';
1033
                    } else {
1034
                        $header_lightbox = '<link rel="stylesheet" href="' . XOOPS_URL . '/modules/adslight/assets/css/adslight.css" type="text/css" media="all" >
1035
        <link rel="stylesheet" href="assets/css/galery.css" type="text/css" media="screen" >';
1036
                    }
1037
1038
1039
          $fldVersion = "fancybox_215";
1040
          $fbFolder =  XOOPS_URL . "/Frameworks/" . $fldVersion;
1041
          //$modFolder = "modules/" . $module_dirname;
1042
          $modFolder = "modules/" . 'mediatheque';
1043
1044
            //$xoTheme->addStyleSheet($fModule . '/css/style.css');
1045
            $xoTheme->addScript(XOOPS_URL . '/browse.php?Frameworks/jquery/jquery.js');
1046
1047
          //to-do : a remplacer par  jquery.mousewheel-3.0.6.pack.js
1048
          $xoTheme->addScript($fbFolder . "/jquery.mousewheel-3.0.4.pack.js");
1049
1050
            $xoTheme->addStyleSheet($fbFolder . "/jquery.fancybox.css?v=2.1.5");
1051
            $xoTheme->addScript($fbFolder . "/jquery.fancybox.js?v=2.1.5");
1052
1053
        //-----------------------------------------
1054
        //  OPTIONAL
1055
            $xoTheme->addStyleSheet($fbFolder . "/helpers/jquery.fancybox-buttons.css?v=1.0.5");
1056
            $xoTheme->addScript($fbFolder . "/helpers/jquery.fancybox-buttons.js?v=1.0.5");
1057
1058
            $xoTheme->addStyleSheet($fbFolder . "/helpers/jquery.fancybox-thumbs.css?v=1.0.7");
1059
            $xoTheme->addScript($fbFolder . "/helpers/jquery.fancybox-thumbs.js?v=1.0.7");
1060
1061
            $xoTheme->addScript($fbFolder . "/helpers/jquery.fancybox-media.js?v=1.0.6");
1062
1063
        //-----------------------------------------
1064
1065
1066
1067
            $xoTheme->addScript($modFolder . "/js/media.fancybox.js");
1068
1069
        */
1070
    }
1071
1072
    /**
1073
     * Currency Format
1074
     *
1075
     * @param float $number
1076
     * @param string $currency The 3-letter ISO 4217 currency code indicating the currency to use.
1077
     * @param string $localeCode (local language code, e.g. en_US)
1078
     * @return string|false formatted currency value
1079
     */
1080
    public static function formatCurrency($number, $currency='USD', $localeCode='')
1081
    {
1082
        $localeCode?? locale_get_default();
1083
        $fmt = new \NumberFormatter( $localeCode, \NumberFormatter::CURRENCY );
1084
        return $fmt->formatCurrency($number, $currency);;
1085
    }
1086
1087
    /**
1088
     * Currency Format (temporary)
1089
     *
1090
     * @param float $number
1091
     * @param string $currency The 3-letter ISO 4217 currency code indicating the currency to use.
1092
     * @param string $currencySymbol
1093
     * @param int $currencyPosition
1094
     * @return string formatted currency value
1095
     */
1096
    public static function formatCurrencyTemp($number, $currency='USD', $currencySymbol='$', $currencyPosition=0)
0 ignored issues
show
Unused Code introduced by
The parameter $currency is not used and could be removed. ( Ignorable by Annotation )

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

1096
    public static function formatCurrencyTemp($number, /** @scrutinizer ignore-unused */ $currency='USD', $currencySymbol='$', $currencyPosition=0)

This check looks for parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
1097
    {
1098
        $currentDefault = locale_get_default();
1099
        $fmt = new \NumberFormatter( $currentDefault, \NumberFormatter::DECIMAL  );
1100
        $formattedNumber =  $fmt->format($number);
1101
        return 1 === $currencyPosition ? $currencySymbol . $formattedNumber : $formattedNumber . ' ' . $currencySymbol;
1102
    }
1103
}
1104