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)) { |
|
|
|
|
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)) { |
|
|
|
|
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(); |
|
|
|
|
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 |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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) { |
|
|
|
|
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; |
|
|
|
|
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) { |
|
|
|
|
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; |
|
|
|
|
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) |
|
|
|
|
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; |
|
|
|
|
518
|
|
|
} |
519
|
|
|
|
520
|
|
|
// Get username from userID |
521
|
|
|
/** |
522
|
|
|
* @param $userID |
523
|
|
|
* @return mixed |
524
|
|
|
*/ |
525
|
|
View Code Duplication |
function Smallworld_getName($userID) |
|
|
|
|
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; |
|
|
|
|
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); |
|
|
|
|
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; |
|
|
|
|
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; |
|
|
|
|
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; |
|
|
|
|
612
|
|
|
$Wall = new smallworld\WallUpdates(); |
|
|
|
|
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; |
|
|
|
|
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) |
|
|
|
|
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() |
|
|
|
|
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() |
|
|
|
|
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'); |
|
|
|
|
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) |
|
|
|
|
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) |
|
|
|
|
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) |
|
|
|
|
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; |
|
|
|
|
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; |
|
|
|
|
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; |
|
|
|
|
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) |
|
|
|
|
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']; |
|
|
|
|
1052
|
|
|
$params = $_SERVER['QUERY_STRING']; |
|
|
|
|
1053
|
|
|
$currentUrl = $protocol . '://' . $host; |
1054
|
|
|
return $currentUrl; |
1055
|
|
|
} |
1056
|
|
|
|
1057
|
|
|
/** |
1058
|
|
|
* @Get htmlentities |
1059
|
|
|
* @param $text |
1060
|
|
|
* @return translated string to utf-8 |
|
|
|
|
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); |
|
|
|
|
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(); |
|
|
|
|
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']; |
|
|
|
|
1154
|
|
|
} |
1155
|
|
|
$ndata = array_merge([0 => _MI_SMALLWORLD_ALL], $data); |
|
|
|
|
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']; |
|
|
|
|
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')) { |
|
|
|
|
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']; |
|
|
|
|
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')); |
|
|
|
|
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
|
|
View Code Duplication |
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': |
|
|
|
|
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': |
|
|
|
|
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
|
|
View Code Duplication |
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': |
|
|
|
|
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': |
|
|
|
|
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
|
|
View Code Duplication |
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': |
|
|
|
|
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(); |
|
|
|
|
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) |
|
|
|
|
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; |
|
|
|
|
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
|
|
|
|
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.