Passed
Push — master ( 290aa0...437a59 )
by Michael
05:22 queued 02:53
created

index.php (3 issues)

Labels
Severity
1
<?php
2
//
3
//  ------------------------------------------------------------------------ //
4
//             XF Guestbook                                                  //
5
// ------------------------------------------------------------------------- //
6
//  This program is free software; you can redistribute it and/or modify     //
7
//  it under the terms of the GNU General Public License as published by     //
8
//  the Free Software Foundation; either version 2 of the License, or        //
9
//  (at your option) any later version.                                      //
10
//                                                                           //
11
//  You may not change or alter any portion of this comment or credits       //
12
//  of supporting developers from this source code or any supporting         //
13
//  source code which is considered copyrighted (c) material of the          //
14
//  original comment or credit authors.                                      //
15
//                                                                           //
16
//  This program is distributed in the hope that it will be useful,          //
17
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
18
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
19
//  GNU General Public License for more details.                             //
20
//                                                                           //
21
//  You should have received a copy of the GNU General Public License        //
22
//  along with this program; if not, write metalslugto the Free Software              //
23
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
24
//  ------------------------------------------------------------------------ //
25
26
use XoopsModules\Xfguestbook;
27
28
require_once __DIR__ . '/header.php';
29
30
//** @var Xfguestbook\Helper $helper */
31
$helper = Xfguestbook\Helper::getInstance();
32
33
if (\Xmf\Request::hasVar('msg_id', 'GET')) {
34
    $msg_id = \Xmf\Request::getInt('msg_id', 0, 'GET');
35
} else {
36
    $msg_id = \Xmf\Request::getInt('msg_id', 0, 'POST');
37
}
38
39
if (\Xmf\Request::hasVar('op', 'GET')) {
40
    $op = $_GET['op'];
41
} elseif (\Xmf\Request::hasVar('op', 'POST')) {
42
    $op = $_POST['op'];
43
} else {
44
    $op = 'show_all';
45
}
46
47
$msgHandler = $helper->getHandler('Message');
48
49
//Admin or not
50
$xoopsUser ? $adminview = $xoopsUser->isAdmin() : $adminview = 0;
51
52
/**
53
 * @param $msg_id
54
 */
55
function delete($msg_id)
56
{
57
    global $msgHandler, $xoopsModule;
58
    $ok = \Xmf\Request::getInt('ok', 0, 'POST');
59
    if (1 == $ok) {
60
        $msg        = $msgHandler->get($msg_id);
61
        $del_msg_ok = $msgHandler->delete($msg);
62
        $filename   = $msg->getVar('photo');
63
        if ('' !== $filename) {
64
            $filename = XOOPS_UPLOAD_PATH . '/' . $xoopsModule->getVar('dirname') . '/' . $filename;
65
            unlink($filename);
66
        }
67
        if ($del_msg_ok) {
68
            $messagesent = MD_XFGUESTBOOK_MSGDELETED;
69
        } else {
70
            $messagesent = MD_XFGUESTBOOK_ERRORDEL;
71
        }
72
        redirect_header('index.php', 2, $messagesent);
73
    } else {
74
        xoops_confirm(['op' => 'delete', 'msg_id' => $msg_id, 'ok' => 1], 'index.php', _DELETE);
75
    }
76
}
77
78
/**
79
 * @param $msg_id
80
 */
81
function approve($msg_id)
82
{
83
    global $msgHandler;
84
85
    $msg = $msgHandler->get($msg_id);
86
    $msg->setVar('moderate', 0);
87
    if (!$msgHandler->insert($msg)) {
88
        $messagesent = MD_XFGUESTBOOK_ERRORVALID;
89
    } else {
90
        $messagesent = MD_XFGUESTBOOK_VALIDATE;
91
    }
92
    redirect_header('index.php?op=show_waiting', 2, $messagesent);
93
}
94
95
/**
96
 * @param $msg
97
 */
