Issues (621)

Security Analysis    not enabled

This project does not seem to handle request data directly as such no vulnerable execution paths were found.

  Cross-Site Scripting
Cross-Site Scripting enables an attacker to inject code into the response of a web-request that is viewed by other users. It can for example be used to bypass access controls, or even to take over other users' accounts.
  File Exposure
File Exposure allows an attacker to gain access to local files that he should not be able to access. These files can for example include database credentials, or other configuration files.
  File Manipulation
File Manipulation enables an attacker to write custom data to files. This potentially leads to injection of arbitrary code on the server.
  Object Injection
Object Injection enables an attacker to inject an object into PHP code, and can lead to arbitrary code execution, file exposure, or file manipulation attacks.
  Code Injection
Code Injection enables an attacker to execute arbitrary code on the server.
  Response Splitting
Response Splitting can be used to send arbitrary responses.
  File Inclusion
File Inclusion enables an attacker to inject custom files into PHP's file loading mechanism, either explicitly passed to include, or for example via PHP's auto-loading mechanism.
  Command Injection
Command Injection enables an attacker to inject a shell command that is execute with the privileges of the web-server. This can be used to expose sensitive data, or gain access of your server.
  SQL Injection
SQL Injection enables an attacker to execute arbitrary SQL code on your database server gaining access to user data, or manipulating user data.
  XPath Injection
XPath Injection enables an attacker to modify the parts of XML document that are read. If that XML document is for example used for authentication, this can lead to further vulnerabilities similar to SQL Injection.
  LDAP Injection
LDAP Injection enables an attacker to inject LDAP statements potentially granting permission to run unauthorized queries, or modify content inside the LDAP tree.
  Header Injection
  Other Vulnerability
This category comprises other attack vectors such as manipulating the PHP runtime, loading custom extensions, freezing the runtime, or similar.
  Regex Injection
Regex Injection enables an attacker to execute arbitrary code in your PHP process.
  XML Injection
XML Injection enables an attacker to read files on your local filesystem including configuration files, or can be abused to freeze your web-server process.
  Variable Injection
Variable Injection enables an attacker to overwrite program variables with custom data, and can lead to further vulnerabilities.
Unfortunately, the security analysis is currently not available for your project. If you are a non-commercial open-source project, please contact support to gain access.

class/WallUpdates.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace XoopsModules\Smallworld;
4
5
/**
6
 * You may not change or alter any portion of this comment or credits
7
 * of supporting developers from this source code or any supporting source code
8
 * which is considered copyrighted (c) material of the original comment or credit authors.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
 */
14
15
/**
16
 * SmallWorld
17
 *
18
 * @package      \XoopsModules\Smallworld
19
 * @license      GNU GPL (https://www.gnu.org/licenses/gpl-2.0.html/)
20
 * @copyright    The XOOPS Project (https://xoops.org)
21
 * @copyright    2011 Culex
22
 * @author       Michael Albertsen (http://culex.dk) <[email protected]>
23
 * @link         https://github.com/XoopsModules25x/smallworld
24
 * @since        1.0
25
 */
26
27
use XoopsModules\Smallworld;
28
use XoopsModules\Smallworld\Constants;
29
30
//include_once $GLOBALS['xoops']->path('include/common.php');
31
// Moderated and fitted from the tutorial by Srinivas Tamada http://9lessons.info
32
33
/**
34
 * Wall Update class
35
 *
36
 * Performs CRUD operations for updating the walldata
37
 *
38
 */
39
class WallUpdates
40
{
41
    /**
42
     * @deprecated - not used
43
     *
44
     * @return array
45
     */
46
    private function getAdminModerators()
47
    {
48
        $data   = [];
49
        $sql    = 'SELECT userid
50
                FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . ' su
51
                LEFT JOIN ' . $GLOBALS['xoopsDB']->prefix('groups_users_link') . ' xu ON su.userid = xu.uid
52
                WHERE xu.uid IN (1)';
53
        $result = $GLOBALS['xoopsDB']->queryF($sql);
54
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
55
            $data[] = $row;
56
        }
57
58
        return $data;
59
    }
