Completed
Push — master ( fd0c8a...c024a6 )
by
unknown
03:33 queued 01:53
created

functions.php ➔ smallworld_SetCoreScript()   B

Complexity

Conditions 8
Paths 128

Size

Total Lines 78

Duplication

Lines 5
Ratio 6.41 %

Importance

Changes 0
Metric Value
cc 8
nc 128
nop 0
dl 5
loc 78
rs 7.0488
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
/**
3
 * You may not change or alter any portion of this comment or credits
4
 * of supporting developers from this source code or any supporting source code
5
 * which is considered copyrighted (c) material of the original comment or credit authors.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
 */
11
12
/**
13
 * SmallWorld
14
 *
15
 * @copyright    The XOOPS Project (https://xoops.org)
16
 * @copyright    2011 Culex
17
 * @license      GNU GPL (http://www.gnu.org/licenses/gpl-2.0.html/)
18
 * @package      SmallWorld
19
 * @since        1.0
20
 * @author       Michael Albertsen (http://culex.dk) <[email protected]>
21
 */
22
23
use Xmf\Request;
24
use Xoopsmodules\smallworld;
25
//require_once __DIR__ . '/common.php';
26
27
/*
28
Get array of timestamps based on the timetype configured in preferences
29
*/
30
/**
31
 * @return array
32
 */
33
function SmallworldGetTimestampsToForm()
34
{
35
    $timearray = [];
36
    $start     = 1900;
37
    $end       = date('Y');
38
    for ($i = $start; $i <= $end; ++$i) {
39
        $key             = $i;
40
        $timearray[$key] = $i;
41
    }
42
    ksort($timearray);
43
    return $timearray;
44
}
45
46
// Clean vars or arrays
47
// If array check for magicQuotes.
48
// Pass string to Smallworld_cleanup_string
49
/**
50
 * @param $text
51
 * @return array|mixed
52
 */
53
function Smallworld_cleanup($text)
54
{
55 View Code Duplication
    if (is_array($text)) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
56
        foreach ($text as $key => $value) {
57
            $text[$key] = Smallworld_cleanup_string($value);
58
        }
59
    } else {
60
        $text = Smallworld_cleanup_string($text);
61
    }
62
    return $text;
63
}
64
65
// Sanitize string
66
/**
67
 * @param $text
68
 * @return mixed
69
 */
70
function Smallworld_cleanup_string($text)
71
{
72
    $myts = MyTextSanitizer::getInstance();
73
    $text = $myts->displayTarea($text, $html = 1, $smiley = 1, $xcode = 1, $image = 1, $br = 1);
74
    return $text;
75
}
76
77
// clean Array for mysql insertion
78
// or send string to Smallworld_sanitize_string
79
/**
80
 * @param $text
81
 * @return array|mixed
82
 */
83
function Smallworld_sanitize($text)
84
{
85 View Code Duplication
    if (is_array($text)) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
86
        foreach ($text as $key => $value) {
87
            $text[$key] = Smallworld_sanitize_string($value);
88
        }
89
    } else {
90
        $text = Smallworld_sanitize_string($text);
91
    }
92
    return $text;
93
}
94
95
/**
96
 * @param $value
97
 * @return mixed
98
 */
99
function Smallworld_sanitize_string($value)
100
{
101
    $myts = MyTextSanitizer::getInstance();
102
    if (get_magic_quotes_gpc()) {
103
        $value = $myts->stripSlashesGPC($value);
104
    } else {
105
        $value = $GLOBALS['xoopsDB']->escape($value);
106
    }
107
    return $value;
108
}
109
110
/**
111
 * @param $array
112
 * @return array
113
 */
114
function Smallworld_DateOfArray($array)
115
{
116
    $data = [];
117
    foreach ($array as $k => $v) {
118
        $data[$k] = strtotime($v);
119
    }
120
    return $data;
121
}
122
123
/**
124
 * @param $array
125
 * @return array
126
 */
127
function Smallworld_YearOfArray($array)
128
{
129
    $data = [];
130
    foreach ($array as $k => $v) {
131
        $data[$k] = $v;
132
    }
133
    return $data;
134
}
135
136
/**
137
 * @param $folderUrl
138
 */
139
function Smallworld_CreateIndexFiles($folderUrl)
140
{
141
    $myts = MyTextSanitizer::getInstance();
0 ignored issues
show
Unused Code introduced by
$myts is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
142
    file_put_contents($folderUrl . 'index.html', '<script>history.go(-1);</script>');
143
}
144
145
/**
146
 * @param string $glue
147
 * @param        $pieces
148
 * @return string
149
 */
150
function smallworld_ImplodeArray($glue = ', ', $pieces)
151
{
152
    return implode($glue, $pieces);
153
}
154
155
// recursively reduces deep arrays to single-dimensional arrays
156
// $preserve_keys: (0=>never, 1=>strings, 2=>always)
157
/**
158
 * @param       $array
159
 * @param int   $preserve_keys
160
 * @param array $newArray
161
 * @return array
162
 */
163
function Smallworld_array_flatten($array, $preserve_keys = 1, &$newArray = [])
164
{
165
    foreach ($array as $key => $child) {
166
        if (is_array($child)) {
167
            $newArray = Smallworld_array_flatten($child, $preserve_keys, $newArray);
168
        } elseif ($preserve_keys + is_string($key) > 1) {
169
            $newArray[$key] = $child;
170
        } else {
171
            $newArray[] = $child;
172
        }
173
    }
174
    return $newArray;
175
}
176
177
/*
178
 * Calculate years from date format (YYYY-MM-DD)
179
 * @param date $birth
180
 * @returns integer
181
 */
182
/**
183
 * @param $birth
184
 * @return false|string
0 ignored issues
show
Documentation introduced by
Should the return type not be integer|double?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
185
 */
186
function Smallworld_Birthday($birth)
187
{
188
    list($year, $month, $day) = explode('-', $birth);
189
    $yearDiff  = date('Y') - $year;
190
    $monthDiff = date('m') - $month;
191
    $dayDiff   = date('d') - $day;
192
    if (0 == $monthDiff) {
193
        if ($dayDiff < 0) {
194
            $yearDiff--;
195
        }
196
    }
197
    if ($monthDiff < 0) {
198
        $yearDiff--;
199
    }
200
    return $yearDiff;
201
}
202
203
/**
204
 * @param $check
205
 * @return bool
206
 */
207
function smallworld_isset_or($check)
208
{
209
    global $xoopsDB, $xoopsUser;
210
    $query  = 'SELECT * FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE username = '" . $check . "'";
211
    $result = $xoopsDB->queryF($query);
212
    while ($row = $xoopsDB->fetchArray($result)) {
213
        if ('' == $row['userid']) {
214
            return false;
215
        } else {
216
            return $row['userid'];
217
        }
218
    }
219
}
220
221
//Srinivas Tamada http://9lessons.info
222
//Loading Comments link with load_updates.php
223
/**
224
 * @param $session_time
225
 * @return string
226
 */
