Passed
Push — master ( 437a59...f8edb8 )
by Michael
05:10 queued 03:07
created
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
$GLOBALS['xoopsOption']['template_main'] = 'xfguestbook_index.tpl';
28
29
require_once __DIR__ . '/header.php';
30
31
//** @var Xfguestbook\Helper $helper */
32
$helper = Xfguestbook\Helper::getInstance();
33
34
if (\Xmf\Request::hasVar('msg_id', 'GET')) {
35
    $msg_id = \Xmf\Request::getInt('msg_id', 0, 'GET');
36
} else {
37
    $msg_id = \Xmf\Request::getInt('msg_id', 0, 'POST');
38
}
39
40
$op = 'show_all';
41
if (\Xmf\Request::hasVar('op', 'GET')) {
42
    $op = \Xmf\Request::getString('op', '', 'GET');
43
} elseif (\Xmf\Request::hasVar('op', 'POST')) {
44
    $op = \Xmf\Request::getString('op', '', 'POST');
45
}
46
47
/** @var \XoopsModules\Xfguestbook\MessageHandler $msgHandler */
48
$msgHandler = $helper->getHandler('Message');
49
50
//Admin or not
51
$xoopsUser ? $adminview = $xoopsUser->isAdmin() : $adminview = 0;
52
53
/**
54
 * @param $msg_id
55
 */
56
function delete($msg_id)
57
{
58
    global $msgHandler, $xoopsModule;
59
    $ok = \Xmf\Request::getInt('ok', 0, 'POST');
60
    if (1 == $ok) {
61
        $msg        = $msgHandler->get($msg_id);
62
        $del_msg_ok = $msgHandler->delete($msg);
63
        $filename   = $msg->getVar('photo');
64
        if ('' !== $filename) {
65
            $filename = XOOPS_UPLOAD_PATH . '/' . $xoopsModule->getVar('dirname') . '/' . $filename;
66
            unlink($filename);
67
        }
68
        if ($del_msg_ok) {
69
            $messagesent = MD_XFGUESTBOOK_MSGDELETED;
70
        } else {
71
            $messagesent = MD_XFGUESTBOOK_ERRORDEL;
72
        }
73
        redirect_header('index.php', 2, $messagesent);
74
    } else {
75
        xoops_confirm(['op' => 'delete', 'msg_id' => $msg_id, 'ok' => 1], 'index.php', _DELETE);
76
    }
77
}
78
79
/**
80
 * @param $msg_id
81
 */
82
function approve($msg_id)
83
{
84
    global $msgHandler;
85
86
    $msg = $msgHandler->get($msg_id);
87
    $msg->setVar('moderate', 0);
88
    if (!$msgHandler->insert($msg)) {
89
        $messagesent = MD_XFGUESTBOOK_ERRORVALID;
90
    } else {
91
        $messagesent = MD_XFGUESTBOOK_VALIDATE;
92
    }
93
    redirect_header('index.php?op=show_waiting', 2, $messagesent);
94
}
95
96
/**
97
 * @param $msg
98
 */