60
61
    /**
62
     * @param $last
63
     * @param $uid
64
     * @param $followers
65
     * @return array
66
     */
67
    public function Updates($last, $uid, $followers)
68
    {
69
        $uid       = (int)$uid;
70
        $query     = '';
71
        $hm        = \XoopsModules\Smallworld\Helper::getInstance()->getConfig('msgtoshow');
72
        //$set       = smallworld_checkPrivateOrPublic();
73
        $followers = is_array($followers) ? $followers : [$followers];
74
        $followers = array_unique(smallworld_array_flatten($followers, 0));
75
        //$followers = is_array($followers) ? $followers : [$uid];
76
        $fQuery    = '';
77
        foreach ($followers as $follower) {
78
            if ($last > 0) {
79
                $fQuery .= " OR M.uid_fk=U.userid AND M.uid_fk= '" . $follower . "' and M.msg_id < '" . $last . "'";
80
            } elseif (0 == $last) {
81
                $fQuery .= " OR M.uid_fk=U.userid AND M.uid_fk= '" . $follower . "'";
82
            } elseif ('a' === $last) {
83
                $fQuery .= " OR M.uid_fk=U.userid AND M.uid_fk= '" . $follower . "'";
84
            }
85
        }
86
87
        if (0 == $last) {
88
            $query = 'SELECT M.msg_id, M.uid_fk, M.priv, M.message, M.created, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U  WHERE M.uid_fk=U.userid AND M.uid_fk='" . $uid . "'"
89
                   . $fQuery . ' ORDER BY created DESC LIMIT ' . $hm;
90 View Code Duplication
        } elseif ($last > 0) {
91
            $query = 'SELECT M.msg_id, M.uid_fk, M.priv, M.message, M.created, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U  WHERE M.uid_fk=U.userid AND M.uid_fk='" . $uid . "' AND M.msg_id < '" . $last . "'"
92
                   . $fQuery . ' ORDER BY created DESC LIMIT ' . $hm;
93
        } elseif ('a' === $last) {
94
            $query = 'SELECT M.msg_id, M.uid_fk, M.priv, M.message, M.created, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U  WHERE M.uid_fk=U.userid AND M.uid_fk='" . $uid . "'"
95
                   . $fQuery . ' ORDER BY M.msg_id DESC LIMIT ' . $hm;
96
        } else {
97
            return [];
98
        }
99
100
        $result = $GLOBALS['xoopsDB']->queryF($query);
101
        $data   = [];
102
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
103
            $data[] = $row;
104
        }
105
106
        return $data;
107
    }
108
109
    /**
110
     * Get comments based on msg id
111
     *
112
     * @param int $msg_id
113
     * @return array
114
     */
115 View Code Duplication
    public function Comments($msg_id)
116
    {
117
        $data = []; //init data array
118
        $query  = 'SELECT C.msg_id_fk, C.com_id, C.uid_fk, C.comment, C.created, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_comments') . ' C, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U WHERE C.uid_fk=U.userid AND C.msg_id_fk='" . $msg_id . "' ORDER BY C.com_id ASC ";
119
        $result = $GLOBALS['xoopsDB']->queryF($query);
120
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
121
            $data[] = $row;
122
        }
123
124
        return $data;
125
    }
126
127
    /**
128
     * Get user image based on uid
129
     *
130
     * @deprecated
131
     * @param int $uid
132
     * @return string
133
     */
134
    public function Gravatar($uid)