227
function smallworld_time_stamp($session_time)
228
{
229
    global $xoopsConfig;
230
    $time_difference = time() - $session_time;
231
    $seconds         = $time_difference;
232
    $minutes         = round($time_difference / 60);
233
    $hours           = round($time_difference / 3600);
234
    $days            = round($time_difference / 86400);
235
    $weeks           = round($time_difference / 604800);
236
    $months          = round($time_difference / 2419200);
237
    $years           = round($time_difference / 29030400);
238
    if ($seconds <= 60) {
239
        $t = "$seconds" . _SMALLWORLD_SECONDSAGO;
240
    } elseif ($minutes <= 60) {
241
        if (1 == $minutes) {
242
            $t = _SMALLWORLD_ONEMINUTEAGO;
243
        } else {
244
            $t = "$minutes" . _SMALLWORLD_MINUTESAGO;
245
        }
246
    } elseif ($hours <= 24) {
247
        if (1 == $hours) {
248
            $t = _SMALLWORLD_ONEHOURAGO;
249
        } else {
250
            $t = "$hours" . _SMALLWORLD_HOURSAGO;
251
        }
252
    } elseif ($days <= 7) {
253
        if (1 == $days) {
254
            $t = _SMALLWORLD_ONEDAYAGO;
255
        } else {
256
            $t = "$days" . _SMALLWORLD_DAYSAGO;
257
        }
258
    } elseif ($weeks <= 4) {
259
        if (1 == $weeks) {
260
            $t = _SMALLWORLD_ONEWEEKAGO;
261
        } else {
262
            $t = "$weeks" . _SMALLWORLD_WEEKSAGO;
263
        }
264
    } elseif ($months <= 12) {
265
        if (1 == $months) {
266
            $t = _SMALLWORLD_ONEMONTHAGO;
267
        } else {
268
            $t = "$months" . _SMALLWORLD_MONTHSAGO;
269
        }
270
    } else {
271
        if (1 == $years) {
272
            $t = _SMALLWORLD_ONEYEARAGO;
273
        } else {
274
            $t = "$years" . _SMALLWORLD_YEARSAGO;
275
        }
276
    }
277
    return $t;
278
}
279
280
// Return only url/link
281
// If url is image link return <img>
282
/**
283
 * @param $text
284
 * @param $uid
285
 * @return string
286
 */