99
function xfgb_getmsg($msg)
100
{
101
    global $nbmsg, $xoopsModule, $xoopsUser, $xoopsTpl, $xoopsConfig, $options, $opt, $xoopsDB;
102
    /** @var Xfguestbook\Helper $helper */
103
    $helper = Xfguestbook\Helper::getInstance();
104
105
    $arr_country = Xfguestbook\Utility::getAllCountry();
106
    $xoopsTpl->assign('display_msg', true);
107
    foreach ($msg as $onemsg) {
108
        if ($poster = Xfguestbook\Utility::get_user_data($onemsg->getVar('user_id'))) {
109
            $a_msg = &$poster;
110
        } else {
111
            $a_msg             = [];
112
            $a_msg['poster']   = $onemsg->getVar('uname');
113
            $a_msg['rank']     = '';
114
            $a_msg['rank_img'] = '';
115
            $a_msg['avatar']   = '';
116
        }
117
        /** @var \XoopsMemberHandler $memberHandler */
118
        $memberHandler = xoops_getHandler('member');
119
        $user          = $memberHandler->getUser($onemsg->getVar('user_id'));
120
        // email
121
        if ($helper->getConfig('showemail')
122
            || ($onemsg->getVar('email')
123
                && ((1 == $user->getVar('user_viewemail')
124
                     || 0 == $onemsg->getVar('user_id'))
125
                    && is_object($xoopsUser)))) {
126
            $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>';
127
        }
128
        // url
129
        if ($onemsg->getVar('url')) {
130
            $a_msg['url'] = '<a href="' . $onemsg->getVar('url') . '" target="_blank"><img src="' . XOOPS_URL . '/images/icons/www.gif" alt="' . _VISITWEBSITE . '"></a>';
131
        }
132
        // gender
133
        if ('' !== $onemsg->getVar('gender')) {
134
            $a_msg['gender'] = '<a href="index.php?op=show_gender&param=' . $onemsg->getVar('gender') . '"><img src="assets/images/' . $onemsg->getVar('gender') . '.gif"</a>';
135
        }
136
        // flag
137
        $country_name = '';
138
        if ('' !== $onemsg->getVar('country')) {
139
            if ('other' !== $onemsg->getVar('country')) {
140
                $flag = XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->dirname() . '/assets/images/flags/' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '.gif';
141
                if (array_key_exists($onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country'), $arr_country)) {
142
                    $country_name = $arr_country[$onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country')];
143
                }
144
                if (file_exists($flag)) {
145
                    $a_msg['country'] = '<img src="' . XOOPS_URL . '/modules/xfguestbook/assets/images/flags/' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '.gif" alt="' . $country_name . '">';
146
                } else {
147
                    $a_msg['country'] = $country_name;
148
                }
149
                $a_msg['country'] = '<a href="index.php?op=show_country&param=' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '">' . $a_msg['country'] . '</a>';
150
            } else {
151
                $a_msg['country'] = $onemsg->getVar('other');
152
            }
153
        }
154
        $a_msg['msg_id']  = $onemsg->getVar('msg_id');
155
        $a_msg['i']       = $nbmsg;
156
        $a_msg['title']   = $onemsg->getVar('title');
157
        $a_msg['date']    = formatTimestamp($onemsg->getVar('post_time'), 's');
158
        $a_msg['message'] = $onemsg->getVar('message');
159
        if (1 == $options['opt_url']) {
160
            $a_msg['message'] = str_replace('target="_blank"', 'target="_blank" rel="nofollow"', $a_msg['message']);
161
        }
162
        $a_msg['note_msg']  = $onemsg->getVar('note');
163
        $a_msg['poster_ip'] = $onemsg->getVar('poster_ip');
164
        $a_msg['moderate']  = $onemsg->getVar('moderate');
165
        if (null !== $country_name) {
166
            $a_msg['local'] = '<a href="index.php?op=show_country&param=' . $onemsg->getVar('flagdir') . '/' . $onemsg->getVar('country') . '">' . $country_name . '</a>';
167
        }
168
        $a_msg['photo'] = $onemsg->getVar('photo');
169
        $xoopsTpl->append('msg', $a_msg);
170
        $nbmsg--;
171
    }
172
}
173
174
function xfgb_genderlist()
175
{
176
    global $options, $xoopsTpl, $xoopsModule, $msgHandler;
177
    /** @var Xfguestbook\Helper $helper */
178
    $helper   = Xfguestbook\Helper::getInstance();
0 ignored issues
show
The assignment to $helper is dead and can be removed.
Loading history...
179
    $criteria = new \Criteria('moderate', 0);
180
    $arr_msg  = $msgHandler->countMsgByGender($criteria);
181
    $i        = 0;
182
    $gender   = [];
183
    foreach ($arr_msg as $k => $v) {
184
        if ('M' === $k) {
185
            $gender[$i] = MD_XFGUESTBOOK_MALES . '<br>';
186
            $gender[$i] .= '<img src="assets/images/M.gif" alt="' . MD_XFGUESTBOOK_MALES . '"><br><br>';
187
            $gender[$i] .= '<a href="index.php?op=show_gender&param=M">' . $v . MD_XFGUESTBOOK_MESSAGES . '</a>';
188
        } elseif ('F' === $k) {
189
            $gender[$i] = MD_XFGUESTBOOK_FEMALES . '<br>';
190
            $gender[$i] .= '<img src="assets/images/F.gif" alt="' . MD_XFGUESTBOOK_FEMALES . '"><br><br>';
191
            $gender[$i] .= '<a href="index.php?op=show_gender&param=F">' . $v . MD_XFGUESTBOOK_MESSAGES . '</a>';
192
        } else {
193
            $gender[$i] = MD_XFGUESTBOOK_UNKNOW2 . '<br>';
194
            $gender[$i] .= '<img src="assets/images/U.gif"><br><br>';
195
            $gender[$i] .= $v . MD_XFGUESTBOOK_MESSAGES;
196
        }
197
        $i++;
198
    }
199
    $xoopsTpl->assign('gender', $gender);
200
    $xoopsTpl->assign('display_gender', $options['opt_gender']);
201
}
202
203
// end functions
204
205
// if op = show_***, functions needed
206
//if (substr($op, 0, 4) == 'show') {
207
if (0 === strncmp($op, 'show', 4)) {
208
    $debut = \Xmf\Request::getInt('debut', 0, 'GET');
209
    $param = \Xmf\Request::getString('param', '', 'GET');
210
211
    require_once XOOPS_ROOT_PATH . '/header.php';
212
    require_once XOOPS_ROOT_PATH . '/class/pagenav.php';
213
    require_once XOOPS_ROOT_PATH . '/modules/' . $xoopsModule->dirname() . '/include/config.inc.php';
214
    $options = getOptions();
215
216
    $criteria = new \Criteria('moderate', 0);
217
    $nbmsg    = $msgHandler->countMsg($criteria);
218
219
    $xoopsTpl->assign('msg_message_count', sprintf(MD_XFGUESTBOOK_THEREIS, '<b>' . $nbmsg . '</b>'));
220
    $xoopsTpl->assign('msg_moderated', $helper->getConfig('moderate'));
221
    $xoopsTpl->assign('msg_lang_name', $xoopsConfig['language']);
222
    $xoopsTpl->assign('xoops_pagetitle', $xoopsModule->name() . ' -messages');
223
    if ($adminview) {
224
        $nbwait = $msgHandler->countMsg(new \Criteria('moderate', '1'));
225
        $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>'));
226
    }
227
}
228
229
switch ($op) {
230
    case 'delete':
231
        if ($adminview) {
232
            require_once XOOPS_ROOT_PATH . '/header.php';
233
            delete($msg_id);
234
        } else {
235
            redirect_header('index.php', 1, '');
236
        }
237
        break;
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
    case 'show_stat':
247
        if ($options['opt_gender'] > 0) {
248
            xfgb_genderlist();
249
        }
250
        break;
251
    case 'show_waiting':
252
        $pagenav = new \XoopsPageNav($nbwait, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_waiting');
253
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
254
        $criteria = new \Criteria('moderate', 1);
255
        $criteria->setOrder('DESC');
256
        $criteria->setLimit($helper->getConfig('perpage'));
257
        $criteria->setStart($debut);
258
        $msg    = $msgHandler->getObjects($criteria);
259
        $nbwait -= $debut;
260
        $nbmsg  = $nbwait;
261
        xfgb_getmsg($msg);
262
        break;
263
    case 'show_one':
264
        if ($adminview) {
265
            $criteria = new \Criteria('msg_id', $msg_id);
266
        } else {
267
            $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
268
            $criteria->add(new \Criteria('msg_id', $msg_id));
269
        }
270
        $msg = $msgHandler->getObjects($criteria);
271
        xfgb_getmsg($msg);
272
        if ($options['opt_gender'] > 0) {
273
            xfgb_genderlist();
274
        }
275
        break;
276
    case 'show_country':
277
        list($flagdir, $country) = explode('/', $param);
278
        $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
279
        if ($flagdir == $helper->getConfig('flagdir')) {
280
            $criteria->add(new \Criteria('flagdir', $flagdir));
281
        }
282
        $criteria->add(new \Criteria('country', $country));
283
        $nbmsg   = $msgHandler->countMsg($criteria);
284
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_country&param=' . $param);
285
        $criteria->setOrder('DESC');
286
        $criteria->setLimit($helper->getConfig('perpage'));
287
        $criteria->setStart($debut);
288
        $msg   = $msgHandler->getObjects($criteria);
289
        $nbmsg -= $debut;
290
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
291
        xfgb_getmsg($msg);
292
        break;
293
    case 'show_gender':
294
        $criteria = new \CriteriaCompo(new \Criteria('moderate', '0'));
295
        $criteria->add(new \Criteria('gender', $param));
296
        $nbmsg   = $msgHandler->countMsg($criteria);
297
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', 'op=show_gender&param=' . $param);
298
        $criteria->setOrder('DESC');
299
        $criteria->setLimit($helper->getConfig('perpage'));
300
        $criteria->setStart($debut);
301
        $msg   = $msgHandler->getObjects($criteria);
302
        $nbmsg -= $debut;
303
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
304
        xfgb_getmsg($msg);
305
        if ($options['opt_gender'] > 0) {
306
            xfgb_genderlist();
307
        }
308
        break;
309
    case 'show_all':
310
    default:
311
        $pagenav = new \XoopsPageNav($nbmsg, $helper->getConfig('perpage'), $debut, 'debut', '');
312
        $xoopsTpl->assign('msg_page_nav', $pagenav->renderNav());
313
        $criteria = new \Criteria('moderate', 0);
314
        $criteria->setOrder('DESC');
315
        $criteria->setLimit($helper->getConfig('perpage'));
316
        $criteria->setStart($debut);
317
        $msg   = $msgHandler->getObjects($criteria);
318
        $nbmsg -= $debut;
319
        xfgb_getmsg($msg);
320
        if ($options['opt_gender'] > 0) {
321
            xfgb_genderlist();
322
        }
323
        break;
324
    case 'cancel':
325
        $photos_dir     = XOOPS_UPLOAD_PATH . '/' . $xoopsModule->getVar('dirname');
326
        $nb_removed_tmp = Xfguestbook\Utility::clear_tmp_files($photos_dir);
327
        redirect_header('index.php', 0);
328
        break;
329
}
330
$sql = $xoopsDB->query('SELECT * FROM ' . $xoopsDB->prefix('xfguestbook_country') . ' ORDER BY country_name ASC');
331
332
while (false !== ($coun = $xoopsDB->fetchArray($sql))) {
333
    $sql2 = $xoopsDB->query('SELECT COUNT(country) tot FROM ' . $xoopsDB->prefix('xfguestbook_msg') . " WHERE country='" . $coun['country_code'] . '\'');
334
    list($tlocal) = $xoopsDB->fetchRow($sql2);
335
    $tlocal = $tlocal ?: '0';
336
    if ($tlocal > 0) {
337
        $opt['<a href="index.php?op=show_country&param=' . $helper->getConfig('flagdir') . '/' . $coun['country_code'] . '">' . $coun['country_name'] . '</a>'] = $tlocal;
338
    } else {
339
        $opt[$coun['country_name']] = $tlocal;
340
    }
341
}
342
$xoopsTpl->assign('country_l', $opt);
343
344
require_once XOOPS_ROOT_PATH . '/footer.php';
345