135
    {
136
        $depMsg = get_class() . __FUNCTION__ . " is deprecated use SwUserHandler::gravatar() instead.";
137 View Code Duplication
        if (isset($GLOBALS['xoopsLogger'])) {
138
            $GLOBALS['xoopsLogger']->addDeprecated($depMsg);
139
        } else {
140
            trigger_error($depMsg, E_USER_WARNING);
141
        }
142
143
        $image  = $avatar = '';
144
        $swUserHandler = \XoopsModules\Smallworld\Helper::getInstance()->getHandler('SwUser');
145
        $criteria = new \Criteria('userimage', (int)$uid);
146
        $criteria->setLimit(1);
147
        $swUserArray = $swUserHandler->getAll($criteria, ['userimage'], false);
148
        if (0 < count($swUserArray)) {
149
            $swUser = array_pop($swUserArray);
150
            $image = $swUser['userimage'];
151
        }
152
        /*
153
        $sql    = 'SELECT userimage FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " WHERE userid = '" . $uid . "'";
154
        $result = $GLOBALS['xoopsDB']->queryF($sql);
155
        while (false !== ($r = $GLOBALS['xoopsDB']->fetchArray($result))) {
156
            $image = $r['userimage'];
157
        }
158
        */
159
        $image = ('' == $image || 'blank.gif' === $image) ? $swUserHandler->getAvatarLink($uid, $image) : $image;
160
161
        $type = [
162
            1 => 'jpg',
163
            2 => 'jpeg',
164
            3 => 'png',
165
            4 => 'gif',
166
        ];
167
168
        $ext    = explode('.', $image);
169 View Code Duplication
        if (array_key_exists(1, $ext) && in_array(mb_strtolower($ext[1]), $type)) {
170
            $avatar = $image;
171
        }
172
173
        return $avatar;
174
    }
175
176
    /**
177
     * Insert update
178
     *
179
     * @param int          $uid
180
     * @param string|array $update
181
     * @param int          $priv
182
     * @return array|bool
0 ignored issues
show
Should the return type not be array|false|null?

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...
183
     */
184
    public function insertUpdate($uid, $update, $priv = 0)
185
    {
186
        $uid    = (int)$uid;
187
        $priv   = (int)$priv;
188
        $update = smallworld_sanitize(htmlentities($update, ENT_QUOTES, 'UTF-8'));
189
        $time   = time();
190
        $query  = 'SELECT msg_id,message FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . " WHERE uid_fk='" . $uid . "' ORDER BY msg_id DESC LIMIT 1";
191
        $result = $GLOBALS['xoopsDB']->queryF($query);
192
        $row    = $GLOBALS['xoopsDB']->fetchArray($result);
193
        if ($update != $row['message']) {
194
            $query    = 'INSERT INTO ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . " (message, uid_fk, priv, created) VALUES ('" . $update . "', '" . $uid . "', '" . $priv . "', '" . $time . "')";
195
            $result   = $GLOBALS['xoopsDB']->queryF($query);
196
            $newquery = 'SELECT M.msg_id, M.uid_fk, M.priv, M.message, M.created, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U WHERE M.uid_fk=U.userid AND M.uid_fk='" . $uid . "' ORDER BY M.msg_id DESC LIMIT 1 ";
197
            $result2  = $GLOBALS['xoopsDB']->queryF($newquery);
198
            while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result2))) {
199
                $data[] = $row;
200
            }
201
            $count = $GLOBALS['xoopsDB']->getRowsNum($result2);
202
            $retVal = false;
203
            if (0 < $count) {
204
                $data = []; // init data array
205
                while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result2))) {
206
                    $data[] = $row;
207
                }
208
                if (!empty($data)) {
209
                    $retVal = $data;
210
                }
211
            }
212
            return $retVal;
213
        }
214
    }
215
216
    /**
217
     * Insert comment into the dB
218
     *
219
     * @param int          $uid
220
     * @param int          $msg_id
221
     * @param string|array $comment
222
     * @return bool|string false on failure
223
     */
224
    public function insertComment($uid, $msg_id, $comment)
225
    {
226
        $data    = []; // init the data array
227
        $comment = smallworld_sanitize(htmlentities($comment, ENT_QUOTES, 'UTF-8'));
228
        $time    = time();
229
        $query   = 'SELECT com_id,comment FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_comments') . " WHERE uid_fk='" . $uid . "' AND msg_id_fk='" . $msg_id . "' ORDER BY com_id DESC LIMIT 1 ";
230
        $result  = $GLOBALS['xoopsDB']->fetchArray($query);