287
function smallworld_tolink($text, $uid)
288
{
289
    global $xoopsUser;
290
    $ext       = substr($text, -4, 4);
291
    $ext2      = substr($text, -5, 5);
292
    $xoopsUser = new \XoopsUser($uid);
293
    $usr       = new $xoopsUser($uid);
294
295
    $userID   = $xoopsUser->getVar('uid');
296
    $user     = new \XoopsUser($userID);
297
    $username = $user->getVar('uname');
298
    $gallery  = XOOPS_URL . '/modules/smallworld/galleryshow.php?username=' . $usr->getVar('uname');
299
300
    if (in_array($ext, ['.jpg', '.bmp', '.gif', '.png']) || in_array($ext, ['.JPG', '.BMP', '.GIF', '.PNG']) || in_array($ext2, ['.jpeg'])) {
301
        if (false !== strpos($text, 'UPLIMAGE')) {
302
            $text = str_replace('UPLIMAGE', '', $text);
303
            $text = preg_replace(
304
                '/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
305
                                 '<span class="smallworldUplImgTxt"><br><img class="smallworldAttImg" src="\\1"><br><br><a id="smallworldUplImgLnk" href="' . $gallery . '" target="_SELF">' . $usr->getVar('uname') . _SMALLWORLD_UPLOADEDSOMEIMAGES . '</a><br></span>',
306
                $text
307
            );
308
            $text = preg_replace('/(((f|ht){1}tps:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '<a href="\\1">lala</a>', $text);
309
            $text = preg_replace(
310
                '/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i',
311
                                 '\\1<span class="smallworldUplImgTxt"><br><img class="smallworldAttImg" src="//\\2"><br><br><a id="smallworldUplImgLnk" href="' . $gallery . '" target="_SELF">' . $username . _SMALLWORLD_UPLOADEDSOMEIMAGES . '</a><br></span>',
312
                $text
313
            );
314
            $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
315
        } else {
316
            $text = preg_replace('/(((f|ht){1}tp:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '<img class="smallworldAttImg" src="\\1"><a class="smallworldAttImgTxt" href="\\1">' . _SMALLWORLD_CLICKIMAGETHUMB . ' </a><br>', $text);
317
            $text = preg_replace('/(((f|ht){1}tps:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '<img class="smallworldAttImg" src="\\1"><a class="smallworldAttImgTxt" href="\\1">' . _SMALLWORLD_CLICKIMAGETHUMB . ' </a><br>', $text);
318
            $text = preg_replace('/([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '\\1<img class="smallworldAttImg" src="//\\2"><a class="smallworldAttImgTxt" href="//\\2">' . _SMALLWORLD_CLICKIMAGETHUMB . '</a><br>', $text);
319
            $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
320
        }
321
    } else {
322
        $text = html_entity_decode($text, ENT_QUOTES, 'UTF-8');
323
        $text = ' ' . $text;
324
        $text = str_replace('UPLIMAGE', '', $text);
325
    }
326
    return linkify_twitter_status($text);
327
}
328
329
/**
330
 * @param $text
331
 * @return mixed
332
 */
333
function Smallworld_stripWordsKeepUrl($text)
334
{
335
    preg_replace('/(((f|ht){1}tps:\/\/)[-a-zA-Z0-9@:%_\+.~#?&\/\/=]+)/i', '<div class=".embed"><a href="\\1">\\1</a></div>', $text);
336
    return $text;
337
}
338
339
/**
340
 * @param $num
341
 * @param $name
342
 * @return string
343
 */
344
function Smallworld_sociallinks($num, $name)
345
{
346 View Code Duplication
    if (0 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
347
        $image = '<img title="Msn" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/msn.png">';
348
        $link  = '<a title="Msn" id="Smallworld_socialnetwork" target="_blank" href="http://members.msn.com/' . $name . '">';
349
    }
350 View Code Duplication
    if (1 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
351
        $image = '<img title="facebook" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/facebook.png">';
352
        $link  = '<a title="facebook" id="Smallworld_socialnetwork" target="_blank" href="http://www.facebook.com/' . $name . '">';
353
    }
354 View Code Duplication
    if (2 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
355
        $image = '<img title="GooglePlus" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/googleplus.png">';
356
        $link  = '<a title="GooglePlus" id="Smallworld_socialnetwork" target="_blank" href="https://plus.google.com/' . $name . '">';
357
    }
358 View Code Duplication
    if (3 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
359
        $image = '<img title="Icq" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/icq.png">';
360
        $link  = '<a title="icq" id="Smallworld_socialnetwork" target="_blank" href="http://www.icq.com/people/' . $name . '/">';
361
    }
362 View Code Duplication
    if (4 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
363
        $image = '<img title="Skype" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/skype.png">';
364
        $link  = '<a title="Skype" id="Smallworld_socialnetwork" target="_blank" href="skype:' . $name . '?userinfo">';
365
    }
366 View Code Duplication
    if (5 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
367
        $image = '<img title="Twitter" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/twitter.png">';
368
        $link  = '<a title="Twitter" id="Smallworld_socialnetwork" target="_blank" href="http://twitter.com/#!/' . $name . '">';
369
    }
370 View Code Duplication
    if (6 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
371
        $image = '<img title="MySpace" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/myspace.png">';
372
        $link  = '<a title="MySpace" id="Smallworld_socialnetwork" target="_blank" href="http://www.myspace.com/' . $name . '">';
373
    }
374 View Code Duplication
    if (7 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
375
        $image = '<img title="Xoops" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/xoops.png">';
376
        $link  = '<a title="Xoops" id="Smallworld_socialnetwork" target="_blank" href="https://xoops.org/modules/profile/userinfo.php?uid=' . $name . '">';
377
    }
378 View Code Duplication
    if (8 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
379
        $image = '<img title="Yahoo Messenger" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/yahoo.png">';
380
        $link  = '<a title="Yahoo Messenger" id="Smallworld_socialnetwork" target="_blank" href="ymsgr:sendim?' . $name . '">';
381
    }
382 View Code Duplication
    if (9 == $num) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
383
        $image = '<img title="Youtube" id="Smallworld_socialnetworkimg" src="' . XOOPS_URL . '/modules/smallworld/assets/images/socialnetworkicons/youtube.png">';
384
        $link  = '<a title="Youtube" id="Smallworld_socialnetwork" target="_blank" href="http://www.youtube.com/user/' . $name . '">';
385
    }
386
    return $image . $link;
0 ignored issues
show
Bug introduced by
The variable $image does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
Bug introduced by
The variable $link does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
387
}
388
389
/**
390
 * @param        $option
391
 * @param string $repmodule
392
 * @return bool|mixed
393
 */
394
function smallworld_GetModuleOption($option, $repmodule = 'smallworld')
395
{
396
    global $xoopsModuleConfig, $xoopsModule;
397
    static $tbloptions = [];
398
    if (is_array($tbloptions) && array_key_exists($option, $tbloptions)) {
399
        return $tbloptions[$option];
400
    }
401
    $retval = false;
402
    if (isset($xoopsModuleConfig) && (is_object($xoopsModule) && $xoopsModule->getVar('dirname') == $repmodule && $xoopsModule->getVar('isactive'))) {
403
        if (isset($xoopsModuleConfig[$option])) {
404
            $retval = $xoopsModuleConfig[$option];
405
        }
406
    } else {
407
        $moduleHandler = xoops_getHandler('module');
408
        $module        = $moduleHandler->getByDirname($repmodule);
409
        $configHandler = xoops_getHandler('config');
410
        if ($module) {
411
            $moduleConfig = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
412
            if (isset($moduleConfig[$option])) {
413
                $retval = $moduleConfig[$option];
414
            }
415
        }
416
    }
417
    $tbloptions[$option] = $retval;
418
    return $retval;
419
}
420
421
/**
422
 * Check image extension and users gender. If image is legal image extension return avatar,
423
 * else return default gender based image
424
 * @param int    $userid
425
 * @param string $image
426
 * @returns string
427
 */
428
function smallworld_getAvatarLink($userid, $image)
429
{
430
    global $xoopsUser, $xoopsDB;
431
    $ext     = pathinfo(strtolower($image), PATHINFO_EXTENSION);
432
    $sql     = 'SELECT gender FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . (int)$userid . "'";
433
    $result  = $xoopsDB->queryF($sql);
434
    $counter = $xoopsDB->getRowsNum($result);
435
    if (0 == $counter) {
436
        $gender = '';
437
    } else {
438
        while ($row = $xoopsDB->fetchArray($result)) {
439
            $gender = $row['gender'];
440
        }
441
    }
442
443
    //$image = ($image == 'blank.gif') ? '' : $image;
444
445
    if (preg_match('/avatars/i', $image)) {
446
        $link = XOOPS_UPLOAD_URL . '/' . $image;
447
    } else {
448
        $link = $image;
449
    }
450
451
    if (in_array($ext, ['jpg', 'bmp', 'gif', 'png', 'jpeg']) || '' == $image || 'blank.gif' == $image) {
452
        if ('1' == $gender) {
0 ignored issues
show
Bug introduced by
The variable $gender does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
453
            $link = XOOPS_URL . '/modules/smallworld/assets/images/ano_woman.png';
454
        }
455
456
        if ('2' == $gender) {
457
            $link = XOOPS_URL . '/modules/smallworld/assets/images/ano_man.png';
458
        }
459
460
        if ('' == $gender) {
461
            $link = XOOPS_URL . '/modules/smallworld/assets/images/genderless.png';
462
        }
463
    }
464
    //echo $link."<br>";
465
    return $link;
466
}
467
468
/**
469
 * @return bool
470
 */
471
function smallworld_checkForXim()
472
{
473
    $filename = XOOPS_ROOT_PATH . '/modules/xim/chat.php';
474
    if (file_exists($filename)) {
475
        return true;
476
    } else {
477
        return false;
478
    }
479
}
480
481
/**
482
 * Get version number of xim if exists
483
 * @return int $version
484
 */
485
function smallworld_XIMversion()
486
{
487
    global $xoopsDB;
488
    $sql    = 'SELECT version FROM ' . $xoopsDB->prefix('modules') . " WHERE dirname = 'xim'";
489
    $result = $xoopsDB->queryF($sql);
490
    if ($xoopsDB->getRowsNum($result) > 0) {
491
        while ($r = $xoopsDB->fetchArray($result)) {
492
            $version = $r['version'];
493
        }
494
    } else {
495
        $version = 0;
496
    }
497
    return $version;
0 ignored issues
show
Bug introduced by
The variable $version does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
498
}
499
500
/*
501
* Input: Message Id,
502
* Return owner of thread (original poster)
503
* Return Integer
504
*/
505
/**
506
 * @param $msg_id_fk
507
 * @return mixed
508
 */
509 View Code Duplication
function Smallworld_getOwnerFromComment($msg_id_fk)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
510
{
511
    global $xoopsDB;
512
    $sql    = 'SELECT uid_fk FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE msg_id = '" . $msg_id_fk . "'";
513
    $result = $xoopsDB->queryF($sql);
514
    while ($r = $xoopsDB->fetchArray($result)) {
515
        $owner = $r['uid_fk'];
516
    }
517
    return $owner;
0 ignored issues
show
Bug introduced by
The variable $owner does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
518
}
519
520
// Get username from userID
521
/**
522
 * @param $userID
523
 * @return mixed
524
 */
525 View Code Duplication
function Smallworld_getName($userID)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
526
{
527
    global $xoopsUser, $xoopsDB;
528
    $sql    = 'SELECT username FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . (int)$userID . "'";
529
    $result = $xoopsDB->queryF($sql);
530
    while ($row = $xoopsDB->fetchArray($result)) {
531
        $name = $row['username'];
532
    }
533
    return $name;
0 ignored issues
show
Bug introduced by
The variable $name does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
534
}
535
536
// Check if user has been taken down for inspection by admin
537
// Userid = user id of user to check
538
// return array
539
/**
540
 * @param $userid
541
 * @return array
542
 */
543
function Smallworld_isInspected($userid)
544
{
545
    global $xoopsDB;
546
    $data   = [];
547
    $sql    = 'SELECT inspect_start, inspect_stop FROM ' . $xoopsDB->prefix('smallworld_admin') . " WHERE userid = '" . $userid . "' AND (inspect_start+inspect_stop) > " . time() . '';
548
    $result = $xoopsDB->queryF($sql);
549
    if ($xoopsDB->getRowsNum($result) > 0) {
550
        while ($row = $xoopsDB->fetchArray($result)) {
551
            $data['inspect']   = 'yes';
552
            $data['totaltime'] = ($row['inspect_start'] + $row['inspect_stop']) - time();
553
        }
554
    } else {
555
        $data['inspect'] = 'no';
556
    }
557
    return $data;
558
}
559
560
// Auto delete all inspects from DB where time has passed
561
// inspect_start + inspect_stop - time() is deleted if negative intval
562
function SmallworldDeleteOldInspects()
563
{
564
    global $xoopsDB;
565
    $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . " SET inspect_start = '', inspect_stop = '' WHERE (inspect_start+inspect_stop) <= " . time() . '';
566
    $result = $xoopsDB->queryF($sql);
0 ignored issues
show
Unused Code introduced by
$result is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
567
}
568
569
// Function to get sum of users in you following array
570
// Used to calculate new message flash in jQuery intval fetch
571
/**
572
 * @return mixed
573
 */
574
function smallworld_getCountFriendMessagesEtc()
575
{
576
    global $xoopsUser, $xoopsDB;
577
    $user      = new \XoopsUser;
0 ignored issues
show
Unused Code introduced by
$user is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
578
    $Wall      = new smallworld\WallUpdates();
579
    $userid    = $xoopsUser->getVar('uid');
580
    $followers = Smallworld_array_flatten($Wall->getFollowers($userid), 0);
581
    if (1 == smallworld_GetModuleOption('usersownpostscount', $repmodule = 'smallworld')) {
582
        array_push($followers, $userid);
583
    }
584
    $ids    = implode(',', $followers);
585
    $sql    = 'SELECT COUNT(*) AS total '
586
              . ' FROM ( '
587
              . ' SELECT com_id , count( * ) as comments FROM '
588
              . $xoopsDB->prefix('smallworld_comments')
589
              . " WHERE uid_fk IN ($ids) Group by com_id "
590
              . ' UNION ALL '
591
              . ' Select msg_id , count( * ) as messages FROM '
592
              . $xoopsDB->prefix('smallworld_messages')
593
              . " WHERE uid_fk IN ($ids) group by msg_id "
594
              . ' ) as d';
595
    $result = $xoopsDB->queryF($sql);
596
    while ($r = $xoopsDB->fetchArray($result)) {
597
        $total = $r['total'];
598
    }
599
    return $total;
0 ignored issues
show
Bug introduced by
The variable $total does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
600
}
601
602
// Function to get sum of users in you following array
603
// Used to calculate new message flash in jQuery intval fetch
604
/**
605
 * @param $id
606
 * @return mixed
607
 */
608
function smallworld_countUsersMessages($id)
609
{
610
    global $xoopsUser, $xoopsDB;
611
    $user   = new XoopsUser;
0 ignored issues
show
Unused Code introduced by
$user is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
612
    $Wall   = new smallworld\WallUpdates();
0 ignored issues
show
Unused Code introduced by
$Wall is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
613
    $sql    = 'SELECT COUNT(*) AS total '
614
              . ' FROM ( '
615
              . ' SELECT com_id , count( * ) AS comments FROM '
616
              . $xoopsDB->prefix('smallworld_comments')
617
              . ' WHERE uid_fk = '
618
              . (int)$id . ' GROUP BY com_id '
619
              . ' UNION ALL '
620
              . ' SELECT msg_id , count( * ) AS messages FROM '
621
              . $xoopsDB->prefix('smallworld_messages')
622
              . ' WHERE uid_fk = '
623
              . (int)$id . 'group BY msg_id '
624
              . ' ) AS d';
625
    $result = $xoopsDB->queryF($sql);
626
    while ($r = $xoopsDB->fetchArray($result)) {
627
        $total = $r['total'];
628
    }
629
    return $total;
0 ignored issues
show
Bug introduced by
The variable $total does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
630
}
631
632
// Get the three newest members to array
633
/**
634
 * @return array
635
 */
636
function smallworld_Stats_newest()
637
{
638
    global $xoopsDB, $xoopsUser;
639
    $nu     = [];
640
    $sql    = 'SELECT * FROM ' . $xoopsDB->prefix('smallworld_user') . ' ORDER BY regdate DESC LIMIT 3';
641
    $result = $xoopsDB->queryF($sql);
642
    if ($xoopsDB->getRowsNum($result) > 0) {
643
        $i = 0;
644
        while ($r = $xoopsDB->fetchArray($result)) {
645
            $nu[$i]['userid']         = $r['userid'];
646
            $nu[$i]['username']       = $r['username'];
647
            $nu[$i]['regdate']        = date('d-m-Y', $r['regdate']);
648
            $nu[$i]['username_link']  = "<a href = '" . XOOPS_URL . '/modules/smallworld/userprofile.php?username=' . $r['username'] . "'>";
649
            $nu[$i]['username_link']  .= $r['username'] . ' (' . $r['realname'] . ') [' . $nu[$i]['regdate'] . '] </a>';
650
            $nu[$i]['userimage']      = $r['userimage'];
651
            $nu[$i]['userimage_link'] = smallworld_getAvatarLink($r['userid'], Smallworld_Gravatar($r['userid']));
652
            ++$i;
653
        }
654
    }
655
    return $nu;
656
}
657
658
//Avatar Image
659
/**
660
 * @param $uid
661
 * @return string
662
 */
663 View Code Duplication
function Smallworld_Gravatar($uid)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
664
{
665
    global $xoopsUser, $xoopsDB;
666
    $image  = '';
667
    $sql    = 'SELECT userimage FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $uid . "'";
668
    $result = $xoopsDB->queryF($sql);
669
    while ($r = $xoopsDB->fetchArray($result)) {
670
        $image = $r['userimage'];
671
    }
672
673
    $image = ('' == $image || 'blank.gif' === $image) ? smallworld_getAvatarLink($uid, $image) : $image;
674
675
    $type = [
676
        1 => 'jpg',
677
        2 => 'jpeg',
678
        3 => 'png',
679
        4 => 'gif'
680
    ];
681
682
    $ext = explode('.', $image);
683
684
    if (@!in_array(strtolower($ext[1]), $type) || '' == $image) {
685
        $avatar = '';
686
    } else {
687
        $avatar = $image;
688
    }
689
    return $avatar;
690
}
691
692
// find user with most posted messages
693
/**
694
 * @return array
695
 */
696
function Smallworld_mostactiveusers_allround()
697
{
698
    global $xoopsDB, $xoopsUser;
699
    $msg     = [];
700
    $sql     = 'SELECT uid_fk, COUNT( * ) as cnt ';
701
    $sql     .= 'FROM ( ';
702
    $sql     .= 'SELECT uid_fk ';
703
    $sql     .= 'FROM ' . $xoopsDB->prefix('smallworld_messages') . ' ';
704
    $sql     .= 'UNION ALL SELECT uid_fk ';
705
    $sql     .= 'FROM ' . $xoopsDB->prefix('smallworld_comments') . ' ';
706
    $sql     .= ') AS u ';
707
    $sql     .= 'GROUP BY uid_fk ';
708
    $sql     .= 'ORDER BY count( * ) DESC limit 3';
709
    $result  = $xoopsDB->queryF($sql);
710
    $counter = $xoopsDB->getRowsNum($result);
711
    if ($counter < 1) {
712
    } else {
713
        $counter = 1;
714
        while ($row = $xoopsDB->fetchArray($result)) {
715
            $msg[$counter]['counter']       = $counter;
716
            $msg[$counter]['img']           = smallworld_getAvatarLink($row['uid_fk'], Smallworld_Gravatar($row['uid_fk']));
717
            $msg[$counter]['msgs']          = _SMALLWORLD_TOTALPOSTS . ' : ' . $row['cnt'];
718
            $msg[$counter]['cnt']           = $row['cnt'];
719
            $msg[$counter]['username']      = $xoopsUser->getUnameFromId($row['uid_fk']);
720
            $msg[$counter]['username_link'] = "<a href = '" . XOOPS_URL . '/modules/smallworld/userprofile.php?username=' . $msg[$counter]['username'] . "'>";
721
            $msg[$counter]['username_link'] .= $msg[$counter]['username'] . ' (' . $msg[$counter]['msgs'] . ')</a>';
722
            ++$counter;
723
        }
724
    }
725
    return $msg;
726
}
727
728
// Find worst rated users overall
729
/**
730
 * @return array
731
 */
732 View Code Duplication
function Smallworld_worstratedusers()
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
733
{
734
    global $xoopsUser, $xoopsDB;
735
    $array   = [];
736
    $counter = 1;
737
    $sql     = 'SELECT owner, (';
738
    $sql     .= 'sum( up ) - sum( down )';
739
    $sql     .= ') AS total';
740
    $sql     .= ' FROM ' . $xoopsDB->prefix('smallworld_vote') . '';
741
    $sql     .= ' GROUP BY owner ORDER by total ASC LIMIT 5';
742
    $result  = $xoopsDB->queryF($sql);
743
    while ($row = $xoopsDB->fetchArray($result)) {
744
        $array[$counter]['counter']   = $counter;
745
        $array[$counter]['img']       = smallworld_getAvatarLink($row['owner'], Smallworld_Gravatar($row['owner']));
746
        $array[$counter]['user']      = $xoopsUser->getUnameFromId($row['owner']);
747
        $array[$counter]['rating']    = $row['total'];
748
        $array[$counter]['user_link'] = "<a href = '" . XOOPS_URL . '/modules/smallworld/userprofile.php?username=' . $array[$counter]['user'] . "'>";
749
        $array[$counter]['user_link'] .= $array[$counter]['user'] . ' (' . $array[$counter]['rating'] . ')</a>';
750
        ++$counter;
751
    }
752
    return $array;
753
}
754
755
// Find best rated users overall
756
/**
757
 * @return array
758
 */
759 View Code Duplication
function Smallworld_topratedusers()
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
760
{
761
    global $xoopsUser, $xoopsDB;
762
    $array   = [];
763
    $counter = 1;
764
    $sql     = 'SELECT owner, (';
765
    $sql     .= 'sum( up ) - sum( down )';
766
    $sql     .= ') AS total';
767
    $sql     .= ' FROM ' . $xoopsDB->prefix('smallworld_vote') . '';
768
    $sql     .= ' GROUP BY owner ORDER by total DESC LIMIT 5';
769
    $result  = $xoopsDB->queryF($sql);
770
    while ($row = $xoopsDB->fetchArray($result)) {
771
        $array[$counter]['counter']   = $counter;
772
        $array[$counter]['img']       = smallworld_getAvatarLink($row['owner'], Smallworld_Gravatar($row['owner']));
773
        $array[$counter]['user']      = $xoopsUser->getUnameFromId($row['owner']);
774
        $array[$counter]['rating']    = $row['total'];
775
        $array[$counter]['user_link'] = "<a href = '" . XOOPS_URL . '/modules/smallworld/userprofile.php?username=' . $array[$counter]['user'] . "'>";
776
        $array[$counter]['user_link'] .= $array[$counter]['user'] . ' (' . $array[$counter]['rating'] . ')</a>';
777
        ++$counter;
778
    }
779
    return $array;
780
}
781
782
/**
783
 * @return array
784
 */
785
function smallworld_nextBirthdays()
786
{
787
    global $xoopsDB, $xoopsUser;
788
    $now     = date('d-m');
0 ignored issues
show
Unused Code introduced by
$now is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
789
    $res     = [];
790
    $sql     = 'SELECT userid, username, userimage, realname, birthday, CURDATE(),'
791
               . ' DATE_FORMAT(birthday, "%d / %m") AS daymon , '
792
               . ' (YEAR(CURDATE())-YEAR(birthday))'
793
               . ' - (RIGHT(CURDATE(),5)<RIGHT(birthday,5))'
794
               . ' AS age_now'
795
               . ' FROM '
796
               . $xoopsDB->prefix('smallworld_user')
797
               . ' WHERE right(birthday,5) = right(CURDATE(),5)'
798
               . ' ORDER BY MONTH( birthday ) , DAY( birthday ) '
799
               . ' LIMIT 10 ';
800
    $result  = $xoopsDB->queryF($sql);
801
    $counter = $xoopsDB->getRowsNum($result);
802
    $i       = 0;
803
    while ($r = $xoopsDB->fetchArray($result)) {
804
        $res[$i]['amount']        = $counter;
805
        $res[$i]['userid']        = $r['userid'];
806
        $res[$i]['userimage']     = smallworld_getAvatarLink($r['userid'], Smallworld_Gravatar($r['userid']));
807
        $res[$i]['birthday']      = $r['daymon'];
808
        $res[$i]['agenow']        = $r['age_now'];
809
        $res[$i]['username']      = $xoopsUser->getUnameFromId($r['userid']);
810
        $res[$i]['username_link'] = "<a href = '" . XOOPS_URL . '/modules/smallworld/userprofile.php?username=' . $res[$i]['username'] . "'>";
811
        $res[$i]['username_link'] .= $res[$i]['username'] . ' (' . $r['daymon'] . ') ' . $r['age_now'] . ' ' . _SMALLWORLD_BDAY_YEARS;
812
        $res[$i]['username_link'] .= '</a>';
813
        ++$i;
814
    }
815
    return $res;
816
}
817
818
/*
819
 * Return date format (YYYY-MM-DD) for MySql
820
 * @param date $stringDate
821
 * $returns date
822
*/
823
/**
824
 * @param $stringDate
825
 * @return string
826
 */
827 View Code Duplication
function Smallworld_euroToUsDate($stringDate)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
828
{
829
    if (0 != $stringDate || '' != $stringDate) {
830
        $theData = explode('-', trim($stringDate));
831
        $ret     = $theData[2] . '-' . $theData[1] . '-' . $theData[0];
832
        return $ret;
833
    } else {
834
        return '1900-01-01';
835
    }
836
}
837
838
/*
839
 * Return date format (DD-MM-YYYY) for display
840
 * @param date $stringDate
841
 * $returns date
842
*/
843
/**
844
 * @param $stringDate
845
 * @return string
846
 */
847 View Code Duplication
function Smallworld_UsToEuroDate($stringDate)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
848
{
849
    if (0 != $stringDate || '' != $stringDate) {
850
        $theData = explode('-', trim($stringDate));
851
        $ret     = $theData[2] . '-' . $theData[1] . '-' . $theData[0];
852
        return $ret;
853
    } else {
854
        return '01-01-1900';
855
    }
856
}
857
858
/**
859
 * @return array
860
 */
861
function smallworld_sp()
862
{
863
    $sp               = [];
864
    $sp[0]['spimage'] = "<img id = 'smallworld_img_sp' src = '" . XOOPS_URL . "/modules/smallworld/assets/images/sp.png' height='30px' width='30px' >";
865
    return $sp;
866
}
867
868
//Check privacy settings in permapage
869
/**
870
 * @param $id
871
 * @return mixed
872
 */
873 View Code Duplication
function smallworldCheckPriv($id)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
874
{
875
    global $xoopsDB;
876
    $public = 'SELECT priv FROM ' . $xoopsDB->prefix('smallworld_messages') . ' WHERE msg_id = ' . $id . '';
877
    $result = $xoopsDB->queryF($public);
878
    while ($row = $xoopsDB->fetchArray($result)) {
879
        $priv = $row['priv'];
880
    }
881
    return $priv;
0 ignored issues
show
Bug introduced by
The variable $priv does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
882
}
883
884
// Function to calculate remaining seconds until user's birthday
885
// Input $d : date('Y-m-d') format
886
// return seconds until date at midnight, or
887
// return 0 if date ('Y-m-d') is equal to today
888
/**
889
 * @param $d
890
 * @return bool|int|string
891
 */
892
function smallworldNextBDaySecs($d)
893
{
894
    $olddate   = substr($d, 4);
895
    $exactdate = date('Y') . '' . $olddate;
896
    $newdate   = date('Y') . '' . $olddate . ' 00:00:00';
897
    $nextyear  = date('Y') + 1 . '' . $olddate . ' 00:00:00';
898
    if ($exactdate != date('Y-m-d')) {
899
        if ($newdate > date('Y-m-d H:i:s')) {
900
            $start_ts = strtotime($newdate);
901
            $end_ts   = strtotime(date('Y-m-d H:i:s'));
902
            $diff     = $end_ts - $start_ts;
903
            $n        = round($diff);
904
            $return   = substr($n, 1);
905
            return $return;
906
        } else {
907
            $start_ts = strtotime($nextyear);
908
            $end_ts   = strtotime(date('Y-m-d H:i:s'));
909
            $diff     = $end_ts - $start_ts;
910
            $n        = round($diff);
911
            $return   = substr($n, 1);
912
            return $return;
913
        }
914
    } else {
915
        return 0;
916
    }
917
}
918
919
//Function to get value from xoopsConfig array
920
/**
921
 * @param $key
922
 * @param $array
923
 * @return int
924
 */
925
function smallworldGetValfromArray($key, $array)
926
{
927
    $ar  = smallworld_GetModuleOption($array, $repmodule = 'smallworld');
928
    $ret = 0;
0 ignored issues
show
Unused Code introduced by
$ret is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
929
    if (in_array($key, $ar, true)) {
930
        $ret = 1;
931
        return $ret;
932
    } else {
933
        return 0;
934
    }
935
}
936
937
//Function to resize images proportionally
938
// Using imagesize($imageurl) returns $img[0], $img[1]
939
// Target = new max height or width in px
940
/**
941
 * @param $width
942
 * @param $height
943
 * @param $target
944
 * @return string
945
 */
946
function smallworld_imageResize($width, $height, $target)
947
{
948
    //takes the larger size of the width and height and applies the
949
    //formula accordingly...this is so this script will work
950
    //dynamically with any size image
951
    if ($width > $height) {
952
        $percentage = ($target / $width);
953
    } else {
954
        $percentage = ($target / $height);
955
    }
956
    //gets the new value and applies the percentage, then rounds the value
957
    $width  = round($width * $percentage);
958
    $height = round($height * $percentage);
959
    //returns the new sizes in html image tag format...this is so you
960
    //can plug this function inside an image tag and just get the
961
962
    return "width=\"$width\" height=\"$height\"";
963
}
964
965
/**
966
 * Fetch image width and height
967
 * will attempt to use the getimagesiz method first, then curl
968
 * @param int $w
969
 * @param int $h
970
 * @param url $url
971
 * @returns array
972
 */
973
function smallworld_getImageSize($w, $h, $url)
974
{
975
    $bn = basename($url);
976
    if ('blank.gif' !== $bn
977
        || 'blank.png' !== $bn
978
        || 'blank.jpg' !== $bn
979
        || 'image_missing.png' !== $bn) {
980
        if (ini_get('allow_url_fopen')) {
981
            $imagesize = getimagesize($url);
982
        } else {
983
            $imagesize['0'] = $w;
0 ignored issues
show
Coding Style Comprehensibility introduced by
$imagesize was never initialized. Although not strictly required by PHP, it is generally a good practice to add $imagesize = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
984
            $imagesize['1'] = $h;
985
        }
986
987
        if (!ini_get('allow_url_fopen')) {
988
            if (function_exists('curl_init')) {
989
                $ch = curl_init();
990
                curl_setopt($ch, CURLOPT_URL, $url);
991
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
992
                $result         = curl_exec($ch);
993
                $img            = imagecreatefromstring($result);
994
                $imagesize['0'] = imagesx($img);
995
                $imagesize['1'] = imagesy($img);
996
            } else {
997
                $imagesize['0'] = $w;
998
                $imagesize['1'] = $h;
999
            }
1000
        }
1001
        return $imagesize;
1002
    } else {
1003
        return [0 => '0', 1 => '0'];
1004
    }
1005
}
1006
1007
/**
1008
 * Check weather requests are set or not
1009
 * If not return '' else return false
1010
 * @param string $req
1011
 * @returns string or void
1012
 */
1013
1014
function smallworld_isset($req)
1015
{
1016
    if (isset($req) || !empty($req)) {
1017
        return $req;
1018
    } else {
1019
        return '';
1020
    }
1021
}
1022
1023
/**
1024
 * @do db query for images upload last 5 minutes by spec. userid and return random
1025
 * @param int $userid
1026
 * @returns string
1027
 */
1028 View Code Duplication
function smallworld_getRndImg($userid)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
Documentation introduced by
The return type could not be reliably inferred; please add a @return annotation.

Our type inference engine in quite powerful, but sometimes the code does not provide enough clues to go by. In these cases we request you to add a @return annotation as described here.

Loading history...
1029
{
1030
    global $xoopsDB;
1031
    $sql    = 'SELECT imgname FROM ' . $xoopsDB->prefix('smallworld_images') . ' WHERE userid = ' . $userid . ' AND time BETWEEN UNIX_TIMESTAMP( ) - 3000 AND UNIX_TIMESTAMP() ORDER BY rand() LIMIT 1';
1032
    $result = $xoopsDB->queryF($sql);
1033
    while ($r = $xoopsDB->fetchArray($result)) {
1034
        $img = $r['imgname'];
1035
    }
1036
    if (!empty($img)) {
1037
        return $img;
1038
    } else {
1039
        return false;
1040
    }
1041
}
1042
1043
/**
1044
 * @Get url of smallworld
1045
 * @returns string
1046
 */
1047
function smallworld_getHostRequest()
1048
{
1049
    $protocol   = false === stripos($_SERVER['SERVER_PROTOCOL'], 'https') ? 'http' : 'https';
1050
    $host       = $_SERVER['HTTP_HOST'];
1051
    $script     = $_SERVER['SCRIPT_NAME'];
0 ignored issues
show
Unused Code introduced by
$script is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1052
    $params     = $_SERVER['QUERY_STRING'];
0 ignored issues
show
Unused Code introduced by
$params is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1053
    $currentUrl = $protocol . '://' . $host;
1054
    return $currentUrl;
1055
}
1056
1057
/**
1058
 * @Get htmlentities
1059
 * @param $text
1060
 * @return translated string to utf-8
0 ignored issues
show
Documentation introduced by
Should the return type not be string?

This check compares the return type specified in the @return annotation of a function or method doc comment with the types returned by the function and raises an issue if they mismatch.

Loading history...
1061
 */
1062
function smallworld_decodeEntities($text)
1063
{
1064
    $text = html_entity_decode($text, ENT_QUOTES, 'ISO-8859-1'); #NOTE: UTF-8 does not work!
1065
    $text = preg_replace('/&#(\d+);/me', "chr(\\1)", $text); #decimal notation
1066
    $text = preg_replace('/&#x([a-f0-9]+);/mei', "chr(0x\\1)", $text);  #hex notation
1067
    return $text;
1068
}
1069
1070
/**
1071
 * @Get string and shorten so contains only ? chars
1072
 * @param $text
1073
 * @param $chars
1074
 * @return string
1075
 */
1076
function smallworld_shortenText($text, $chars)
1077
{
1078
    $text .= ' ';
1079
    $text = substr($text, 0, $chars);
1080
    $text = substr($text, 0, strrpos($text, ' '));
1081
    $text .= '...';
1082
    return $text;
1083
}
1084
1085
/**
1086
 * @Get languagefile if constants are not defined
1087
 * @param $def
1088
 * @param $file
1089
 * return file include
1090
 */
1091
function smallworld_isDefinedLanguage($def, $file)
1092
{
1093
    global $xoopsConfig;
1094
    if (!defined($def)) {
1095
        // language files (main.php)
1096
        if (file_exists(XOOPS_ROOT_PATH . '/modules/smallworld/language/' . $xoopsConfig['language'] . '/' . $file)) {
1097
            require_once XOOPS_ROOT_PATH . '/modules/smallworld/language/' . $xoopsConfig['language'] . '/' . $file;
1098
        } else {
1099
            // fallback english
1100
            require_once XOOPS_ROOT_PATH . '/modules/smallworld/language/english/' . '/' . $file;
1101
        }
1102
    }
1103
}
1104
1105
/**
1106
 * @Check if smallworld is for private or public access
1107
 * return value for config
1108
 */
1109
function smallworld_checkPrivateOrPublic()
1110
{
1111
    global $xoopsUser;
1112
    $opt = [];
1113
    $set = smallworld_GetModuleOption('smallworldprivorpub', $repmodule = 'smallworld');
1114
    if (0 != $set) {
1115
        $opt['access'] = 1;
1116
    } else {
1117
        $opt['access'] = 0;
1118
    }
1119
    if ($xoopsUser) {
1120
        $id               = $xoopsUser->getVar('uid');
1121
        $user             = new \XoopsUser($id);
0 ignored issues
show
Unused Code introduced by
$user is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1122
        $check            = new smallworld\SmallWorldUser;
1123
        $profile          = $check->CheckIfProfile($id);
1124
        $opt['xoopsuser'] = 1;
1125
        if (0 != $profile) {
1126
            $opt['smallworlduser'] = 1;
1127
        } else {
1128
            $opt['smallworlduser'] = 0;
1129
        }
1130
    } else {
1131
        $opt['xoopsuser']      = 0;
1132
        $opt['smallworlduser'] = 0;
1133
    }
1134
    return $opt;
1135
}
1136
1137
/**
1138
 * @return array of groups
1139
 * return array
1140
 *
1141
 */
1142
function smallworld_xv_getGroupd()
1143
{
1144
    $db     = XoopsDatabaseFactory::getDatabaseConnection();
1145
    $myts   = MyTextSanitizer::getInstance();
0 ignored issues
show
Unused Code introduced by
$myts is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1146
    $sql    = 'SELECT userid, username FROM ' . $db->prefix('smallworld_user') . ' ORDER BY userid';
1147
    $result = $db->queryF($sql);
1148
    $num    = $db->getRowsNum($result);
1149
    if (0 == $num) {
1150
        $ndata = [0 => _MI_SMALLWORLD_ALL];
1151
    } else {
1152
        while ($r = $db->fetchArray($result)) {
1153
            $data[$r['userid']] = $r['username'];
0 ignored issues
show
Coding Style Comprehensibility introduced by
$data was never initialized. Although not strictly required by PHP, it is generally a good practice to add $data = array(); before regardless.

Adding an explicit array definition is generally preferable to implicit array definition as it guarantees a stable state of the code.

Let’s take a look at an example:

foreach ($collection as $item) {
    $myArray['foo'] = $item->getFoo();

    if ($item->hasBar()) {
        $myArray['bar'] = $item->getBar();
    }

    // do something with $myArray
}

As you can see in this example, the array $myArray is initialized the first time when the foreach loop is entered. You can also see that the value of the bar key is only written conditionally; thus, its value might result from a previous iteration.

This might or might not be intended. To make your intention clear, your code more readible and to avoid accidental bugs, we recommend to add an explicit initialization $myArray = array() either outside or inside the foreach loop.

Loading history...
1154
        }
1155
        $ndata = array_merge([0 => _MI_SMALLWORLD_ALL], $data);
0 ignored issues
show
Bug introduced by
The variable $data does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
1156
    }
1157
    return $ndata;
1158
}
1159
1160
/**
1161
 * Set javascript vars to theme using various values
1162
 * Return void
1163
 */
1164
function smallworld_SetCoreScript()
1165
{
1166
    global $xoopsUser, $xoopsConfig, $xoTheme;
1167
1168
    $moduleHandler = xoops_getHandler('module');
1169
    $module        = $moduleHandler->getByDirname('smallworld');
1170
    $configHandler = xoops_getHandler('config');
1171
    if ($module) {
1172
        $moduleConfig = $configHandler->getConfigsByCat(0, $module->getVar('mid'));
1173
    }
1174
1175
    // IF logged in define xoops / smallworld user id
1176
    $myid = $xoopsUser ? $xoopsUser->getVar('uid') : 0;
1177
1178
    // Check if option is et to allow public reading
1179
    $pub    = smallworld_checkPrivateOrPublic();
1180
    $access = $pub['access'];
0 ignored issues
show
Unused Code introduced by
$access is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1181
1182
    // GET various variables from language folder
1183 View Code Duplication
    if (file_exists(XOOPS_ROOT_PATH . '/modules/smallworld/language/' . $xoopsConfig['language'] . '/js/variables.js')) {
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1184
        $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/language/' . $xoopsConfig['language'] . '/js/variables.js');
1185
    } else {
1186
        $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/language/english/js/variables.js');
1187
    }
1188
1189
    // Check if USER is smallworld-registered user
1190
    $chkUser = new smallworld\SmallWorldUser;
1191
    $ChkProf = $xoopsUser ? $chkUser->CheckIfProfile($myid) : 0;
1192
1193
    // Check if there are requests pending
1194
    $count_invit = $xoopsUser ? count($chkUser->getRequests($myid)) : 0;
1195
1196
    // Get module config for validation and place in javascript
1197
    $validate = $moduleConfig['validationstrenght'];
0 ignored issues
show
Bug introduced by
The variable $moduleConfig does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
1198
1199
    // Check to see if smallworld should use username links to point to default xoops or smallworld
1200
    $takeoverlinks   = $moduleConfig['takeoveruserlinks'];
1201
    $fieldstoshow    = array_flip(smallworld_GetModuleOption('smallworldusethesefields', $repmodule = 'smallworld'));
0 ignored issues
show
Unused Code introduced by
$fieldstoshow is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1202
    $useverification = smallworld_GetModuleOption('smallworldmandatoryfields', $repmodule = 'smallworld');
1203
    $smallworldUV    = implode(',', $useverification);
1204
1205
    // Use googlemaps ?
1206
    $googlemaps = $moduleConfig['smallworldUseGoogleMaps'];
1207
1208
    // Get users messages count based on users followerArray
1209
    $getUserMsgNum = $xoopsUser ? smallworld_getCountFriendMessagesEtc() : 0;
1210
1211
    // Check if request url is with www or without
1212
    $urltest   = smallworld_getHostRequest();
1213
    $xoops_url = XOOPS_URL;
1214
    if (false === strpos($urltest, 'www.')) {
1215
        $xoops_url = str_replace('www.', '', $xoops_url);
1216
    }
1217
1218
    // Set javascript vars but only if not already defined.
1219
    // Check prevents multible loads
1220
    $script = 'var Smallworld_myID;' . "\n";
1221
    $script .= "if (typeof Smallworld_myID === 'undefined') {" . "\n";
1222
    $script .= "var smallworld_url = '" . $xoops_url . '/modules/smallworld/' . "';\n";
1223
    $script .= "var smallworld_uploaddir = '" . $xoops_url . '/uploads/avatars/' . "';\n";
1224
    $script .= 'var smallworld_urlReferer = document.referrer;' . "\n";
1225
    $script .= "var xoops_smallworld = jQuery.noConflict();\n";
1226
    $script .= 'var Smallworld_myID = ' . $myid . ";\n";
1227
    $script .= 'var Smallworld_userHasProfile = ' . $ChkProf . ";\n";
1228
    $script .= 'var smallworldTakeOverLinks = ' . $takeoverlinks . ";\n";
1229
    $script .= 'var Smallworld_geocomplete = ' . $googlemaps . ";\n";
1230
    $script .= "var smallworldVerString = '" . $smallworldUV . "';\n";
1231
    $script .= "var smallworlduseverification = new Array();\n";
1232
    $script .= "smallworlduseverification = smallworldVerString.split(',');\n";
1233
    $script .= 'var Smallworld_hasmessages = ' . $count_invit . ";\n";
1234
    $script .= 'var smallworldvalidationstrenght = ' . $validate . ";\n";
1235
    $script .= 'var smallworld_getFriendsMsgComCount = ' . $getUserMsgNum . ";\n";
1236
    //$script .= "var $ = jQuery();\n";
1237
    $script .= '}' . "\n";
1238
    $xoTheme->addScript('', '', $script);
1239
1240
    smallworld_includeScripts();
1241
}
1242
1243
/**
1244
 * Include script files based on $page
1245
 * @return void
1246
 */
1247
1248
function smallworld_includeScripts()
1249
{
1250
    global $xoopsUser, $xoopsConfig, $xoTheme;
1251
    $page = basename($_SERVER['PHP_SELF'], '.php');
1252
    switch ($page) {
1253
        case 'register':
1254
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1255
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.validate.js');
1256
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.validation.functions.js');
1257
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.stepy.js');
1258
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1259
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/leaflet.js');
1260
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/osm_birth.js');
1261
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/osm_now.js');
1262
			$xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/leaflet.css');
1263
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1264
            break;
1265
1266 View Code Duplication
        case 'publicindex':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1267
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1268
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1269
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1270
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/ajaxupload.3.5.js');
1271
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.avatar_helper.js');
1272
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.bookmark.js');
1273
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1274
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1275
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1276
            break;
1277
1278 View Code Duplication
        case 'permalink':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1279
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1280
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1281
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1282
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1283
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.innerfade.js');
1284
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1285
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.bookmark.js');
1286
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1287
            break;
1288
1289
        case 'index':
1290
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1291
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1292
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1293
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/ajaxupload.3.5.js');
1294
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.avatar_helper.js');
1295
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.bookmark.js');
1296
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1297
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1298
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/tag-it.js');
1299
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1300
            break;
1301
1302
        case 'img_upload':
1303
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/uploader/bootstrap.min.css');
1304
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/uploader/style.css');
1305
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/uploader/bootstrap-responsive.min.css');
1306
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/uploader/bootstrap-image-gallery.min.css');
1307
1308
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/vendor/jquery.ui.widget.js');
1309
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/uploader/tmpl.js');
1310
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/uploader/load-image.js');
1311
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/uploader/canvas-to-blob.js');
1312
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/uploader/bootstrap.js');
1313
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/uploader/bootstrap-image-gallery.js');
1314
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.iframe-transport.js');
1315
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.fileupload.js');
1316
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.fileupload-fp.js');
1317
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.fileupload-ui.js');
1318
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/main.js');
1319
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1320
            break;
1321
1322 View Code Duplication
        case 'galleryshow':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1323
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/galleriffic-5.css');
1324
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.galleriffic.js');
1325
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.history.js');
1326
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.opacityrollover.js');
1327
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/gallery_mod.js');
1328
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.innerfade.js');
1329
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1330
            break;
1331
1332 View Code Duplication
        case 'friends':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1333
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/apprise-1.5.full.js');
1334
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/jquery.fileupload-ui.css');
1335
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1336
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1337
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1338
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/ajaxupload.3.5.js');
1339
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.avatar_helper.js');
1340
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.innerfade.js');
1341
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1342
            //$xoTheme->addStylesheet(XOOPS_URL.'/modules/smallworld/assets/css/colorbox.css');
1343
            break;
1344
1345
        case 'editprofile':
1346
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1347
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.validate.js');
1348
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.validation.functions.js');
1349
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.stepy.js');
1350
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1351
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/leaflet.js');
1352
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/osm_birth.js');
1353
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/osm_now.js');
1354
			$xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/leaflet.css');
1355
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1356
            break;
1357
1358 View Code Duplication
        case 'smallworldshare':
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated across your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1359
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1360
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1361
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.innerfade.js');
1362
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.bookmark.js');
1363
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1364
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1365
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/js/jquery.colorbox.js');
1366
            break;
1367
1368
        case 'userprofile':
1369
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/apprise-1.5.full.js');
1370
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/jquery.fileupload-ui.css');
1371
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/oembed.css');
1372
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.oembed.js');
1373
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/wall.js');
1374
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/ajaxupload.3.5.js');
1375
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.avatar_helper.js');
1376
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.bookmark.js');
1377
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.colorbox.js');
1378
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.elastic.source.js');
1379
            $xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/jquery.countdown.js');
1380
			$xoTheme->addScript(XOOPS_URL . '/modules/smallworld/assets/js/leaflet.js');
1381
			$xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/leaflet.css');
1382
            $xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1383
            //$xoTheme->addStylesheet(XOOPS_URL . '/modules/smallworld/assets/css/smallworld.css');
1384
            break;
1385
    }
1386
}
1387
1388
/**
1389
 * Check if permission is set for userid to post publicly
1390
 * @return array
1391
 */
1392
1393
function smallworld_checkUserPubPostPerm()
1394
{
1395
    global $xoopsUser, $xoopsModule;
1396
    $check      = new smallworld\SmallWorldUser;
1397
    $UserPerPub = smallworld_GetModuleOption('smallworldshowPoPubPage');
1398
    $allUsers   = $check->allUsers();
0 ignored issues
show
Unused Code introduced by
$allUsers is not used, you could remove the assignment.

This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently.

$myVar = 'Value';
$higher = false;

if (rand(1, 6) > 3) {
    $higher = true;
} else {
    $higher = false;
}

Both the $myVar assignment in line 1 and the $higher assignment in line 2 are dead. The first because $myVar is never used and the second because $higher is always overwritten for every possible time line.

Loading history...
1399
    if (0 != $UserPerPub[0]) {
1400
        $pub = $UserPerPub;
1401
    } else {
1402
        $pub = $check->allUsers();
1403
    }
1404
    return $pub;
1405
}
1406
1407
/**
1408
 * Change @username to urls
1409
 * @param  string|null $status_text
1410
 * @return string $status_text
1411
 */
1412
function linkify_twitter_status($status_text)
1413
{
1414
    // linkify twitter users
1415
    //$keywords = preg_split("/[\s,]+/", "hypertext language, programming");
1416
    $status_text = preg_replace('/(^|\s)@(\w+)/', '\1<a href="' . XOOPS_URL . '/modules/smallworld/userprofile.php?username=\2">' . '@\2</a> ', $status_text);
1417
1418
    return $status_text;
1419
}
1420
1421
/**
1422
 * Extract users from @tags
1423
 * @param $name
1424
 * @return array @users
1425
 */
1426 View Code Duplication
function smallworld_getUidFromName($name)
0 ignored issues
show
Duplication introduced by
This function seems to be duplicated in your project.

Duplicated code is one of the most pungent code smells. If you need to duplicate the same code in three or more different places, we strongly encourage you to look into extracting the code into a single class or operation.

You can also find more detailed suggestions in the “Code” section of your repository.

Loading history...
1427
{
1428
    global $xoopsDB;
1429
    $sql    = 'SELECT userid FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE username = '" . $name . "'";
1430
    $result = $xoopsDB->queryF($sql);
1431
    while ($r = $xoopsDB->fetchArray($result)) {
1432
        $id = $r['userid'];
1433
    }
1434
    return $id;
0 ignored issues
show
Bug introduced by
The variable $id does not seem to be defined for all execution paths leading up to this point.

If you define a variable conditionally, it can happen that it is not defined for all execution paths.

Let’s take a look at an example:

function myFunction($a) {
    switch ($a) {
        case 'foo':
            $x = 1;
            break;

        case 'bar':
            $x = 2;
            break;
    }

    // $x is potentially undefined here.
    echo $x;
}

In the above example, the variable $x is defined if you pass “foo” or “bar” as argument for $a. However, since the switch statement has no default case statement, if you pass any other value, the variable $x would be undefined.

Available Fixes

  1. Check for existence of the variable explicitly:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        if (isset($x)) { // Make sure it's always set.
            echo $x;
        }
    }
    
  2. Define a default value for the variable:

    function myFunction($a) {
        $x = ''; // Set a default which gets overridden for certain paths.
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
        }
    
        echo $x;
    }
    
  3. Add a value for the missing path:

    function myFunction($a) {
        switch ($a) {
            case 'foo':
                $x = 1;
                break;
    
            case 'bar':
                $x = 2;
                break;
    
            // We add support for the missing case.
            default:
                $x = '';
                break;
        }
    
        echo $x;
    }
    
Loading history...
1435
}
1436
1437
/**
1438
 * Extract users from @tags
1439
 * @param        $txt
1440
 * @param        $sender
1441
 * @param string $permalink
1442
 * @return void @users
1443
 * @throws \phpmailerException
1444
 */
1445
function smallworld_getTagUsers($txt, $sender, $permalink = '')
1446
{
1447
    $dBase = new smallworld\SmallWorldDB;
1448
    $mail  = new smallworld\SmallWorldMail;
1449
    preg_match_all("/@([a-zA-Z0-9]+|\\[[a-zA-Z0-9]+\\])/", $txt, $matches);
1450
    $users = array_unique($matches[1]);
1451
    foreach ($users as $users) {
1452
        $uid    = smallworld_getUidFromName($users);
1453
        $notify = json_decode($dBase->GetSettings($uid), true);
1454
        if (isset($notify['notify'])) {
1455
            if (0 != $notify['notify']) {
1456
                $mail->sendMails($sender, $uid, 'tag', $link = $permalink, [$txt]);
1457
            }
1458
        }
1459
    }
1460
}
1461
1462
/**
1463
 * Function to get count of messages in wall
1464
 * @param int $uid
1465
 * @return int $count
1466
 */
1467
function smallworld_countUserWallMsges($uid)
1468
{
1469
    $db     = XoopsDatabaseFactory::getDatabaseConnection();
1470
    $sql    = 'SELECT message FROM ' . $db->prefix('smallworld_messages') . " WHERE uid_fk='" . $uid . "'";
1471
    $result = $db->queryF($sql);
1472
    $count  = $db->getRowsNum($result);
1473
    return $count;
1474
}
1475