Code Duplication    Length = 646-647 lines in 2 locations

class/db.php 1 location

@@ 22-668 (lines=647) @@
19
 * @since        1.0
20
 * @author       Michael Albertsen (http://culex.dk) <[email protected]>
21
 */
22
class SmallWorldDB
23
{
24
    /**
25
     * getJobsToDiv function
26
     * @param int $id
27
     * @returns Array
28
     */
29
    public function getJobsToDiv($id)
30
    {
31
        global $xoopsUser, $xoopsDB;
32
        $msg    = [];
33
        $new    = [];
34
        $sql    = 'SELECT employer,position,jobstart,jobstop,description  FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
35
        $result = $xoopsDB->query($sql);
36
        while ($row = $xoopsDB->fetchArray($result)) {
37
            $employer    = unserialize($row['employer']);
38
            $position    = unserialize($row['position']);
39
            $jobstart    = unserialize($row['jobstart']);
40
            $jobstop     = unserialize($row['jobstop']);
41
            $description = unserialize($row['description']);
42
        }
43
        $start = 0;
44
        $end   = count($employer) - 1;
45
        while ($start <= $end) {
46
            $msg[$start]['employer']    = $employer[$start];
47
            $msg[$start]['position']    = $position[$start];
48
            $msg[$start]['jobstart']    = $jobstart[$start];
49
            $msg[$start]['jobstop']     = $jobstop[$start];
50
            $msg[$start]['description'] = $description[$start];
51
            ++$start;
52
        }
53
        return $msg;
54
    }
55
56
    /**
57
     * getSchoolToDiv function
58
     * @param int $id
59
     * @returns Array
60
     */
61
    public function getSchoolToDiv($id)
62
    {
63
        global $xoopsUser, $xoopsDB, $arr7;
64
        $msg    = [];
65
        $sql    = 'SELECT school_type,school,schoolstart,schoolstop FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
66
        $result = $xoopsDB->query($sql);
67
        while ($row = $xoopsDB->fetchArray($result)) {
68
            $school_type = unserialize($row['school_type']);
69
            $school      = unserialize($row['school']);
70
            $schoolstart = unserialize($row['schoolstart']);
71
            $schoolstop  = unserialize($row['schoolstop']);
72
        }
73
        $start = 0;
74
        $end   = count($school_type) - 1;
75
        while ($start <= $end) {
76
            $msg[$start]['school_type'] = $school_type[$start];
77
            $msg[$start]['school']      = $arr7[$school[$start]];
78
            $msg[$start]['schoolstart'] = $schoolstart[$start];
79
            $msg[$start]['schoolstop']  = $schoolstop[$start];
80
            $start++;
81
        }
82
        return $msg;
83
    }
84
85
    /**
86
     * getScreennamesToDiv function
87
     * @param int $id
88
     * @returns Array
89
     */
90
    public function getScreennamesToDiv($id)
91
    {
92
        global $xoopsUser, $xoopsDB, $arr06;
93
        $msg    = [];
94
        $sql    = 'SELECT screenname_type,screenname FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
95
        $result = $xoopsDB->query($sql);
96
        while ($row = $xoopsDB->fetchArray($result)) {
97
            $screenname_type = unserialize($row['screenname_type']);
98
            $screenname      = unserialize($row['screenname']);
99
        }
100
        $start = 0;
101
        $end   = count($screenname_type) - 1;
102
        while ($start <= $end) {
103
            $msg[$start]['screenname']      = $screenname_type[$start];
104
            $msg[$start]['screenname_type'] = $arr06[$screenname[$start]];
105
            $msg[$start]['link']            = "<span class='smallworld_website'>" . Smallworld_sociallinks($screenname[$start], $msg[$start]['screenname']);
106
            ++$start;
107
        }
108
        return $msg;
109
    }
110
111
    /**
112
     * getVar function
113
     * @param int    $id
114
     * @param string $var
115
     * @return array|int
116
     */
117
    public function getVar($id, $var)
118
    {
119
        global $xoopsUser, $xoopsDB;
120
        $sql    = 'SELECT ' . $var . ' FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $id . "'";
121
        $result = $xoopsDB->queryF($sql);
122
        if ($xoopsDB->getRowsNum($result) < 1) {
123
            return 0;//_SMALLWORLD_REPLY_NOTSPECIFIED;
124
        }
125
        while ($row = $xoopsDB->fetchArray($result)) {
126
            $msg[$var] = $row[$var];
127
        }
128
        return $msg[$var];
129
    }
130
131
    /**
132
     * updateSingleValue function
133
     * @param string $table
134
     * @param int    $userid
135
     * @param string $field
136
     * @param int    $value
137
     * @return void
138
     */
139
    public function updateSingleValue($table, $userid, $field, $value)
140
    {
141
        global $xoopsUser, $xoopsDB;
142
        $myts   = MyTextSanitizer::getInstance();
143
        $sql    = 'UPDATE ' . $xoopsDB->prefix($table) . ' SET ' . $field . "='" . $myts->addSlashes($value) . "' WHERE userid='" . (int)$userid . "'";
144
        $result = $xoopsDB->queryF($sql);
145
    }
146
147
    /**
148
     * saveImage function
149
     * @param $values
150
     * @return void
151
     */
152
    public function saveImage($values)
153
    {
154
        global $xoopsUser, $xoopsDB;
155
        $myts   = MyTextSanitizer::getInstance();
156
        $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_images') . ' VALUES (' . $values . ')';
157
        $result = $xoopsDB->queryF($sql);
158
    }
159
160
    /**
161
     * DeleteImage function
162
     * @param int    $userid
163
     * @param string $imagename
164
     * @return void
165
     */
166
    public function DeleteImage($userid, $imagename)
167
    {
168
        global $xoopsUser, $xoopsDB;
169
        $myts   = MyTextSanitizer::getInstance();
170
        $sql    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE imgname = '" . stripslashes($imagename) . "' AND userid='" . $userid . "'";
171
        $result = $xoopsDB->queryF($sql);
172
    }
173
174
    /**
175
     * handlePosts function
176
     * @return void
177
     */
178
    public function handlePosts()
179
    {
180
		
181
        global $xoopsUser, $xoopsDB;
182
        $myts = MyTextSanitizer::getInstance();
183
        $uid  = $xoopsUser->getVar('uid');
184
        $user = new XoopsUser($uid);
185
        $img  = new SmallWorldImages;
186
        if ('' == $this->getVar($uid, 'userimage')) {
187
            $avatar = $user->user_avatar();
188
        } else {
189
            $avatar = $this->getVar($uid, 'userimage');
190
        }
191
192
        if ('2' != $_POST['relationship']) {
193
            $partner = Smallworld_sanitize($_POST['partner']);
194
        } else {
195
            $partner = '';
196
        }
197
198
        $regdate                = time();
199
        $username               = $user->uname();
200
        $realname               = Smallworld_sanitize($_POST['realname']);
201
        $gender                 = isset($_POST['gender']) ? $_POST['gender'] : '';
202
        $intingender            = isset($_POST['intingender']) ? Smallworld_sanitize(serialize($_POST['intingender'])) : Smallworld_sanitize(serialize([0 => '3']));
203
        $relationship           = Smallworld_sanitize($_POST['relationship']);
204
        $searchrelat            = isset($_POST['searchrelat']) ? Smallworld_sanitize(serialize($_POST['searchrelat'])) : Smallworld_sanitize(serialize([0 => '0']));
205
        $birthday               = Smallworld_sanitize(Smallworld_euroToUsDate($_POST['birthday']));
206
        $birthplace             = Smallworld_sanitize($_POST['birthplace']);
207
        $birthplace_lat         = Smallworld_sanitize($_POST['birthplace_lat']);
208
        $birthplace_lng         = Smallworld_sanitize($_POST['birthplace_lng']);
209
        $birthplace_country     = Smallworld_sanitize($_POST['birthplace_country']);
210
        $birthplace_country_img = isset($_POST['birthplace_country_img']) ? Smallworld_sanitize($_POST['birthplace_country_img']) : '';
211
        $politic                = Smallworld_sanitize($_POST['politic']);
212
        $religion               = Smallworld_sanitize($_POST['religion']);
213
        $emailtype              = Smallworld_sanitize(serialize($_POST['emailtype']));
214
        $screenname_type        = Smallworld_sanitize(serialize($_POST['screenname_type']));
215
        $screenname             = Smallworld_sanitize(serialize($_POST['screenname']));
216
        $mobile                 = Smallworld_sanitize($_POST['mobile']);
217
        $phone                  = Smallworld_sanitize($_POST['phone']);
218
        $adress                 = Smallworld_sanitize($_POST['adress']);
219
        $present_city           = Smallworld_sanitize($_POST['present_city']);
220
        $present_lat            = Smallworld_sanitize($_POST['present_lat']);
221
        $present_lng            = Smallworld_sanitize($_POST['present_lng']);
222
        $present_country        = Smallworld_sanitize($_POST['present_country']);
223
        $present_country_img    = isset($_POST['present_country_img']) ? Smallworld_sanitize($_POST['present_country_img']) : '';
224
        $website                = Smallworld_sanitize($_POST['website']);
225
        $interests              = Smallworld_sanitize($_POST['interests']);
226
        $music                  = Smallworld_sanitize($_POST['music']);
227
        $tvshow                 = Smallworld_sanitize($_POST['tvshow']);
228
        $movie                  = Smallworld_sanitize($_POST['movie']);
229
        $books                  = Smallworld_sanitize($_POST['books']);
230
        $aboutme                = Smallworld_sanitize($_POST['aboutme']);
231
        $school_type            = Smallworld_sanitize(serialize($_POST['school_type']));
232
        $school                 = Smallworld_sanitize(serialize($_POST['school']));
233
        $schoolstart            = Smallworld_sanitize(serialize($_POST['schoolstart']));
234
        $schoolstop             = Smallworld_sanitize(serialize($_POST['schoolstop']));
235
        $jobemployer            = Smallworld_sanitize(serialize($_POST['employer']));
236
        $jobposition            = Smallworld_sanitize(serialize($_POST['position']));
237
        $jobstart               = Smallworld_sanitize(serialize(Smallworld_YearOfArray($_POST['jobstart'])));
238
        $jobstop                = Smallworld_sanitize(serialize(Smallworld_YearOfArray($_POST['jobstop'])));
239
        $jobdescription         = Smallworld_sanitize(serialize($_POST['description']));
240
241
        $sql = '';
242
243
        if ('edit' === $_POST['function']) {
244
            // Update all values in user_table
245
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_user') . ' SET ';
246
            $sql    .= "realname = '" . $realname . "', username= '" . $username . "', userimage = '" . $avatar . "', gender = '" . $gender . "',";
247
            $sql    .= "intingender = '" . $intingender . "',relationship = '" . $relationship . "', partner = '" . $partner . "', searchrelat = '" . $searchrelat . "',";
248
            $sql    .= "birthday = '" . $birthday . "',birthplace = '" . $birthplace . "',birthplace_lat = '" . (float)$birthplace_lat . "',";
249
            $sql    .= "birthplace_lng = '" . (float)$birthplace_lng . "',birthplace_country = '" . $birthplace_country . "',politic = '" . $politic . "',";
250
            $sql    .= "religion = '" . $religion . "',emailtype = '" . $emailtype . "',screenname_type = '" . $screenname_type . "',";
251
            $sql    .= "screenname = '" . $screenname . "',mobile = '" . (float)$mobile . "',phone = '" . (float)$phone . "',adress = '" . $adress . "',";
252
            $sql    .= "present_city = '" . $present_city . "',present_lat = '" . (float)$present_lat . "',present_lng = '" . (float)$present_lng . "',";
253
            $sql    .= "present_country = '" . $present_country . "',website = '" . $website . "',interests = '" . $interests . "',";
254
            $sql    .= "music = '" . $music . "',tvshow = '" . $tvshow . "',movie = '" . $movie . "',";
255
            $sql    .= "books = '" . $books . "',aboutme = '" . $aboutme . "',school_type = '" . $school_type . "',";
256
            $sql    .= "school = '" . $school . "', schoolstart = '" . $schoolstart . "',schoolstop = '" . $schoolstop . "',";
257
            $sql    .= "employer = '" . $jobemployer . "', position = '" . $jobposition . "',jobstart = '" . $jobstart . "',";
258
            $sql    .= "jobstop = '" . $jobstop . "', description = '" . $jobdescription . "' ";
259
            $sql    .= "WHERE userid ='" . (int)$uid . "'";
260
            $result = $xoopsDB->queryF($sql);
261
            if (false === $result) {
262
                die('SQL error:' . $sql . '');
263
            }
264
265
            $this->EditAdmins($uid, $realname, $avatar);
266
            $img->createAlbum($uid);
267
        }
268
		
269
        if ('save' === $_POST['function']) {
270
            $sql    = 'INSERT INTO '
271
                      . $xoopsDB->prefix('smallworld_user')
272
                      . ' (userid, regdate, username, userimage, realname, gender, intingender, relationship, partner, searchrelat, birthday, birthplace, birthplace_lat, birthplace_lng, birthplace_country, politic, religion, emailtype, screenname_type, screenname, mobile, phone, adress, present_city, present_lat, present_lng, present_country, website, interests, music, tvshow, movie, books, aboutme, school_type, school, schoolstart, schoolstop, employer, position, jobstart, jobstop, description, friends, followers, admin_flag) ';
273
            $sql    .= "VALUES ('" . (int)$uid . "', '" . $regdate . "', '" . $username . "', '" . $avatar . "', '" . $realname . "', '" . $gender . "', '" . $intingender . "', '" . $relationship . "', '" . $partner . "', '" . $searchrelat . "','";
274
            $sql    .= $birthday . "', '" . $birthplace . "', '" . (float)$birthplace_lat . "', '" . (float)$birthplace_lng . "', '" . $birthplace_country . "', '" . $politic . "', '" . $religion . "','";
275
            $sql    .= $emailtype . "', '" . $screenname_type . "', '" . $screenname . "', '" . (float)$mobile . "', '" . (float)$phone . "', '" . $adress . "', '" . $present_city . "', '" . (float)$present_lat . "','";
276
            $sql    .= (float)$present_lng . "', '" . $present_country . "', '" . $website . "', '" . $interests . "', '" . $music . "', '" . $tvshow . "', '" . $movie . "', '" . $books . "', '" . $aboutme . "', '";
277
            $sql    .= $school_type . "', '" . $school . "', '" . $schoolstart . "', '" . $schoolstop . "', '" . $jobemployer . "', '" . $jobposition . "', '" . $jobstart . "', '" . $jobstop . "', '" . $jobdescription . "', ";
278
            $sql    .= "'0', '0', '0')";
279
            $result = $xoopsDB->queryF($sql);
280
            if (false === $result) {
281
                die('SQL error:' . $sql . '');
282
            }
283
            $this->SetAdmins($uid, $username, $realname, $avatar);
284
            $img->createAlbum($uid);
285
        }
286
    }
287
288
    /**
289
     * SetAdmins function
290
     * @param int    $userID
291
     * @param string $username
292
     * @param string $realname
293
     * @param mixed  $avatar
294
     * @return void
295
     */
296
    public function SetAdmins($userID, $username, $realname, $avatar)
297
    {
298
        global $xoopsDB, $xoopsUser;
299
        $ip     = $_SERVER['REMOTE_ADDR'];
300
        $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_admin') . ' (id,userid,username, realname,userimage,ip,complaint,inspect_start, ' . "inspect_stop) VALUES ('', '" . $userID . "', '" . $username . "','" . $realname . "', '" . $avatar . "','" . $ip . "','0','0','0')";
301
        $result = $xoopsDB->queryF($sql);
302
    }
303
304
    /**
305
     * EditAdmins function
306
     * @param int    $userID
307
     * @param string $realname
308
     * @param mixed  $avatar
309
     * @return void
310
     */
311
    public function EditAdmins($userID, $realname, $avatar)
312
    {
313
        global $xoopsDB;
314
        $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . " SET realname = '" . $realname . "', userimage = '" . $avatar . "' WHERE userid = '" . (int)$userID . "'";
315
        $result = $xoopsDB->queryF($sql);
316
    }
317
318
    /**
319
     * alreadycomplaint function
320
     * - Check if user has already sent complaint
321
     * @param string $msg
322
     * @param int    $by
323
     * @param int    $against
324
     * @return int
325
     */
326
    public function alreadycomplaint($msg, $by, $against)
327
    {
328
        global $xoopsDB;
329
        $sql    = 'SELECT * FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE byuser_id = '" . (int)$by . "' AND owner = '" . (int)$against . "' AND link = '" . addslashes($msg) . "'";
330
        $result = $xoopsDB->queryF($sql);
331
        $i      = $xoopsDB->getRowsNum($result);
332
        if ($i < 1) {
333
            $query  = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_complaints') . " (complaint_id,link,byuser_id,owner) VALUES ('', '" . addslashes($msg) . "', '" . (int)$by . "', '" . (int)$against . "')";
334
            $result = $xoopsDB->queryF($query);
335
        } else {
336
        }
337
        return $i;
338
    }
339
340
    /**
341
     * updateComplaint function
342
     * @param int $userID
343
     * @return void
344
     */
345
    public function updateComplaint($userID)
346
    {
347
        global $xoopsDB;
348
        $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . ' SET complaint = complaint + 1 ' . "WHERE userid = '" . (int)$userID . "'";
349
        $result = $xoopsDB->queryF($sql);
350
    }
351
352
    /**
353
     * updateInspection function
354
     * @param int $userID
355
     * @param int $start
356
     * @param int stop
357
     * @return void
358
     */
359
    public function updateInspection($userID, $start, $stop)
360
    {
361
        global $xoopsDB;
362
        $newstop = $time() + $stop;
363
        $sql     = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . " SET inspect_start = '" . $time() . "', instect_stop = '" . $newstop . "' WHERE userid ='" . (int)$userID . "'";
364
        $result  = $xoopsDB->queryF($sql);
365
    }
366
367
    /**
368
     * handleImageEdit function
369
     * @return void
370
     */
371
    public function handleImageEdit()
372
    {
373
        global $xoopsDB;
374
        for ($i = 0, $iMax = count($_POST['id']); $i < $iMax; ++$i) {
375
            $id     = (int)$_POST['id'][$i];
376
            $desc   = $_POST['imgdesc'][$i];
377
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_images') . " SET `desc` = '" . addslashes($desc) . "' WHERE `id`='" . $id . "'";
378
            $result = $xoopsDB->queryF($sql);
379
        }
380
    }
381
382
    /**
383
     * updateInspection function
384
     * - insert aplication for friendship into db or delete if denied
385
     * @param int $status
386
     * @param int $friendid
387
     * @param int $userid
388
     * @return void
389
     */
390
    public function toogleFriendInvite($status, $friendid, $userid)
391
    {
392
        global $xoopsDB;
393
        if (0 == $status) {
394
            $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_friends') . " (id,me,you,status,date) VALUES ('', '" . $userid . "', '" . $friendid . "', '1', UNIX_TIMESTAMP())";
395
            $result = $xoopsDB->queryF($sql);
396
        }
397
        if ($status > 0) {
398
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$friendid . "' AND you = '" . (int)$userid . "'";
399
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$userid . "' AND you = '" . (int)$friendid . "'";
400
            $result  = $xoopsDB->queryF($sql);
401
            $result2 = $xoopsDB->queryF($sql2);
402
403
            // Since friendship is canceled also following is deleted
404
            $this->toogleFollow(1, $userid, $friendid);
405
        }
406
    }
407
408
    /**
409
     * toogleFollow function
410
     * - Insert following to db or delete if requested
411
     * @param int $following
412
     * @param int $myUid
413
     * @param int $friend
414
     * @return void
415
     */
416
    public function toogleFollow($following, $myUid, $friend)
417
    {
418
        global $xoopsDB;
419
        if (0 == $following) {
420
            $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_followers') . " (id,me,you,status,date) VALUES ('', '" . $myUid . "', '" . $friend . "', '1', UNIX_TIMESTAMP())";
421
            $result = $xoopsDB->queryF($sql);
422
        }
423
        if ($following > 0) {
424
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE you = '" . (int)$friend . "'";
425
            $sql     .= " AND me = '" . (int)$myUid . "'";
426
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . (int)$friend . "'";
427
            $sql2    .= " AND you = '" . (int)$myUid . "'";
428
            $result2 = $xoopsDB->queryF($sql2);
429
        }
430
    }
431
432
    /**
433
     * SetFriendshitStat function
434
     * @param int $stat
435
     * @param int $myUid
436
     * @param int $friend
437
     * @return void
438
     */
439
    public function SetFriendshitStat($stat, $myUid, $friend)
440
    {
441
        global $xoopsDB;
442
        if (1 == $stat) {
443
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_friends') . " SET status = '2' WHERE `me` = '" . $friend . "' AND `you` = '" . $myUid . "'";
444
            $result = $xoopsDB->queryF($sql);
445
            $query  = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_friends') . " (id,me,you,status,date) VALUES ('', '" . $myUid . "', '" . $friend . "', '2', UNIX_TIMESTAMP())";
446
            $result = $xoopsDB->queryF($query);
447
        }
448
        if ($stat < 0) {
449
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$friend . "' AND you = '" . (int)$myUid . "'";
450
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE you = '" . (int)$friend . "' AND me = '" . (int)$myUid . "'";
451
            $result  = $xoopsDB->queryF($sql);
452
            $result2 = $xoopsDB->queryF($sql2);
453
        }
454
    }
455
456
    /**
457
     * deleteWallMsg function
458
     * @param int $id
459
     * @param int $smallworld_msg_id
460
     * @return true
461
     */
462
    public function deleteWallMsg($id, $smallworld_msg_id)
463
    {
464
        global $xoopsDB;
465
        $query   = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE msg_id = '" . $smallworld_msg_id . "'";
466
        $result  = $xoopsDB->queryF($query);
467
        $query2  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE msg_id_fk = '" . $smallworld_msg_id . "'";
468
        $result2 = $xoopsDB->queryF($query2);
469
        //delete votes
470
        $query3  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE msg_id = '" . $smallworld_msg_id . "'";
471
        $result3 = $xoopsDB->queryF($query3);
472
        return true;
473
    }
474
475
    /**
476
     * deleteWallComment function
477
     * - Delete Comments
478
     * @param int $smallworld_com_id
479
     * @return true
480
     */
481
    public function deleteWallComment($smallworld_com_id)
482
    {
483
        global $xoopsDB;
484
        $query   = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE com_id = '" . $smallworld_com_id . "'";
485
        $result  = $xoopsDB->queryF($query);
486
        $query2  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE com_id = '" . $smallworld_com_id . "'";
487
        $result2 = $xoopsDB->queryF($query2);
488
        return true;
489
    }
490
491
    /**
492
     * CountUsersRates function
493
     * - Delete Comments
494
     * @param int    $userid
495
     * @param string $val
496
     * @return int
497
     */
498
    public function CountUsersRates($userid, $val)
499
    {
500
        global $xoopsUser, $xoopsDB;
501
        $query  = 'Select SUM(' . $val . ') as sum from ' . $xoopsDB->prefix('smallworld_vote') . " where owner = '" . $userid . "'";
502
        $result = $xoopsDB->queryF($query);
503
        while ($row = $xoopsDB->fetchArray($result)) {
504
            $sum = $row['sum'];
505
        }
506
        if ('' == $sum) {
507
            $sum = '0';
508
        }
509
        return $sum;
510
    }
511
512
    /**
513
     * deleteAccount function
514
     * - Delete user account and associate rows across tables
515
     * @param int $userid
516
     * @return string
517
     */
518
    public function deleteAccount($userid)
519
    {
520
        global $xoopsDB, $xoopsUser;
521
        $user     = new XoopsUser($userid);
522
        $username = $user->uname();
523
        $sql01    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_admin') . " WHERE userid = '" . $userid . "'";
524
        $sql02    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE uid_fk = '" . $userid . "'";
525
        $sql03    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'";
526
        $sql04    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'";
527
        $sql05    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE userid = '" . $userid . "'";
528
        $sql06    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE uid_fk = '" . $userid . "'";
529
        $sql07    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $userid . "'";
530
        $sql08    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE user_id = '" . $userid . "'";
531
        $sql09    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE owner = '" . $userid . "' OR byuser_id = '" . $userid . "'";
532
        $sql10    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_settings') . " WHERE userid = '" . $userid . "'";
533
534
        $result01 = $xoopsDB->queryF($sql01);
535
        $result02 = $xoopsDB->queryF($sql02);
536
        $result03 = $xoopsDB->queryF($sql03);
537
        $result04 = $xoopsDB->queryF($sql04);
538
        $result05 = $xoopsDB->queryF($sql05);
539
        $result06 = $xoopsDB->queryF($sql06);
540
        $result07 = $xoopsDB->queryF($sql07);
541
        $result08 = $xoopsDB->queryF($sql08);
542
        $result08 = $xoopsDB->queryF($sql09);
543
        $result08 = $xoopsDB->queryF($sql10);
544
        // Remove picture dir
545
        $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/';
546
        $this->smallworld_remDir($userid, $dirname, $empty = false);
547
        echo $username . _AM_SMALLWORLD_ADMIN_USERDELETEDALERT;
548
    }
549
550
    /**
551
     * SmallworldDeleteDirectory function
552
     * - Delete images from users on delete
553
     * @param int $userid
554
     * @return true
555
     */
556
    public function SmallworldDeleteDirectory($userid)
557
    {
558
        $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/';
559
        if (is_dir($dirname)) {
560
            $dir_handle = opendir($dirname);
561
        }
562
        if (!$dir_handle) {
563
            return false;
564
        }
565
        while ($file = readdir($dir_handle)) {
566
            if ('.' !== $file && '..' !== $file) {
567
                if (!is_dir($dirname . '/' . $file)) {
568
                    unlink($dirname . '/' . $file);
569
                } else {
570
                    $this->SmallworldDeleteDirectory($dirname . '/' . $file);
571
                }
572
            }
573
        }
574
        closedir($dir_handle);
575
        rmdir($dirname);
576
        return true;
577
    }
578
579
    /**
580
     * smallworld_remDir function
581
     * - Remove user image dir in uploads.
582
     * @param int    $userid
583
     * @param string $directory
584
     * @param bool|int $empty
585
     * @return true
586
     */
587
    public function smallworld_remDir($userid, $directory, $empty = false)
588
    {
589
        if ('' != $userid) {
590
            if ('/' === substr($directory, -1)) {
591
                $directory = substr($directory, 0, -1);
592
            }
593
594
            if (!file_exists($directory) || !is_dir($directory)) {
595
                return false;
596
            } elseif (!is_readable($directory)) {
597
                return false;
598
            } else {
599
                $directoryHandle = opendir($directory);
600
                while ($contents = readdir($directoryHandle)) {
601
                    if ('.' !== $contents && '..' !== $contents) {
602
                        $path = $directory . '/' . $contents;
603
                        if (is_dir($path)) {
604
                            $this->smallworld_remDir($userid, $path);
605
                        } else {
606
                            unlink($path);
607
                        }
608
                    }
609
                }
610
                closedir($directoryHandle);
611
                if (false === $empty) {
612
                    if (!rmdir($directory)) {
613
                        return false;
614
                    }
615
                }
616
                return true;
617
            }
618
        }
619
    }
620
621
    /**
622
     * Update private settings
623
     * @param int id ($userid)
624
     * @param string posts (serialized values)
625
     * @return void
626
     */
627
    public function saveSettings($id, $posts)
628
    {
629
        global $xoopsDB;
630
        $sql    = 'SELECT value FROM ' . $xoopsDB->prefix('smallworld_settings') . ' WHERE userid = ' . (int)$id . '';
631
        $result = $xoopsDB->queryF($sql);
632
        $i      = $xoopsDB->getRowsNum($result);
633
        if ($i > 0) {
634
            $sql = 'UPDATE ' . $xoopsDB->prefix('smallworld_settings') . " SET value = '" . $posts . "' WHERE userid = " . (int)$id . '';
635
        } else {
636
            $sql = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_settings') . " (id,userid,value) VALUES ('', '" . $id . "', '" . $posts . "')";
637
        }
638
        $result = $xoopsDB->queryF($sql);
639
        $this->GetSettings($id);
640
    }
641
642
    /**
643
     * Retrieve private settings
644
     * @param int userid
645
     * @return serialized|string
646
     */
647
    public function GetSettings($userid)
648
    {
649
        global $xoopsDB;
650
        $sql    = 'SELECT value FROM ' . $xoopsDB->prefix('smallworld_settings') . ' WHERE userid = ' . (int)$userid . '';
651
        $result = $xoopsDB->queryF($sql);
652
        $i      = $xoopsDB->getRowsNum($result);
653
        if ($i < 1) {
654
            $posts = serialize([
655
                                   'posts'    => 0,
656
                                   'comments' => 0,
657
                                   'notify'   => 1
658
                               ]);
659
            $this->saveSettings($userid, $posts);
660
            $this->GetSettings($userid);
661
        } else {
662
            while ($row = $xoopsDB->fetchArray($result)) {
663
                $data = $row['value'];
664
            }
665
            return json_encode(unserialize(stripslashes($data)));
666
        }
667
    }
668
}
669

class/SmallWorldDB.php 1 location

@@ 22-667 (lines=646) @@
19
 * @since        1.0
20
 * @author       Michael Albertsen (http://culex.dk) <[email protected]>
21
 */
22
class SmallWorldDB
23
{
24
    /**
25
     * getJobsToDiv function
26
     * @param int $id
27
     * @return array
28
     */
29
    public function getJobsToDiv($id)
30
    {
31
        global $xoopsUser, $xoopsDB;
32
        $msg    = [];
33
        $new    = [];
34
        $sql    = 'SELECT employer,position,jobstart,jobstop,description  FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
35
        $result = $xoopsDB->query($sql);
36
        while ($row = $xoopsDB->fetchArray($result)) {
37
            $employer    = unserialize($row['employer']);
38
            $position    = unserialize($row['position']);
39
            $jobstart    = unserialize($row['jobstart']);
40
            $jobstop     = unserialize($row['jobstop']);
41
            $description = unserialize($row['description']);
42
        }
43
        $start = 0;
44
        $end   = count($employer) - 1;
45
        while ($start <= $end) {
46
            $msg[$start]['employer']    = $employer[$start];
47
            $msg[$start]['position']    = $position[$start];
48
            $msg[$start]['jobstart']    = $jobstart[$start];
49
            $msg[$start]['jobstop']     = $jobstop[$start];
50
            $msg[$start]['description'] = $description[$start];
51
            ++$start;
52
        }
53
        return $msg;
54
    }
55
56
    /**
57
     * getSchoolToDiv function
58
     * @param int $id
59
     * @return array
60
     */
61
    public function getSchoolToDiv($id)
62
    {
63
        global $xoopsUser, $xoopsDB, $arr7;
64
        $msg    = [];
65
        $sql    = 'SELECT school_type,school,schoolstart,schoolstop FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
66
        $result = $xoopsDB->query($sql);
67
        while ($row = $xoopsDB->fetchArray($result)) {
68
            $school_type = unserialize($row['school_type']);
69
            $school      = unserialize($row['school']);
70
            $schoolstart = unserialize($row['schoolstart']);
71
            $schoolstop  = unserialize($row['schoolstop']);
72
        }
73
        $start = 0;
74
        $end   = count($school_type) - 1;
75
        while ($start <= $end) {
76
            $msg[$start]['school_type'] = $school_type[$start];
77
            $msg[$start]['school']      = $arr7[$school[$start]];
78
            $msg[$start]['schoolstart'] = $schoolstart[$start];
79
            $msg[$start]['schoolstop']  = $schoolstop[$start];
80
            $start++;
81
        }
82
        return $msg;
83
    }
84
85
    /**
86
     * getScreennamesToDiv function
87
     * @param int $id
88
     * @return array
89
     */
90
    public function getScreennamesToDiv($id)
91
    {
92
        global $xoopsUser, $xoopsDB, $arr06;
93
        $msg    = [];
94
        $sql    = 'SELECT screenname_type,screenname FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid ='" . $id . "'";
95
        $result = $xoopsDB->query($sql);
96
        while ($row = $xoopsDB->fetchArray($result)) {
97
            $screenname_type = unserialize($row['screenname_type']);
98
            $screenname      = unserialize($row['screenname']);
99
        }
100
        $start = 0;
101
        $end   = count($screenname_type) - 1;
102
        while ($start <= $end) {
103
            $msg[$start]['screenname']      = $screenname_type[$start];
104
            $msg[$start]['screenname_type'] = $arr06[$screenname[$start]];
105
            $msg[$start]['link']            = "<span class='smallworld_website'>" . Smallworld_sociallinks($screenname[$start], $msg[$start]['screenname']);
106
            ++$start;
107
        }
108
        return $msg;
109
    }
110
111
    /**
112
     * getVar function
113
     * @param int    $id
114
     * @param string $var
115
     * @return array|int
116
     */
117
    public function getVar($id, $var)
118
    {
119
        global $xoopsUser, $xoopsDB;
120
        $sql    = 'SELECT ' . $var . ' FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $id . "'";
121
        $result = $xoopsDB->queryF($sql);
122
        if ($xoopsDB->getRowsNum($result) < 1) {
123
            return 0;//_SMALLWORLD_REPLY_NOTSPECIFIED;
124
        }
125
        while ($row = $xoopsDB->fetchArray($result)) {
126
            $msg[$var] = $row[$var];
127
        }
128
        return $msg[$var];
129
    }
130
131
    /**
132
     * updateSingleValue function
133
     * @param string $table
134
     * @param int    $userid
135
     * @param string $field
136
     * @param int    $value
137
     * @return void
138
     */
139
    public function updateSingleValue($table, $userid, $field, $value)
140
    {
141
        global $xoopsUser, $xoopsDB;
142
        $myts   = \MyTextSanitizer::getInstance();
143
        $sql    = 'UPDATE ' . $xoopsDB->prefix($table) . ' SET ' . $field . "='" . $myts->addSlashes($value) . "' WHERE userid='" . (int)$userid . "'";
144
        $result = $xoopsDB->queryF($sql);
145
    }
146
147
    /**
148
     * saveImage function
149
     * @param $values
150
     * @return void
151
     */
152
    public function saveImage($values)
153
    {
154
        global $xoopsUser, $xoopsDB;
155
        $myts   = \MyTextSanitizer::getInstance();
156
        $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_images') . ' VALUES (' . $values . ')';
157
        $result = $xoopsDB->queryF($sql);
158
    }
159
160
    /**
161
     * DeleteImage function
162
     * @param int    $userid
163
     * @param string $imagename
164
     * @return void
165
     */
166
    public function DeleteImage($userid, $imagename)
167
    {
168
        global $xoopsUser, $xoopsDB;
169
        $myts   = \MyTextSanitizer::getInstance();
170
        $sql    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE imgname = '" . stripslashes($imagename) . "' AND userid='" . $userid . "'";
171
        $result = $xoopsDB->queryF($sql);
172
    }
173
174
    /**
175
     * handlePosts function
176
     * @return void
177
     */
178
    public function handlePosts()
179
    {
180
        global $xoopsUser, $xoopsDB;
181
        $myts = \MyTextSanitizer::getInstance();
182
        $uid  = $xoopsUser->getVar('uid');
183
        $user = new \XoopsUser($uid);
184
        $img  = new SmallWorldImages;
185
        if ('' == $this->getVar($uid, 'userimage')) {
186
            $avatar = $user->user_avatar();
187
        } else {
188
            $avatar = $this->getVar($uid, 'userimage');
189
        }
190
191
        if ('2' != $_POST['relationship']) {
192
            $partner = Smallworld_sanitize($_POST['partner']);
193
        } else {
194
            $partner = '';
195
        }
196
197
        $regdate                = time();
198
        $username               = $user->uname();
199
        $realname               = Smallworld_sanitize($_POST['realname']);
200
        $gender                 = isset($_POST['gender']) ? $_POST['gender'] : '';
201
        $intingender            = isset($_POST['intingender']) ? Smallworld_sanitize(serialize($_POST['intingender'])) : Smallworld_sanitize(serialize([0 => '3']));
202
        $relationship           = Smallworld_sanitize($_POST['relationship']);
203
        $searchrelat            = isset($_POST['searchrelat']) ? Smallworld_sanitize(serialize($_POST['searchrelat'])) : Smallworld_sanitize(serialize([0 => '0']));
204
        $birthday               = Smallworld_sanitize(Smallworld_euroToUsDate($_POST['birthday']));
205
        $birthplace             = Smallworld_sanitize($_POST['birthplace']);
206
        $birthplace_lat         = Smallworld_sanitize($_POST['birthplace_lat']);
207
        $birthplace_lng         = Smallworld_sanitize($_POST['birthplace_lng']);
208
        $birthplace_country     = Smallworld_sanitize($_POST['birthplace_country']);
209
        $birthplace_country_img = isset($_POST['birthplace_country_img']) ? Smallworld_sanitize($_POST['birthplace_country_img']) : '';
210
        $politic                = Smallworld_sanitize($_POST['politic']);
211
        $religion               = Smallworld_sanitize($_POST['religion']);
212
        $emailtype              = Smallworld_sanitize(serialize($_POST['emailtype']));
213
        $screenname_type        = Smallworld_sanitize(serialize($_POST['screenname_type']));
214
        $screenname             = Smallworld_sanitize(serialize($_POST['screenname']));
215
        $mobile                 = Smallworld_sanitize($_POST['mobile']);
216
        $phone                  = Smallworld_sanitize($_POST['phone']);
217
        $adress                 = Smallworld_sanitize($_POST['adress']);
218
        $present_city           = Smallworld_sanitize($_POST['present_city']);
219
        $present_lat            = Smallworld_sanitize($_POST['present_lat']);
220
        $present_lng            = Smallworld_sanitize($_POST['present_lng']);
221
        $present_country        = Smallworld_sanitize($_POST['present_country']);
222
        $present_country_img    = isset($_POST['present_country_img']) ? Smallworld_sanitize($_POST['present_country_img']) : '';
223
        $website                = Smallworld_sanitize($_POST['website']);
224
        $interests              = Smallworld_sanitize($_POST['interests']);
225
        $music                  = Smallworld_sanitize($_POST['music']);
226
        $tvshow                 = Smallworld_sanitize($_POST['tvshow']);
227
        $movie                  = Smallworld_sanitize($_POST['movie']);
228
        $books                  = Smallworld_sanitize($_POST['books']);
229
        $aboutme                = Smallworld_sanitize($_POST['aboutme']);
230
        $school_type            = Smallworld_sanitize(serialize($_POST['school_type']));
231
        $school                 = Smallworld_sanitize(serialize($_POST['school']));
232
        $schoolstart            = Smallworld_sanitize(serialize($_POST['schoolstart']));
233
        $schoolstop             = Smallworld_sanitize(serialize($_POST['schoolstop']));
234
        $jobemployer            = Smallworld_sanitize(serialize($_POST['employer']));
235
        $jobposition            = Smallworld_sanitize(serialize($_POST['position']));
236
        $jobstart               = Smallworld_sanitize(serialize(Smallworld_YearOfArray($_POST['jobstart'])));
237
        $jobstop                = Smallworld_sanitize(serialize(Smallworld_YearOfArray($_POST['jobstop'])));
238
        $jobdescription         = Smallworld_sanitize(serialize($_POST['description']));
239
240
        $sql = '';
241
242
        if ('edit' === $_POST['function']) {
243
            // Update all values in user_table
244
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_user') . ' SET ';
245
            $sql    .= "realname = '" . $realname . "', username= '" . $username . "', userimage = '" . $avatar . "', gender = '" . $gender . "',";
246
            $sql    .= "intingender = '" . $intingender . "',relationship = '" . $relationship . "', partner = '" . $partner . "', searchrelat = '" . $searchrelat . "',";
247
            $sql    .= "birthday = '" . $birthday . "',birthplace = '" . $birthplace . "',birthplace_lat = '" . (float)$birthplace_lat . "',";
248
            $sql    .= "birthplace_lng = '" . (float)$birthplace_lng . "',birthplace_country = '" . $birthplace_country . "',politic = '" . $politic . "',";
249
            $sql    .= "religion = '" . $religion . "',emailtype = '" . $emailtype . "',screenname_type = '" . $screenname_type . "',";
250
            $sql    .= "screenname = '" . $screenname . "',mobile = '" . (float)$mobile . "',phone = '" . (float)$phone . "',adress = '" . $adress . "',";
251
            $sql    .= "present_city = '" . $present_city . "',present_lat = '" . (float)$present_lat . "',present_lng = '" . (float)$present_lng . "',";
252
            $sql    .= "present_country = '" . $present_country . "',website = '" . $website . "',interests = '" . $interests . "',";
253
            $sql    .= "music = '" . $music . "',tvshow = '" . $tvshow . "',movie = '" . $movie . "',";
254
            $sql    .= "books = '" . $books . "',aboutme = '" . $aboutme . "',school_type = '" . $school_type . "',";
255
            $sql    .= "school = '" . $school . "', schoolstart = '" . $schoolstart . "',schoolstop = '" . $schoolstop . "',";
256
            $sql    .= "employer = '" . $jobemployer . "', position = '" . $jobposition . "',jobstart = '" . $jobstart . "',";
257
            $sql    .= "jobstop = '" . $jobstop . "', description = '" . $jobdescription . "' ";
258
            $sql    .= "WHERE userid ='" . (int)$uid . "'";
259
            $result = $xoopsDB->queryF($sql);
260
            if (false === $result) {
261
                die('SQL error:' . $sql . '');
262
            }
263
264
            $this->EditAdmins($uid, $realname, $avatar);
265
            $img->createAlbum($uid);
266
        }
267
268
        if ('save' === $_POST['function']) {
269
            $sql    = 'INSERT INTO '
270
                      . $xoopsDB->prefix('smallworld_user')
271
                      . ' (userid, regdate, username, userimage, realname, gender, intingender, relationship, partner, searchrelat, birthday, birthplace, birthplace_lat, birthplace_lng, birthplace_country, politic, religion, emailtype, screenname_type, screenname, mobile, phone, adress, present_city, present_lat, present_lng, present_country, website, interests, music, tvshow, movie, books, aboutme, school_type, school, schoolstart, schoolstop, employer, position, jobstart, jobstop, description, friends, followers, admin_flag) ';
272
            $sql    .= "VALUES ('" . (int)$uid . "', '" . $regdate . "', '" . $username . "', '" . $avatar . "', '" . $realname . "', '" . $gender . "', '" . $intingender . "', '" . $relationship . "', '" . $partner . "', '" . $searchrelat . "','";
273
            $sql    .= $birthday . "', '" . $birthplace . "', '" . (float)$birthplace_lat . "', '" . (float)$birthplace_lng . "', '" . $birthplace_country . "', '" . $politic . "', '" . $religion . "','";
274
            $sql    .= $emailtype . "', '" . $screenname_type . "', '" . $screenname . "', '" . (float)$mobile . "', '" . (float)$phone . "', '" . $adress . "', '" . $present_city . "', '" . (float)$present_lat . "','";
275
            $sql    .= (float)$present_lng . "', '" . $present_country . "', '" . $website . "', '" . $interests . "', '" . $music . "', '" . $tvshow . "', '" . $movie . "', '" . $books . "', '" . $aboutme . "', '";
276
            $sql    .= $school_type . "', '" . $school . "', '" . $schoolstart . "', '" . $schoolstop . "', '" . $jobemployer . "', '" . $jobposition . "', '" . $jobstart . "', '" . $jobstop . "', '" . $jobdescription . "', ";
277
            $sql    .= "'0', '0', '0')";
278
            $result = $xoopsDB->queryF($sql);
279
            if (false === $result) {
280
                die('SQL error:' . $sql . '');
281
            }
282
            $this->SetAdmins($uid, $username, $realname, $avatar);
283
            $img->createAlbum($uid);
284
        }
285
    }
286
287
    /**
288
     * SetAdmins function
289
     * @param int    $userID
290
     * @param string $username
291
     * @param string $realname
292
     * @param mixed  $avatar
293
     * @return void
294
     */
295
    public function SetAdmins($userID, $username, $realname, $avatar)
296
    {
297
        global $xoopsDB, $xoopsUser;
298
        $ip     = $_SERVER['REMOTE_ADDR'];
299
        $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_admin') . ' (userid,username, realname,userimage,ip,complaint,inspect_start, ' . "inspect_stop) VALUES ('" . $userID . "', '" . $username . "','" . $realname . "', '" . $avatar . "','" . $ip . "','0','0','0')";
300
        $result = $xoopsDB->queryF($sql);
301
    }
302
303
    /**
304
     * EditAdmins function
305
     * @param int    $userID
306
     * @param string $realname
307
     * @param mixed  $avatar
308
     * @return void
309
     */
310
    public function EditAdmins($userID, $realname, $avatar)
311
    {
312
        global $xoopsDB;
313
        $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . " SET realname = '" . $realname . "', userimage = '" . $avatar . "' WHERE userid = '" . (int)$userID . "'";
314
        $result = $xoopsDB->queryF($sql);
315
    }
316
317
    /**
318
     * alreadycomplaint function
319
     * - Check if user has already sent complaint
320
     * @param string $msg
321
     * @param int    $by
322
     * @param int    $against
323
     * @return int
324
     */
325
    public function alreadycomplaint($msg, $by, $against)
326
    {
327
        global $xoopsDB;
328
        $sql    = 'SELECT * FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE byuser_id = '" . (int)$by . "' AND owner = '" . (int)$against . "' AND link = '" . addslashes($msg) . "'";
329
        $result = $xoopsDB->queryF($sql);
330
        $i      = $xoopsDB->getRowsNum($result);
331
        if ($i < 1) {
332
            $query  = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_complaints') . " (complaint_id,link,byuser_id,owner) VALUES ('', '" . addslashes($msg) . "', '" . (int)$by . "', '" . (int)$against . "')";
333
            $result = $xoopsDB->queryF($query);
334
        } else {
335
        }
336
        return $i;
337
    }
338
339
    /**
340
     * updateComplaint function
341
     * @param int $userID
342
     * @return void
343
     */
344
    public function updateComplaint($userID)
345
    {
346
        global $xoopsDB;
347
        $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . ' SET complaint = complaint + 1 ' . "WHERE userid = '" . (int)$userID . "'";
348
        $result = $xoopsDB->queryF($sql);
349
    }
350
351
    /**
352
     * updateInspection function
353
     * @param int $userID
354
     * @param int $start
355
     * @param int stop
356
     * @return void
357
     */
358
    public function updateInspection($userID, $start, $stop)
359
    {
360
        global $xoopsDB;
361
        $newstop = $time() + $stop;
362
        $sql     = 'UPDATE ' . $xoopsDB->prefix('smallworld_admin') . " SET inspect_start = '" . $time() . "', instect_stop = '" . $newstop . "' WHERE userid ='" . (int)$userID . "'";
363
        $result  = $xoopsDB->queryF($sql);
364
    }
365
366
    /**
367
     * handleImageEdit function
368
     * @return void
369
     */
370
    public function handleImageEdit()
371
    {
372
        global $xoopsDB;
373
        for ($i = 0, $iMax = count($_POST['id']); $i < $iMax; ++$i) {
374
            $id     = (int)$_POST['id'][$i];
375
            $desc   = $_POST['imgdesc'][$i];
376
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_images') . " SET `desc` = '" . addslashes($desc) . "' WHERE `id`='" . $id . "'";
377
            $result = $xoopsDB->queryF($sql);
378
        }
379
    }
380
381
    /**
382
     * updateInspection function
383
     * - insert aplication for friendship into db or delete if denied
384
     * @param int $status
385
     * @param int $friendid
386
     * @param int $userid
387
     * @return void
388
     */
389
    public function toogleFriendInvite($status, $friendid, $userid)
390
    {
391
        global $xoopsDB;
392
        if (0 == $status) {
393
            $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_friends') . " (me,you,status,date) VALUES ('" . $userid . "', '" . $friendid . "', '1', UNIX_TIMESTAMP())";
394
            $result = $xoopsDB->queryF($sql);
395
        }
396
        if ($status > 0) {
397
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$friendid . "' AND you = '" . (int)$userid . "'";
398
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$userid . "' AND you = '" . (int)$friendid . "'";
399
            $result  = $xoopsDB->queryF($sql);
400
            $result2 = $xoopsDB->queryF($sql2);
401
402
            // Since friendship is canceled also following is deleted
403
            $this->toogleFollow(1, $userid, $friendid);
404
        }
405
    }
406
407
    /**
408
     * toogleFollow function
409
     * - Insert following to db or delete if requested
410
     * @param int $following
411
     * @param int $myUid
412
     * @param int $friend
413
     * @return void
414
     */
415
    public function toogleFollow($following, $myUid, $friend)
416
    {
417
        global $xoopsDB;
418
        if (0 == $following) {
419
            $sql    = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_followers') . " (me,you,status,date) VALUES ('" . $myUid . "', '" . $friend . "', '1', UNIX_TIMESTAMP())";
420
            $result = $xoopsDB->queryF($sql);
421
        }
422
        if ($following > 0) {
423
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE you = '" . (int)$friend . "'";
424
            $sql     .= " AND me = '" . (int)$myUid . "'";
425
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . (int)$friend . "'";
426
            $sql2    .= " AND you = '" . (int)$myUid . "'";
427
            $result2 = $xoopsDB->queryF($sql2);
428
        }
429
    }
430
431
    /**
432
     * SetFriendshitStat function
433
     * @param int $stat
434
     * @param int $myUid
435
     * @param int $friend
436
     * @return void
437
     */
438
    public function SetFriendshitStat($stat, $myUid, $friend)
439
    {
440
        global $xoopsDB;
441
        if (1 == $stat) {
442
            $sql    = 'UPDATE ' . $xoopsDB->prefix('smallworld_friends') . " SET status = '2' WHERE `me` = '" . $friend . "' AND `you` = '" . $myUid . "'";
443
            $result = $xoopsDB->queryF($sql);
444
            $query  = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_friends') . " (me,you,status,date) VALUES ('" . $myUid . "', '" . $friend . "', '2', UNIX_TIMESTAMP())";
445
            $result = $xoopsDB->queryF($query);
446
        }
447
        if ($stat < 0) {
448
            $sql     = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . (int)$friend . "' AND you = '" . (int)$myUid . "'";
449
            $sql2    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE you = '" . (int)$friend . "' AND me = '" . (int)$myUid . "'";
450
            $result  = $xoopsDB->queryF($sql);
451
            $result2 = $xoopsDB->queryF($sql2);
452
        }
453
    }
454
455
    /**
456
     * deleteWallMsg function
457
     * @param int $id
458
     * @param int $smallworld_msg_id
459
     * @return true
460
     */
461
    public function deleteWallMsg($id, $smallworld_msg_id)
462
    {
463
        global $xoopsDB;
464
        $query   = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE msg_id = '" . $smallworld_msg_id . "'";
465
        $result  = $xoopsDB->queryF($query);
466
        $query2  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE msg_id_fk = '" . $smallworld_msg_id . "'";
467
        $result2 = $xoopsDB->queryF($query2);
468
        //delete votes
469
        $query3  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE msg_id = '" . $smallworld_msg_id . "'";
470
        $result3 = $xoopsDB->queryF($query3);
471
        return true;
472
    }
473
474
    /**
475
     * deleteWallComment function
476
     * - Delete Comments
477
     * @param int $smallworld_com_id
478
     * @return true
479
     */
480
    public function deleteWallComment($smallworld_com_id)
481
    {
482
        global $xoopsDB;
483
        $query   = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE com_id = '" . $smallworld_com_id . "'";
484
        $result  = $xoopsDB->queryF($query);
485
        $query2  = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE com_id = '" . $smallworld_com_id . "'";
486
        $result2 = $xoopsDB->queryF($query2);
487
        return true;
488
    }
489
490
    /**
491
     * CountUsersRates function
492
     * - Delete Comments
493
     * @param int    $userid
494
     * @param string $val
495
     * @return int
496
     */
497
    public function CountUsersRates($userid, $val)
498
    {
499
        global $xoopsUser, $xoopsDB;
500
        $query  = 'Select SUM(' . $val . ') as sum from ' . $xoopsDB->prefix('smallworld_vote') . " where owner = '" . $userid . "'";
501
        $result = $xoopsDB->queryF($query);
502
        while ($row = $xoopsDB->fetchArray($result)) {
503
            $sum = $row['sum'];
504
        }
505
        if ('' == $sum) {
506
            $sum = '0';
507
        }
508
        return $sum;
509
    }
510
511
    /**
512
     * deleteAccount function
513
     * - Delete user account and associate rows across tables
514
     * @param int $userid
515
     * @return string
516
     */
517
    public function deleteAccount($userid)
518
    {
519
        global $xoopsDB, $xoopsUser;
520
        $user     = new \XoopsUser($userid);
521
        $username = $user->uname();
522
        $sql01    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_admin') . " WHERE userid = '" . $userid . "'";
523
        $sql02    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_comments') . " WHERE uid_fk = '" . $userid . "'";
524
        $sql03    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_followers') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'";
525
        $sql04    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_friends') . " WHERE me = '" . $userid . "' OR you = '" . $userid . "'";
526
        $sql05    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_images') . " WHERE userid = '" . $userid . "'";
527
        $sql06    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_messages') . " WHERE uid_fk = '" . $userid . "'";
528
        $sql07    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_user') . " WHERE userid = '" . $userid . "'";
529
        $sql08    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_vote') . " WHERE user_id = '" . $userid . "'";
530
        $sql09    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_complaints') . " WHERE owner = '" . $userid . "' OR byuser_id = '" . $userid . "'";
531
        $sql10    = 'DELETE FROM ' . $xoopsDB->prefix('smallworld_settings') . " WHERE userid = '" . $userid . "'";
532
533
        $result01 = $xoopsDB->queryF($sql01);
534
        $result02 = $xoopsDB->queryF($sql02);
535
        $result03 = $xoopsDB->queryF($sql03);
536
        $result04 = $xoopsDB->queryF($sql04);
537
        $result05 = $xoopsDB->queryF($sql05);
538
        $result06 = $xoopsDB->queryF($sql06);
539
        $result07 = $xoopsDB->queryF($sql07);
540
        $result08 = $xoopsDB->queryF($sql08);
541
        $result09 = $xoopsDB->queryF($sql09);
542
        $result10 = $xoopsDB->queryF($sql10);
543
        // Remove picture dir
544
        $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/';
545
        $this->smallworld_remDir($userid, $dirname, $empty = false);
546
        echo $username . _AM_SMALLWORLD_ADMIN_USERDELETEDALERT;
547
    }
548
549
    /**
550
     * SmallworldDeleteDirectory function
551
     * - Delete images from users on delete
552
     * @param int $userid
553
     * @return true
554
     */
555
    public function SmallworldDeleteDirectory($userid)
556
    {
557
        $dirname = XOOPS_ROOT_PATH . '/uploads/albums_smallworld' . '/' . $userid . '/';
558
        if (is_dir($dirname)) {
559
            $dir_handle = opendir($dirname);
560
        }
561
        if (!$dir_handle) {
562
            return false;
563
        }
564
        while ($file = readdir($dir_handle)) {
565
            if ('.' !== $file && '..' !== $file) {
566
                if (!is_dir($dirname . '/' . $file)) {
567
                    unlink($dirname . '/' . $file);
568
                } else {
569
                    $this->SmallworldDeleteDirectory($dirname . '/' . $file);
570
                }
571
            }
572
        }
573
        closedir($dir_handle);
574
        rmdir($dirname);
575
        return true;
576
    }
577
578
    /**
579
     * smallworld_remDir function
580
     * - Remove user image dir in uploads.
581
     * @param int    $userid
582
     * @param string|bool $directory
583
     * @param bool|int $empty
584
     * @return true
585
     */
586
    public function smallworld_remDir($userid, $directory, $empty = false)
587
    {
588
        if ('' != $userid) {
589
            if ('/' === substr($directory, -1)) {
590
                $directory = substr($directory, 0, -1);
591
            }
592
593
            if (!file_exists($directory) || !is_dir($directory)) {
594
                return false;
595
            } elseif (!is_readable($directory)) {
596
                return false;
597
            } else {
598
                $directoryHandle = opendir($directory);
599
                while ($contents = readdir($directoryHandle)) {
600
                    if ('.' !== $contents && '..' !== $contents) {
601
                        $path = $directory . '/' . $contents;
602
                        if (is_dir($path)) {
603
                            $this->smallworld_remDir($userid, $path);
604
                        } else {
605
                            unlink($path);
606
                        }
607
                    }
608
                }
609
                closedir($directoryHandle);
610
                if (false === $empty) {
611
                    if (!rmdir($directory)) {
612
                        return false;
613
                    }
614
                }
615
                return true;
616
            }
617
        }
618
    }
619
620
    /**
621
     * Update private settings
622
     * @param int id ($userid)
623
     * @param string posts (serialized values)
624
     * @return void
625
     */
626
    public function saveSettings($id, $posts)
627
    {
628
        global $xoopsDB;
629
        $sql    = 'SELECT value FROM ' . $xoopsDB->prefix('smallworld_settings') . ' WHERE userid = ' . (int)$id . '';
630
        $result = $xoopsDB->queryF($sql);
631
        $i      = $xoopsDB->getRowsNum($result);
632
        if ($i > 0) {
633
            $sql = 'UPDATE ' . $xoopsDB->prefix('smallworld_settings') . " SET value = '" . $posts . "' WHERE userid = " . (int)$id . '';
634
        } else {
635
            $sql = 'INSERT INTO ' . $xoopsDB->prefix('smallworld_settings') . " (userid,value) VALUES ('" . $id . "', '" . $posts . "')";
636
        }
637
        $result = $xoopsDB->queryF($sql);
638
        $this->GetSettings($id);
639
    }
640
641
    /**
642
     * Retrieve private settings
643
     * @param int userid
644
     * @return serialized|string
645
     */
646
    public function GetSettings($userid)
647
    {
648
        global $xoopsDB;
649
        $sql    = 'SELECT value FROM ' . $xoopsDB->prefix('smallworld_settings') . ' WHERE userid = ' . (int)$userid . '';
650
        $result = $xoopsDB->queryF($sql);
651
        $i      = $xoopsDB->getRowsNum($result);
652
        if ($i < 1) {
653
            $posts = serialize([
654
                                   'posts'    => 0,
655
                                   'comments' => 0,
656
                                   'notify'   => 1
657
                               ]);
658
            $this->saveSettings($userid, $posts);
659
            $this->GetSettings($userid);
660
        } else {
661
            while ($row = $xoopsDB->fetchArray($result)) {
662
                $data = $row['value'];
663
            }
664
            return json_encode(unserialize(stripslashes($data)));
665
        }
666
    }
667
}
668