231
        if ($comment != $result['comment']) {
232
            $query    = 'INSERT INTO ' . $GLOBALS['xoopsDB']->prefix('smallworld_comments') . " (comment, uid_fk,msg_id_fk,created) VALUES ('" . $comment . "', '" . $uid . "','" . $msg_id . "', '" . $time . "')";
233
            $result   = $GLOBALS['xoopsDB']->queryF($query);
234
            $newquery = 'SELECT C.com_id, C.uid_fk, C.comment, C.msg_id_fk, C.created, U.username FROM '
235
                        . $GLOBALS['xoopsDB']->prefix('smallworld_comments')
236
                        . ' C, '
237
                        . $GLOBALS['xoopsDB']->prefix('smallworld_user')
238
                        . " U WHERE C.uid_fk=U.userid AND C.uid_fk='"
239
                        . $uid
240
                        . "' AND C.msg_id_fk='"
241
                        . $msg_id
242
                        . "' ORDER BY C.com_id DESC LIMIT 1 ";
243
            $result2  = $GLOBALS['xoopsDB']->queryF($newquery);
244
            while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result2))) {
245
                $data[0] = $row;
246
            }
247
248
            return $data[0];
249
        }
250
251
        return false;
252
    }
253
254
    /**
255
     * Get array of users followers
256
     *
257
     * @param int $me
258
     * @return array
259
     */
260
    public function getFollowers($me)
261
    {
262
        $data   = [];
263
        $me     = (int)$me;
264
        $query  = 'SELECT you FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_followers') . " WHERE me = '" . $me . "'";
265
        $result = $GLOBALS['xoopsDB']->queryF($query);
266
        $i      = $GLOBALS['xoopsDB']->getRowsNum($result);
267 View Code Duplication
        if (0 == $i) {
268
            $data = [$me];
269
        } else {
270
            while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
271
                $data[] = $row;
272
            }
273
        }
274
275
        return $data;
276
    }
277
278
    /**
279
     * Count all votes
280
     *
281
     * @param int $type - not used
282
     * @param int $column name of column in vote dB table
283
     * @param int $msgid
284
     * @return int
285
     */
286
    public function countVotes($type, $column, $msgid)
287
    {
288
        $sum = 0;
289
        $valCol = in_array($column, ['up', 'down']) ? $column : false;
290
        if (false !== $valCol) {
291
            $query  = 'SELECT SUM(' . $column . ') AS sum FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_vote') . " WHERE msg_id = '" . (int)$msgid . "' AND com_id = '0'";
292
            $result = $GLOBALS['xoopsDB']->queryF($query);
293
            while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
294
                $sum = $row['sum'];
295
            }
296
        }
297
298
        return (int)$sum;
299
    }
300
301
    /**
302
     * Count comments votes
303
     *
304
     * @param int $type - not used
305
     * @param int $val - not used
306
     * @param int $comid
307
     * @param int $msgid
308
     * @returns int
309
     */
310 View Code Duplication
    public function countVotesCom($type, $val, $comid, $msgid)
311
    {
312
        $sum = 0;
313
        $query  = 'SELECT SUM(' . $val . ') AS sum FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_vote') . " WHERE com_id = '" . $comid . "' AND msg_id = '" . $msgid . "'";
314
        $result = $GLOBALS['xoopsDB']->queryF($query);
315
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
316
            $sum = $row['sum'];
317
        }
318
319
        return (int)$sum;
320
    }
321
322
    /**
323
     * Check if user has voted
324
     *
325
     * @param int    $userid
326
     * @param string $type
327
     * @param int    $comid
328
     * @param int    $msgid
329
     * @return bool
330
     */
331
    public function hasVoted($userid, $type, $comid, $msgid)
332
    {
333
        $userid = (int)$userid;
334
        $comid  = (int)$comid;
335
        $msgid  = (int)$msgid;
336
337
        if ('msg' === $type) {
338
            $sql    = 'SELECT * FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_vote') . " WHERE com_id = '0' AND msg_id = '" . $msgid . "' AND user_id = '" . $userid . "'";
339
            $result = $GLOBALS['xoopsDB']->queryF($sql);
340
            $i      = $GLOBALS['xoopsDB']->getRowsNum($result);
341
        } else {
342
            $sql    = 'SELECT * FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_vote') . " WHERE com_id = '" . $comid . "' AND msg_id = '" . $msgid . "' AND user_id = '" . $userid . "'";