98
function xfgb_getmsg($msg)
99
{
100
    global $nbmsg, $xoopsModule, $xoopsUser,  $xoopsTpl, $xoopsConfig, $options, $opt, $xoopsDB;
101
    /** @var Xfguestbook\Helper $helper */
102
    $helper = Xfguestbook\Helper::getInstance();
103
104
    $arr_country = Xfguestbook\Utility::getAllCountry();
105
    $xoopsTpl->assign('display_msg', true);
106
    foreach ($msg as $onemsg) {
107
        if ($poster = Xfguestbook\Utility::get_user_data($onemsg->getVar('user_id'))) {
108
            $a_msg =& $poster;
109
        } else {
110
            $a_msg             = [];
111
            $a_msg['poster']   = $onemsg->getVar('uname');
112
            $a_msg['rank']     = '';
113
            $a_msg['rank_img'] = '';
114
            $a_msg['avatar']   = '';
115
        }
116
        $memberHandler = xoops_getHandler('member');
117
        $user          = $memberHandler->getUser($onemsg->getVar('user_id'));
0 ignored issues
show
The method getUser() does not exist on XoopsObjectHandler. It seems like you code against a sub-type of XoopsObjectHandler such as XoopsAvatarHandler or XoopsPersistableObjectHandler. ( Ignorable by Annotation )

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

117
        /** @scrutinizer ignore-call */ 
118
        $user          = $memberHandler->getUser($onemsg->getVar('user_id'));
Loading history...
118
        // email
119
        if ($helper->getConfig('showemail')
120
            || ($onemsg->getVar('email')
121
                && ((1 == $user->getVar('user_viewemail')
122
                     || 0 == $onemsg->getVar('user_id'))
123
                    && is_object($xoopsUser)))) {
124
            $a_msg['email'] = "<a href=\"javascript:openWithSelfMain('" . XOOPS_URL . '/modules/xfguestbook/contact.php?msg_id=' . $onemsg->getVar('msg_id') . '\', \'contact\', 600, 450);"><img src="' . XOOPS_URL . '/images/icons/email.gif" alt="' . _SENDEMAILTO . '"></a>';
125
        }
126
        // url
127
        if ($onemsg->getVar('url')) {
128
            $a_msg['url'] = '<a href="' . $onemsg->getVar('url') . '" target="_blank"><img src="' . XOOPS_URL . '/images/icons/www.gif" alt="' . _VISITWEBSITE . '"></a>';
129
        }
130
        // gender
131
        if ('' !== $onemsg->getVar('gender')) {
132
            $a_msg['gender'] = '<a href="index.php?op=show_gender&param=' . $onemsg->getVar('gender') . '"><img src="assets/images/' . $onemsg->getVar('gender') . '.gif"</a>';
133
        }
134
        // flag
135
        $country_name = '';
136
        if ('' !== $onemsg->getVar('country')) {
137
            if ('other' !== $onemsg->getVar('country')) {
138
                $flag = XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->dirname() . '/assets/images/flags/' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '.gif';
139
                if (array_key_exists($onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country'), $arr_country)) {
140
                    $country_name = $arr_country[$onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country')];
141
                }
142
                if (file_exists($flag)) {
143
                    $a_msg['country'] = '<img src="' . XOOPS_URL . '/modules/xfguestbook/assets/images/flags/' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '.gif" alt="' . $country_name . '">';
144
                } else {
145
                    $a_msg['country'] = $country_name;
146
                }
147
                $a_msg['country'] = '<a href="index.php?op=show_country&param=' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '">' . $a_msg['country'] . '</a>';
148
            } else {
149
                $a_msg['country'] = $onemsg->getVar('other');
150
            }
151
        }
152
        $a_msg['msg_id']  = $onemsg->getVar('msg_id');
153
        $a_msg['i']       = $nbmsg;
154
        $a_msg['title']   = $onemsg->getVar('title');
155
        $a_msg['date']    = formatTimestamp($onemsg->getVar('post_time'), 's');
156
        $a_msg['message'] = $onemsg->getVar('message');
157
        if (1 == $options['opt_url']) {
158
            $a_msg['message'] = str_replace('target="_blank"', 'target="_blank" rel="nofollow"', $a_msg['message']);
159
        }
160
        $a_msg['note_msg']  = $onemsg->getVar('note');
161
        $a_msg['poster_ip'] = $onemsg->getVar('poster_ip');
162
        $a_msg['moderate']  = $onemsg->getVar('moderate');
163
        if (null !== $country_name) {
164
            $a_msg['local'] = '<a href="index.php?op=show_country&param=' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '">' . $country_name . '</a>';
165
        }
166
        $a_msg['photo'] = $onemsg->getVar('photo');
167
        $xoopsTpl->append('msg', $a_msg);
168
        $nbmsg--;
169
    }
170
}
171
172
function xfgb_genderlist()
173
{
174
    global $options, $xoopsTpl,  $xoopsModule, $msgHandler;
175
    /** @var Xfguestbook\Helper $helper */
176
    $helper = Xfguestbook\Helper::getInstance();
177
    $criteria = new \Criteria('moderate', 0);
178
    $arr_msg  = $msgHandler->countMsgByGender($criteria);
179
    $i        = 0;
180
    $gender   = [];
181
    foreach ($arr_msg as $k => $v) {
182
        if ('M' === $k) {
183
            $gender[$i] = MD_XFGUESTBOOK_MALES . '<br>';
184
            $gender[$i] .= '<img src="assets/images/M.gif" alt="' . MD_XFGUESTBOOK_MALES . '"><br><br>';
185
            $gender[$i] .= '<a href="index.php?op=show_gender&param=M">' . $v . MD_XFGUESTBOOK_MESSAGES . '</a>';
186
        } elseif ('F' === $k) {
187
            $gender[$i] = MD_XFGUESTBOOK_FEMALES . '<br>';
188
            $gender[$i] .= '<img src="assets/images/F.gif" alt="' . MD_XFGUESTBOOK_FEMALES . '"><br><br>';
189
            $gender[$i] .= '<a href="index.php?op=show_gender&param=F">' . $v . MD_XFGUESTBOOK_MESSAGES . '</a>';
190
        } else {
191
            $gender[$i] = MD_XFGUESTBOOK_UNKNOW2 . '<br>';
192
            $gender[$i] .= '<img src="assets/images/U.gif"><br><br>';
193
            $gender[$i] .= $v . MD_XFGUESTBOOK_MESSAGES;
194
        }
195
        $i++;
196
    }
197
    $xoopsTpl->assign('gender', $gender);
198
    $xoopsTpl->assign('display_gender', $options['opt_gender']);
199
}
200
201
// end functions
202
203
// if op = show_***, functions needed
204
//if (substr($op, 0, 4) == 'show') {
205
if (0 === strncmp($op, 'show', 4)) {
206
    $debut = \Xmf\Request::getInt('debut', 0, 'GET');
207
    $param = \Xmf\Request::getString('param', '', 'GET');
208
209
    $GLOBALS['xoopsOption']['template_main'] = 'xfguestbook_index.tpl';
210
    require_once XOOPS_ROOT_PATH . '/header.php';
211
    require_once XOOPS_ROOT_PATH . '/class/pagenav.php';
212
    require_once XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->dirname() . '/include/config.inc.php';
213
    $options = getOptions();
214
215
    $criteria = new \Criteria('moderate', 0);
216
    $nbmsg    = $msgHandler->countMsg($criteria);
0 ignored issues
show
The method countMsg() does not exist on XoopsObjectHandler. It seems like you code against a sub-type of XoopsObjectHandler such as XoopsPersistableObjectHandler. ( Ignorable by Annotation )

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

216
    /** @scrutinizer ignore-call */ 
217
    $nbmsg    = $msgHandler->countMsg($criteria);
Loading history...
217
218
    $xoopsTpl->assign('msg_message_count', sprintf(MD_XFGUESTBOOK_THEREIS, '<b>' . $nbmsg . '</b>'));
219
    $xoopsTpl->assign('msg_moderated', $helper->getConfig('moderate'));
220
    $xoopsTpl->assign('msg_lang_name', $xoopsConfig['language']);
221
    $xoopsTpl->assign('xoops_pagetitle', $xoopsModule->name() . ' -messages');
222
    if ($adminview) {
223
        $nbwait = $msgHandler->countMsg(new \Criteria('moderate', '1'));
224
        $xoopsTpl->assign('msg_moderate_text', sprintf(MD_XFGUESTBOOK_MODERATING, "<span class='fg2'><a href='" . XOOPS_URL . "/modules/xfguestbook/index.php?op=show_waiting'>" . $nbwait . '</a></span>'));
225
    }
226
}
227
228
switch ($op) {
229
    case 'delete':
230
        if ($adminview) {
231
            require_once XOOPS_ROOT_PATH . '/header.php';
232
            delete($msg_id);
233
        } else {
234
            redirect_header('index.php', 1, '');
235
        }
236
        break;
237
238
    case 'approve':
239
        if ($adminview) {
240
            require_once XOOPS_ROOT_PATH . '/header.php';
241
            approve($msg_id);
242
        } else {
243
            redirect_header('index.php', 1, '');
244
        }
245
        break;
246
247
    case 'show_stat':
248
        if ($options['opt_gender'] > 0) {
249
            xfgb_genderlist();
250
        }
251
        break;
252
253
    case 'show_waiting':
254
        $pagenav = new \XoopsPageNav($nbwait, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_waiting');
255
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
256
        $criteria = new \Criteria('moderate', 1);
257
        $criteria->setOrder('DESC');
258
        $criteria->setLimit($helper->getConfig('perpage'));
259
        $criteria->setStart($debut);
260
        $msg    = $msgHandler->getObjects($criteria);
0 ignored issues
show
The method getObjects() does not exist on XoopsObjectHandler. It seems like you code against a sub-type of said class. However, the method does not exist in XoopsRankHandler or XoUserHandler. Are you sure you never get one of those? ( Ignorable by Annotation )

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

260
        /** @scrutinizer ignore-call */ 
261
        $msg    = $msgHandler->getObjects($criteria);
Loading history...
261
        $nbwait -= $debut;
262
        $nbmsg  = $nbwait;
263
        xfgb_getmsg($msg);
264
        break;
265
266
    case 'show_one':
267
        if ($adminview) {
268
            $criteria = new \Criteria('msg_id', $msg_id);
269
        } else {
270
            $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
271
            $criteria->add(new \Criteria('msg_id', $msg_id));
272
        }
273
        $msg = $msgHandler->getObjects($criteria);
274
        xfgb_getmsg($msg);
275
        if ($options['opt_gender'] > 0) {
276
            xfgb_genderlist();
277
        }
278
        break;
279
280
    case 'show_country':
281
        list($flagdir, $country) = explode('/', $param);
282
        $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
283
        if ($flagdir == $helper->getConfig('flagdir')) {
284
            $criteria->add(new \Criteria('flagdir', $flagdir));
285
        }
286
        $criteria->add(new \Criteria('country', $country));
287
        $nbmsg   = $msgHandler->countMsg($criteria);
288
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_country&param=' . $param);
289
        $criteria->setOrder('DESC');
290
        $criteria->setLimit($helper->getConfig('perpage'));
291
        $criteria->setStart($debut);
292
        $msg   = $msgHandler->getObjects($criteria);
293
        $nbmsg -= $debut;
294
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
295
        xfgb_getmsg($msg);
296
        break;
297
298
    case 'show_gender':
299
        $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
300
        $criteria->add(new \Criteria('gender', $param));
301
        $nbmsg   = $msgHandler->countMsg($criteria);
302
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_gender&param=' . $param);
303
        $criteria->setOrder('DESC');
304
        $criteria->setLimit($helper->getConfig('perpage'));
305
        $criteria->setStart($debut);
306
        $msg   = $msgHandler->getObjects($criteria);
307
        $nbmsg -= $debut;
308
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
309
        xfgb_getmsg($msg);
310
        if ($options['opt_gender'] > 0) {
311
            xfgb_genderlist();
312
        }
313
        break;
314
315
    case 'show_all':
316
    default:
317
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', '');
318
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
319
        $criteria = new \Criteria('moderate', 0);
320
        $criteria->setOrder('DESC');
321
        $criteria->setLimit($helper->getConfig('perpage'));
322
        $criteria->setStart($debut);
323
        $msg   = $msgHandler->getObjects($criteria);
324
        $nbmsg -= $debut;
325
        xfgb_getmsg($msg);
326
        if ($options['opt_gender'] > 0) {
327
            xfgb_genderlist();
328
        }
329
        break;
330
331
    case 'cancel':
332
        $photos_dir     = XOOPS_UPLOAD_PATH . '/' . $xoopsModule->getVar('dirname');
333
        $nb_removed_tmp = Xfguestbook\Utility::clear_tmp_files($photos_dir);
334
        redirect_header('index.php', 0);
335
        break;
336
}
337
$sql = $xoopsDB->query('SELECT * FROM ' . $xoopsDB->prefix('xfguestbook_country') . ' ORDER BY country_name ASC');
338
339
while (false !== ($coun = $xoopsDB->fetchArray($sql))) {
340
    $sql2 = $xoopsDB->query('SELECT COUNT(country) tot FROM ' . $xoopsDB->prefix('xfguestbook_msg') . " WHERE country='" . $coun['country_code'] . '\'');
341
    list($tlocal) = $xoopsDB->fetchRow($sql2);
342
    $tlocal = $tlocal ?: '0';
343
    if ($tlocal > 0) {
344
        $opt['<a href="index.php?op=show_country&param=' . $helper->getConfig('flagdir') . '/' . $coun['country_code'] . '">' . $coun['country_name'] . '</a>'] = $tlocal;
345
    } else {
346
        $opt[$coun['country_name']] = $tlocal;
347
    }
348
}
349
$xoopsTpl->assign('country_l', $opt);
350
351
require_once XOOPS_ROOT_PATH . '/footer.php';
352