343
            $result = $GLOBALS['xoopsDB']->queryF($sql);
344
            $i      = $GLOBALS['xoopsDB']->getRowsNum($result);
345
        }
346
347
        return $i ? true : false;
348
    }
349
350
    /**
351
     * Count messages per user
352
     * @param int $userid
353
     * @return int
354
     */
355 View Code Duplication
    public function countMsges($userid)
356
    {
357
        $sql    = 'SELECT (SELECT COUNT(*) FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_comments') . " WHERE uid_fk = '" . $userid . "') + (SELECT COUNT(*) FROM " . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . " WHERE uid_fk = '" . $userid . "')";
358
        $result = $GLOBALS['xoopsDB']->queryF($sql);
359
        $sum    = $GLOBALS['xoopsDB']->fetchRow($result);
360
361
        return $sum[0];
362
    }
363
364
    /**
365
     * Show permalink updates
366
     *
367
     * @param int $updid
368
     * @param int $uid
369
     * @param int $ownerID
370
     * @return array
371
     */
372 View Code Duplication
    public function updatesPermalink($updid, $uid, $ownerID)
373
    {
374
        $query  = 'SELECT M.msg_id, M.uid_fk, M.message, M.created, M.priv, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U  WHERE M.uid_fk=U.userid AND M.uid_fk='" . $ownerID . "'";
375
        $query  .= " AND M.msg_id = '" . $updid . "'";
376
        $query  .= ' ORDER BY M.created DESC LIMIT 1';
377
        $result = $GLOBALS['xoopsDB']->queryF($query);
378
        //$count  = $GLOBALS['xoopsDB']->getRowsNum($result);
379
        $data = [];
380
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
381
            $data[] = $row;
382
        }
383
384
        return $data;
385
    }
386
387
    /**
388
     * Updates share link in dB
389
     *
390
     * @param int $updid
391
     * @param int $ownerID
392
     * @return array
393
     */
394 View Code Duplication
    public function updatesSharelink($updid, $ownerID)
395
    {
396
        $GLOBALS['xoopsLogger']->activated = false;
397
        //error_reporting(E_ALL);
398
        $query  = 'SELECT M.msg_id, M.uid_fk, M.message, M.created, M.priv, U.username FROM ' . $GLOBALS['xoopsDB']->prefix('smallworld_messages') . ' M, ' . $GLOBALS['xoopsDB']->prefix('smallworld_user') . " U WHERE M.uid_fk=U.userid AND M.uid_fk='" . $ownerID . "' AND M.priv = 0";
399
        $query  .= " AND M.msg_id = '" . (int)$updid . "'";
400
        $query  .= ' ORDER BY created DESC LIMIT 1';
401
        $result = $GLOBALS['xoopsDB']->queryF($query);
402
        //$count  = $GLOBALS['xoopsDB']->getRowsNum($result);
403
        $data = [];
404
        while (false !== ($row = $GLOBALS['xoopsDB']->fetchArray($result))) {
405
            $data[] = $row;
406
        }
407
        return $data;
408
    }
409
410
    /**
411
     * Get sharing HTML link
412
     * @param int $id
413
     * @param int $priv
414
     * @return string
415
     */
416 View Code Duplication
    public function getSharing($id, $priv)
417
    {
418
        $text = '';
419
        if (1 !== $priv) {
420
            $text = " | <span class='smallworld_share' id='smallworld_share'>";
421
            $text .= "<a class='share' id='share-page" . (int)$id . "' href='javascript:void(0);'>" . _SMALLWORLD_SHARELINK . '</a></span>';
422
        }
423
424
        return $text;
425
    }
426
427
    /**
428
     * Get content for sharing - HTML div
429
     *
430
     * @param int    $id
431
     * @param int    $priv
432
     * @param string $permalink
433
     * @param string $desc
434
     * @param string $username
435
     * @return string
436
     */
437
    public function getSharingDiv($id, $priv, $permalink, $desc, $username)
438
    {
439
        $text = '';
440
        if (1 != $priv) {
441
            $text = "<div style='display: none;' class='smallworld_bookmarks' id='share-page' name='share-page" . (int)$id . "'>"
442
                  . "<span name='share-page" . (int)$id . "' rel1='" . $desc . "' rel2= '" . $username . "' rel=" . $permalink . " id='basicBookmark' title='" . _SMALLWORLD_SHAREBOX_TITLE . "'>"
443
                  . '</span></div>';
444
        }
445
446
        return $text;
447
    }
448
449
    /**
450
     * Parse update and comments array to template for public updates
451
     *
452
     * @param array $updatesarray
453
     * @param int   $id
454
     * @return void
455
     */
456
    public function parsePubArray($updatesarray, $id)
457
    {
458
        /**
459
         * @var \XoopsModules\Smallworld\Helper $helper
460
         * @var \XoopsModules\Smallworld\SwUserHandler $swUserHandler
461
         */
462
        $helper            = Helper::getInstance();
463
        $swUserHandler     = $helper->getHandler('SwUser');
464
        $check             = new User();
465
        $swDB              = new SwDatabase();
466
        $profile           = $swUserHandler->checkIfProfile($id);
467
        $myavatar          = $swUserHandler->gravatar($id);
468
        $myavatarlink      = $swUserHandler->getAvatarLink($id, $myavatar);
469
        $myavatar_size     = smallworld_getImageSize(80, 100, $myavatarlink);
470
        $myavatar_highwide = smallworld_imageResize($myavatar_size[0], $myavatar_size[1], 35);
471
472
        $GLOBALS['xoopsTpl']->assign([
473
            'myavatar'          => $myavatar,
474
            'myavatarlink'      => $myavatarlink,
475
            'myavatar_highwide' => $myavatar_highwide
476
        ]);
477
478
        foreach ($updatesarray as $data) {
479
            // Is update's user a friend ?
480
            $frU = $check->friendcheck($id, $data['uid_fk']);
481
            $USW = ['posts' => 0, 'comments' => 0];
482
483 View Code Duplication
            if ($helper->isUserAdmin() || $data['uid_fk'] == $id) {
484
                $USW    = ['posts' => 1, 'comments' => 1];
485
                $frU[0] = 2;
486
            } else {
487
                $USW = json_decode($swDB->getSettings($data['uid_fk']), true);
488
            }
489
490
            $wm['msg_id']          = $data['msg_id'];
491
            $wm['orimessage']      = (1 == $USW['posts'] || $profile >= Constants::PROFILE_HAS_BOTH) ? str_replace(["\r", "\n"], '', smallworld_stripWordsKeepUrl($data['message'])) : '';
492
            $wm['message']         = (1 == $USW['posts'] || $profile >= Constants::PROFILE_HAS_BOTH) ? smallworld_tolink(htmlspecialchars_decode($data['message']), $data['uid_fk']) : _SMALLWORLD_MESSAGE_PRIVSETPOSTS;
493
            $wm['message']         = smallworld_cleanup($wm['message']);
494
            $wm['created']         = smallworld_time_stamp($data['created']);
495
            $wm['username']        = $data['username'];
496
            $wm['uid_fk']          = $data['uid_fk'];
497
            $wm['priv']            = $data['priv'];
498
            $wm['avatar']          = $swUserHandler->gravatar($data['uid_fk']);
499
            $wm['avatar_link']     = $swUserHandler->getAvatarLink($data['uid_fk'], $wm['avatar']);
500
            $wm['avatar_size']     = smallworld_getImageSize(80, 100, $wm['avatar_link']);
501
            $wm['avatar_highwide'] = smallworld_imageResize($wm['avatar_size'][0], $wm['avatar_size'][1], 50);
502
            $wm['vote_up']         = $this->countVotes('msg', 'up', $data['msg_id']);
503
            $wm['vote_down']       = $this->countVotes('msg', 'down', $data['msg_id']);
504
            $wm['sharelinkurl']    = $helper->url("smallworldshare.php?ownerid={$data['uid_fk']}");
505
            $wm['sharelinkurl']    .= '&updid=' . $data['msg_id'] . '';
506
            $wm['usernameTitle']   = $wm['username'] . _SMALLWORLD_UPDATEONSITEMETA . $GLOBALS['xoopsConfig']['sitename'];
507 View Code Duplication
            if (1 == $USW['posts'] || $profile >= Constants::PROFILE_HAS_BOTH) {
508
                $wm['sharelink'] = $this->getSharing($wm['msg_id'], $wm['priv']);
509
            } else {
510
                $wm['sharelink'] = $this->getSharing($wm['msg_id'], 1);
511
            }
512
513 View Code Duplication
            if (1 == $USW['posts'] || $profile >= Constants::PROFILE_HAS_BOTH) {
514
                $wm['sharediv'] = $this->getSharingDiv($wm['msg_id'], $wm['priv'], $wm['sharelinkurl'], $wm['orimessage'], $wm['usernameTitle']);
515
            } else {
516
                $wm['sharediv'] = $this->getSharingDiv($wm['msg_id'], 1, $wm['sharelinkurl'], $wm['orimessage'], $wm['usernameTitle']);
517
            }
518
            $wm['linkimage']     = $helper->url('assets/images/link.png');
519
            $wm['permalink']     = $helper->url("permalink.php?ownerid={$data['uid_fk']}&updid={$data['msg_id']}");
520
            $wm['commentsarray'] = $this->Comments($data['msg_id']);
521
522 View Code Duplication
            if (2 == $frU[0] || 1 == $USW['posts']) {
523
                $GLOBALS['xoopsTpl']->append('walldata', $wm);
524
            }
525
526
            foreach ($wm['commentsarray'] as $cdata) {
527
                // Is commentuser a friend ?
528
                $frC = $check->friendcheck($id, $cdata['uid_fk']);
529
                $USC = ['posts' => 0, 'comments' => 0];
530
531 View Code Duplication
                if ($helper->isUserAdmin() || $cdata['uid_fk'] == $id) {
532
                    $USC    = ['posts' => 1, 'comments' => 1];
533
                    $frC[0] = Constants::PROFILE_HAS_BOTH;
534
                } else {
535
                    $USC = json_decode($swDB->getSettings($cdata['uid_fk']), true);
536
                }
537
538
                $wc['msg_id_fk']       = $cdata['msg_id_fk'];
539
                $wc['com_id']          = $cdata['com_id'];
540
                $wc['comment']         = (1 == $USC['comments'] || $profile >= Constants::PROFILE_HAS_BOTH) ? smallworld_tolink(htmlspecialchars_decode($cdata['comment']), $cdata['uid_fk']) : _SMALLWORLD_MESSAGE_PRIVSETCOMMENTS;
541
                $wc['comment']         = smallworld_cleanup($wc['comment']);
542
                $wc['time']            = smallworld_time_stamp($cdata['created']);
543
                $wc['username']        = $cdata['username'];
544
                $wc['uid']             = $cdata['uid_fk'];
545
                $wc['myavatar']        = $myavatar;
546
                $wc['myavatar_link']   = $myavatarlink;
547
                $wc['avatar_size']     = smallworld_getImageSize(80, 100, $wc['myavatar_link']);
548
                $wc['avatar_highwide'] = smallworld_imageResize($wc['avatar_size'][0], $wc['avatar_size'][1], 35);
549
                $wc['cface']           = $swUserHandler->gravatar($cdata['uid_fk']);
550
                $wc['avatar_link']     = $swUserHandler->getAvatarLink($cdata['uid_fk'], $wc['cface']);
551
                $wc['vote_up']         = $this->countVotesCom('com', 'up', $cdata['msg_id_fk'], $cdata['com_id']);
552
                $wc['vote_down']       = $this->countVotesCom('com', 'down', $cdata['msg_id_fk'], $cdata['com_id']);
553
554 View Code Duplication
                if (Constants::PROFILE_HAS_BOTH == $frC[0] || 1 == $USC['comments']) {
555
                    $GLOBALS['xoopsTpl']->append('comm', $wc);
556
                }
557
            }
558
        }
559
    }
560
}
561