Issues (3083)

htdocs/modules/system/admin/users/main.php (3 issues)

1
<?php
2
/*
3
 * You may not change or alter any portion of this comment or credits
4
 * of supporting developers from this source code or any supporting source code
5
 * which is considered copyrighted (c) material of the original comment or credit authors.
6
 *
7
 * This program is distributed in the hope that it will be useful,
8
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10
 */
11
12
/**
13
 * @copyright    XOOPS Project https://xoops.org/
14
 * @license      GNU GPL 2.0 or later (https://www.gnu.org/licenses/gpl-2.0.html)
15
 * @package
16
 * @since
17
 * @author       XOOPS Development Team, Kazumi Ono (AKA onokazu)
18
 */
19
/** @var XoopsUser $xoopsUser */
20
/** @var XoopsModule $xoopsModule */
21
use Xmf\Request;
22
23
// Check users rights
24
if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) {
25
    exit(_NOPERM);
26
}
27
28
include_once XOOPS_ROOT_PATH . '/modules/system/admin/users/users.php';
29
// Get Action type
30
$op = Request::getString('op', 'default');
31
/** @var XoopsMemberHandler $member_handler */
32
$member_handler = xoops_getHandler('member');
33
// Define main template
34
$GLOBALS['xoopsOption']['template_main'] = 'system_users.tpl';
35
// Call Header
36
xoops_cp_header();
37
38
$myts = \MyTextSanitizer::getInstance();
39
// Define Stylesheet
40
$xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/admin.css');
41
$xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/ui/' . xoops_getModuleOption('jquery_theme', 'system') . '/ui.all.css');
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

41
$xoTheme->addStylesheet(XOOPS_URL . '/modules/system/css/ui/' . /** @scrutinizer ignore-deprecated */ xoops_getModuleOption('jquery_theme', 'system') . '/ui.all.css');
Loading history...
42
// Define scripts
43
$xoTheme->addScript('modules/system/js/admin.js');
44
// Define Breadcrumb and tips
45
$xoBreadCrumb->addLink(_AM_SYSTEM_USERS_NAV_MAIN, system_adminVersion('users', 'adminpath'));
46
47
$uid = Request::getInt('uid', 0);
48
switch ($op) {
49
50
    // Edit user
51
    case 'users_edit':
52
        // Assign Breadcrumb menu
53
        $xoBreadCrumb->addHelp(system_adminVersion('users', 'help') . '#edit');
54
        $xoBreadCrumb->addLink(_AM_SYSTEM_USERS_NAV_EDIT_USER);
55
        $xoBreadCrumb->render();
56
        form_user(false, $uid);
57
        break;
58
59
    // Add user
60
    case 'users_add':
61
        // Assign Breadcrumb menu
62
        $xoBreadCrumb->addHelp(system_adminVersion('users', 'help') . '#add');
63
        $xoBreadCrumb->addLink(_AM_SYSTEM_USERS_NAV_ADD_USER);
64
        $xoBreadCrumb->render();
65
        form_user(true);
66
        break;
67
68
    // Delete user
69
    case 'users_delete':
70
        $xoBreadCrumb->render();
71
        $user = $member_handler->getUser($uid);
72
        if ((int)Request::getInt('ok', 0) === 1) {
73
            if (!$GLOBALS['xoopsSecurity']->check()) {
74
                redirect_header('admin.php?fct=users', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
75
            }
76
77
            $groups = $user->getGroups();
78
            if (in_array(XOOPS_GROUP_ADMIN, $groups)) {
79
                xoops_error(sprintf(_AM_SYSTEM_USERS_NO_ADMINSUPP, $user->getVar('uname')));
80
            } elseif (!$member_handler->deleteUser($user)) {
81
                xoops_error(sprintf(_AM_SYSTEM_USERS_NO_SUPP, $user->getVar('uname')));
82
            } else {
83
                /** @var XoopsOnlineHandler $online_handler */
84
                $online_handler = xoops_getHandler('online');
85
                $online_handler->destroy($uid);
86
                // RMV-NOTIFY
87
                xoops_notification_deletebyuser($uid);
88
                redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
89
            }
90
        } else {
91
            //Assign Breadcrumb menu
92
            $xoBreadCrumb->addHelp(system_adminVersion('users', 'help') . '#delete');
93
            $xoBreadCrumb->addLink(_AM_SYSTEM_USERS_NAV_DELETE_USER);
94
            $xoBreadCrumb->render();
95
            xoops_confirm(array(
96
                              'ok'  => 1,
97
                              'uid' => $uid,
98
                              'op'  => 'users_delete'), $_SERVER['REQUEST_URI'], sprintf(_AM_SYSTEM_USERS_FORM_SURE_DEL, $user->getVar('uname')));
99
        }
100
        break;
101
102
    // Delete users
103
    case 'action_group':
104
        if (!$GLOBALS['xoopsSecurity']->check()) {
105
            redirect_header('admin.php?fct=users', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
106
        }
107
108
        if (Request::hasVar('memberslist_id')) {
109
            $xoBreadCrumb->render();
110
            $error = '';
111
            foreach (Request::getArray('memberslist_id', array()) as $del) {
112
                $del    = (int)$del;
113
                $user   = $member_handler->getUser($del);
114
                $groups = $user->getGroups();
115
                if (in_array(XOOPS_GROUP_ADMIN, $groups)) {
116
                    $error .= sprintf(_AM_SYSTEM_USERS_NO_ADMINSUPP, $user->getVar('uname'));
117
                } elseif (!$member_handler->deleteUser($user)) {
118
                    $error .= sprintf(_AM_SYSTEM_USERS_NO_SUPP, $user->getVar('uname'));
119
                } else {
120
                    /** @var XoopsOnlineHandler $online_handler */
121
                    $online_handler = xoops_getHandler('online');
122
                    $online_handler->destroy($del);
123
                    // RMV-NOTIFY
124
                    xoops_notification_deletebyuser($del);
125
                }
126
            }
127
            if ($error !== '') {
128
                redirect_header('admin.php?fct=users', 3, sprintf(_AM_SYSTEM_USERS_ERROR, $error));
129
            } else {
130
                redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
131
            }
132
        }
133
        break;
134
135
    // Save user
136
    case 'users_save':
137
        global $xoopsConfig, $xoopsModule, $xoopsUser;
138
139
        if (Request::hasVar('uid')) {
140
            //Update user
141
            if (!$GLOBALS['xoopsSecurity']->check()) {
142
                redirect_header('admin.php?fct=users', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
143
            }
144
            // RMV-NOTIFY
145
            $user_avatar = $theme = null;
146
            if (!Request::hasVar('attachsig')) {
147
                $attachsig = null;
148
            }
149
            if (!Request::hasVar('user_viewemail')) {
150
                $user_viewemail = null;
151
            }
152
153
            $edituser = $member_handler->getUser($uid);
154
            if ($edituser->getVar('uname', 'n') != Request::getString('username') && $member_handler->getUserCount(new Criteria('uname', $myts->addSlashes(Request::getString('username')))) > 0) {
155
                xoops_cp_header();
156
                xoops_error(sprintf(_AM_SYSTEM_USERS_PSEUDO_ERROR, htmlspecialchars(Request::getString('username'), ENT_QUOTES | ENT_HTML5)));
157
                xoops_cp_footer();
158
            } elseif ($edituser->getVar('email', 'n') != Request::getEmail('email') && $member_handler->getUserCount(new Criteria('email', $myts->addSlashes(Request::getEmail('email')))) > 0) {
159
                xoops_cp_header();
160
                xoops_error(sprintf(_AM_SYSTEM_USERS_MAIL_ERROR, htmlspecialchars(Request::getEmail('email'), ENT_QUOTES | ENT_HTML5)));
161
                xoops_cp_footer();
162
            } else {
163
                $edituser->setVar('name', Request::getString('name'));
164
                $edituser->setVar('uname', Request::getString('username'));
165
                $edituser->setVar('email', Request::getEmail('email'));
166
                $url = formatURL(Request::getUrl('url'));
167
                $edituser->setVar('url', $url);
168
                $edituser->setVar('user_icq', Request::getString('user_icq'));
169
                $edituser->setVar('user_from', Request::getString('user_from'));
170
                $edituser->setVar('user_sig', Request::getString('user_sig'));
171
                $user_viewemail = (Request::hasVar('user_viewemail') && Request::getInt('user_viewemail') == 1) ? 1 : 0;
172
                $edituser->setVar('user_viewemail', $user_viewemail);
173
                $edituser->setVar('user_aim', Request::getString('user_aim'));
174
                $edituser->setVar('user_yim', Request::getString('user_yim'));
175
                $edituser->setVar('user_msnm', Request::getString('user_msnm'));
176
                $attachsig = (Request::hasVar('attachsig') && Request::getInt('attachsig') == 1) ? 1 : 0;
177
                $edituser->setVar('attachsig', $attachsig);
178
                $edituser->setVar('timezone_offset', Request::getString('timezone_offset'));
179
                $edituser->setVar('uorder', Request::getString('uorder'));
180
                $edituser->setVar('umode', Request::getString('umode'));
181
                // RMV-NOTIFY
182
                $edituser->setVar('notify_method', Request::getString('notify_method'));
183
                $edituser->setVar('notify_mode', Request::getString('notify_mode'));
184
                $edituser->setVar('bio', Request::getString('bio'));
185
                $edituser->setVar('rank', Request::getString('rank'));
186
                $edituser->setVar('user_occ', Request::getString('user_occ'));
187
                $edituser->setVar('user_intrest', Request::getString('user_intrest'));
188
                $edituser->setVar('user_mailok', Request::getString('user_mailok'));
189
                if ('' !== Request::getString('pass2')) {
190
                    if (Request::getString('password') != Request::getString('pass2')) {
191
                        xoops_cp_header();
192
                        echo '
193
                        <strong>' . _AM_SYSTEM_USERS_STNPDNM . '</strong>';
194
                        xoops_cp_footer();
195
                        exit();
196
                    }
197
                    $edituser->setVar('pass', password_hash(Request::getString('password'), PASSWORD_DEFAULT));
198
                }
199
                if (!$member_handler->insertUser($edituser)) {
200
                    xoops_cp_header();
201
                    echo $edituser->getHtmlErrors();
202
                    xoops_cp_footer();
203
                } else {
204
                    $groups = Request::getArray('groups', array());
205
                    if (!empty($groups)) {
206
                        global $xoopsUser;
207
                        $oldgroups = $edituser->getGroups();
208
                        //If the edited user is the current user and the current user WAS in the webmaster's group and is NOT in the new groups array
209
                        if ($edituser->getVar('uid') == $xoopsUser->getVar('uid') && in_array(XOOPS_GROUP_ADMIN, $oldgroups) && !in_array(XOOPS_GROUP_ADMIN, $groups)) {
210
                            //Add the webmaster's group to the groups array to prevent accidentally removing oneself from the webmaster's group
211
                            $groups[] = XOOPS_GROUP_ADMIN;
212
                            $_REQUEST['groups'] = $groups;  // Update the global variable
213
                        }
214
                         /** @var XoopsMemberHandler $member_handler */
215
                        $member_handler = xoops_getHandler('member');
216
                        foreach ($oldgroups as $groupid) {
217
                            $member_handler->removeUsersFromGroup($groupid, array($edituser->getVar('uid')));
218
                        }
219
                        foreach ($groups as $groupid) {
220
                            $member_handler->addUserToGroup($groupid, $edituser->getVar('uid'));
221
                        }
222
                    }
223
                    redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
224
                }
225
            }
226
            exit();
227
        } else {
228
            //Add user
229
            if (!$GLOBALS['xoopsSecurity']->check()) {
230
                redirect_header('admin.php?fct=users', 3, implode('<br>', $GLOBALS['xoopsSecurity']->getErrors()));
231
            }
232
            if (!Request::getString('username') || !Request::getString('email') || !Request::getString('password')) {
233
                $adduser_errormsg = _AM_SYSTEM_USERS_YMCACF;
234
            } else {
235
                /** @var XoopsMemberHandler $member_handler */
236
                $member_handler = xoops_getHandler('member');
237
                // make sure the username doesnt exist yet
238
                if ($member_handler->getUserCount(new Criteria('uname', $myts->addSlashes(Request::getString('username')))) > 0) {
239
                    $adduser_errormsg = 'User name ' . htmlspecialchars(Request::getString('username'), ENT_QUOTES | ENT_HTML5) . ' already exists';
240
                } else {
241
                    $newuser = $member_handler->createUser();
242
                    if (isset($user_viewemail)) {
243
                        $newuser->setVar('user_viewemail', Request::getString('user_viewemail'));
244
                    }
245
                    if (isset($attachsig)) {
246
                        $newuser->setVar('attachsig', Request::getString('attachsig'));
247
                    }
248
                    $newuser->setVar('name', Request::getString('name'));
249
                    $newuser->setVar('uname', Request::getString('username'));
250
                    $newuser->setVar('email', Request::getEmail('email'));
251
                    $newuser->setVar('url', formatURL(Request::getUrl('url')));
252
                    $newuser->setVar('user_avatar', 'avatars/blank.gif');
253
                    $newuser->setVar('user_regdate', time());
254
                    $newuser->setVar('user_icq', Request::getString('user_icq'));
255
                    $newuser->setVar('user_from', Request::getString('user_from'));
256
                    $newuser->setVar('user_sig', Request::getString('user_sig'));
257
                    $newuser->setVar('user_aim', Request::getString('user_aim'));
258
                    $newuser->setVar('user_yim', Request::getString('user_yim'));
259
                    $newuser->setVar('user_msnm', Request::getString('user_msnm'));
260
                    if ('' !== Request::getString('pass2')) {
261
                        if (Request::getString('password') != Request::getString('pass2')) {
262
                            xoops_cp_header();
263
                            echo '<strong>' . _AM_SYSTEM_USERS_STNPDNM . '</strong>';
264
                            xoops_cp_footer();
265
                            exit();
266
                        }
267
                        $newuser->setVar('pass', password_hash(Request::getString('password'), PASSWORD_DEFAULT));
268
                    }
269
                    $newuser->setVar('timezone_offset', Request::getString('timezone_offset'));
270
                    $newuser->setVar('uorder', Request::getString('uorder'));
271
                    $newuser->setVar('umode', Request::getString('umode'));
272
                    // RMV-NOTIFY
273
                    $newuser->setVar('notify_method', Request::getString('notify_method'));
274
                    $newuser->setVar('notify_mode', Request::getString('notify_mode'));
275
                    $newuser->setVar('bio', Request::getString('bio'));
276
                    $newuser->setVar('rank', Request::getString('rank'));
277
                    $newuser->setVar('level', 1);
278
                    $newuser->setVar('user_occ', Request::getString('user_occ'));
279
                    $newuser->setVar('user_intrest', Request::getString('user_intrest'));
280
                    $newuser->setVar('user_mailok', Request::getString('user_mailok'));
281
                    if (!$member_handler->insertUser($newuser)) {
282
                        $adduser_errormsg = _AM_SYSTEM_USERS_CNRNU;
283
                    } else {
284
                        $groups_failed = array();
285
                        $groups = Request::getArray('groups', array());
286
                        if (!empty($groups)) {
287
                            foreach ($groups as $group) {
288
                            $group = (int)$group;
289
                            if (!$member_handler->addUserToGroup($group, $newuser->getVar('uid'))) {
290
                                $groups_failed[] = $group;
291
                            }
292
                        }
293
                        }
294
                        if (!empty($groups_failed)) {
295
                            $group_names      = $member_handler->getGroupList(new Criteria('groupid', '(' . implode(', ', $groups_failed) . ')', 'IN'));
296
                            $adduser_errormsg = sprintf(_AM_SYSTEM_USERS_CNRNU2, implode(', ', $group_names));
297
                        } else {
298
                            xoops_load('XoopsUserUtility');
299
                            XoopsUserUtility::sendWelcome($newuser);
300
                            redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
301
                        }
302
                    }
303
                }
304
            }
305
            xoops_error($adduser_errormsg);
306
        }
307
        break;
308
309
    // Activ member
310
    case 'users_active':
311
        if (Request::hasVar('uid')) {
312
            $obj = $member_handler->getUser($uid);
313
            //echo $_REQUEST["uid"];
314
            //print_r($obj);
315
        }
316
        $obj->setVar('level', 1);
317
        if ($member_handler->insertUser($obj, true)) {
318
            redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
319
        }
320
        echo $obj->getHtmlErrors();
321
        break;
322
323
    // Synchronize
324
    case 'users_synchronize':
325
        if (Request::hasVar('status') && Request::getString('status') == 1) {
326
            synchronize($uid, 'user');
327
        } elseif (Request::hasVar('status') && Request::getString('status')== 2) {
328
            synchronize('', 'all users');
329
        }
330
        redirect_header('admin.php?fct=users', 1, _AM_SYSTEM_DBUPDATED);
331
        break;
332
333
    default:
334
        // Search and Display
335
        // Define scripts
336
        $xoTheme->addScript('browse.php?Frameworks/jquery/jquery.js');
337
        $xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.ui.js');
338
        //table sorting does not work with select boxes
339
        //$xoTheme->addScript('browse.php?Frameworks/jquery/plugins/jquery.tablesorter.js');
340
        $xoTheme->addScript('modules/system/js/admin.js');
341
        //Recherche approfondie
342
343
        if (Request::hasVar('complet_search')) {
344
            // Assign Breadcrumb menu
345
            $xoBreadCrumb->addLink(_AM_SYSTEM_USERS_NAV_ADVANCED_SEARCH);
346
            $xoBreadCrumb->addHelp(system_adminVersion('users', 'help'));
347
            $xoBreadCrumb->addTips(_AM_SYSTEM_USERS_NAV_TIPS);
348
            $xoBreadCrumb->render();
349
350
            $acttotal   = $member_handler->getUserCount(new Criteria('level', 0, '>'));
351
            $inacttotal = $member_handler->getUserCount(new Criteria('level', 0));
352
353
            //$group_select = new XoopsFormSelectGroup(_AM_SYSTEM_USERS_GROUPS, "selgroups", null, false, 1, false);
354
            $group_select = new XoopsFormSelect(_AM_SYSTEM_USERS_GROUPS, 'selgroups');
355
            /** @var XoopsGroupHandler $group_handler */
356
            $group_handler = xoops_getHandler('group');
357
            $group_arr     = $group_handler->getObjects();
358
            $group_select->addOption('', '--------------');
359
            foreach (array_keys($group_arr) as $i) {
360
                if ($group_arr[$i]->getVar('groupid') != XOOPS_GROUP_ANONYMOUS) {
361
                    $group_select->addOption('' . $group_arr[$i]->getVar('groupid') . '', '' . $group_arr[$i]->getVar('name') . '');
362
                }
363
            }
364
365
            $uname_text  = new XoopsFormText('', 'username', 30, 60);
366
            $uname_match = new XoopsFormSelectMatchOption('', 'user_uname_match');
367
            $uname_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_UNAME, '&nbsp;');
368
            $uname_tray->addElement($uname_match);
369
            $uname_tray->addElement($uname_text);
370
            $name_text  = new XoopsFormText('', 'user_name', 30, 60);
371
            $name_match = new XoopsFormSelectMatchOption('', 'user_name_match');
372
            $name_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_REALNAME, '&nbsp;');
373
            $name_tray->addElement($name_match);
374
            $name_tray->addElement($name_text);
375
            $email_text  = new XoopsFormText('', 'user_email', 30, 60);
376
            $email_match = new XoopsFormSelectMatchOption('', 'user_email_match');
377
            $email_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_EMAIL, '&nbsp;');
378
            $email_tray->addElement($email_match);
379
            $email_tray->addElement($email_text);
380
            $url_text  = new XoopsFormText(_AM_SYSTEM_USERS_URLC, 'user_url', 30, 100);
381
            $icq_text  = new XoopsFormText('', 'user_icq', 30, 100);
382
            $icq_match = new XoopsFormSelectMatchOption('', 'user_icq_match');
383
            $icq_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_ICQ, '&nbsp;');
384
            $icq_tray->addElement($icq_match);
385
            $icq_tray->addElement($icq_text);
386
            $aim_text  = new XoopsFormText('', 'user_aim', 30, 100);
387
            $aim_match = new XoopsFormSelectMatchOption('', 'user_aim_match');
388
            $aim_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_AIM, '&nbsp;');
389
            $aim_tray->addElement($aim_match);
390
            $aim_tray->addElement($aim_text);
391
            $yim_text  = new XoopsFormText('', 'user_yim', 30, 100);
392
            $yim_match = new XoopsFormSelectMatchOption('', 'user_yim_match');
393
            $yim_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_YIM, '&nbsp;');
394
            $yim_tray->addElement($yim_match);
395
            $yim_tray->addElement($yim_text);
396
            $msnm_text  = new XoopsFormText('', 'user_msnm', 30, 100);
397
            $msnm_match = new XoopsFormSelectMatchOption('', 'user_msnm_match');
398
            $msnm_tray  = new XoopsFormElementTray(_AM_SYSTEM_USERS_MSNM, '&nbsp;');
399
            $msnm_tray->addElement($msnm_match);
400
            $msnm_tray->addElement($msnm_text);
401
            $location_text   = new XoopsFormText(_AM_SYSTEM_USERS_LOCATIONC, 'user_from', 30, 100);
402
            $occupation_text = new XoopsFormText(_AM_SYSTEM_USERS_OCCUPATIONC, 'user_occ', 30, 100);
403
            $interest_text   = new XoopsFormText(_AM_SYSTEM_USERS_INTERESTC, 'user_intrest', 30, 100);
404
405
            $lastlog_more = new XoopsFormText(_AM_SYSTEM_USERS_LASTLOGMORE, 'user_lastlog_more', 10, 5);
406
            $lastlog_less = new XoopsFormText(_AM_SYSTEM_USERS_LASTLOGLESS, 'user_lastlog_less', 10, 5);
407
            $reg_more     = new XoopsFormText(_AM_SYSTEM_USERS_REGMORE, 'user_reg_more', 10, 5);
408
            $reg_less     = new XoopsFormText(_AM_SYSTEM_USERS_REGLESS, 'user_reg_less', 10, 5);
409
            $posts_more   = new XoopsFormText(_AM_SYSTEM_USERS_POSTSMORE, 'user_posts_more', 10, 5);
410
            $posts_less   = new XoopsFormText(_AM_SYSTEM_USERS_POSTSLESS, 'user_posts_less', 10, 5);
411
            $mailok_radio = new XoopsFormRadio(_AM_SYSTEM_USERS_SHOWMAILOK, 'user_mailok', 'both');
412
            $mailok_radio->addOptionArray(array(
413
                                              'mailok' => _AM_SYSTEM_USERS_MAILOK,
414
                                              'mailng' => _AM_SYSTEM_USERS_MAILNG,
415
                                              'both' => _AM_SYSTEM_USERS_BOTH));
416
            $type_radio = new XoopsFormRadio(_AM_SYSTEM_USERS_SHOWTYPE, 'user_type', 'actv');
417
            $type_radio->addOptionArray(array(
418
                                            'actv' => _AM_SYSTEM_USERS_ACTIVE,
419
                                            'inactv' => _AM_SYSTEM_USERS_INACTIVE,
420
                                            'both' => _AM_SYSTEM_USERS_BOTH));
421
            $sort_select = new XoopsFormSelect(_AM_SYSTEM_USERS_SORT, 'user_sort');
422
            $sort_select->addOptionArray(array(
423
                                             'uname' => _AM_SYSTEM_USERS_UNAME,
424
                                             'email' => _AM_SYSTEM_USERS_EMAIL,
425
                                             'last_login' => _AM_SYSTEM_USERS_LASTLOGIN,
426
                                             'user_regdate' => _AM_SYSTEM_USERS_REGDATE,
427
                                             'posts' => _AM_SYSTEM_USERS_POSTS));
428
            $order_select = new XoopsFormSelect(_AM_SYSTEM_USERS_ORDER, 'user_order');
429
            $order_select->addOptionArray(array('ASC' => _AM_SYSTEM_USERS_ASC, 'DESC' => _AM_SYSTEM_USERS_DESC));
430
            $limit_text    = new XoopsFormText(_AM_SYSTEM_USERS_LIMIT, 'user_limit', 6, 2, 20);
431
            $submit_button = new XoopsFormButton('', 'user_submit', _SUBMIT, 'submit');
432
433
            $form = new XoopsThemeForm(_AM_SYSTEM_USERS_FINDUS, 'user_findform', 'admin.php?fct=users', 'post', true);
434
            $form->addElement($uname_tray);
435
            $form->addElement($name_tray);
436
            $form->addElement($email_tray);
437
            $form->addElement($group_select);
438
            $form->addElement($icq_tray);
439
            $form->addElement($aim_tray);
440
            $form->addElement($yim_tray);
441
            $form->addElement($msnm_tray);
442
            $form->addElement($url_text);
443
            $form->addElement($location_text);
444
            $form->addElement($occupation_text);
445
            $form->addElement($interest_text);
446
            $form->addElement($lastlog_more);
447
            $form->addElement($lastlog_less);
448
            $form->addElement($reg_more);
449
            $form->addElement($reg_less);
450
            $form->addElement($posts_more);
451
            $form->addElement($posts_less);
452
            $form->addElement($mailok_radio);
453
            $form->addElement($type_radio);
454
            $form->addElement($sort_select);
455
            $form->addElement($order_select);
456
            //$form->addElement($fct_hidden);
457
            $form->addElement($limit_text);
458
            //$form->addElement($op_hidden);
459
460
            // if this is to find users for a specific group
461
            if (!empty($_GET['group']) && Request::getInt('group', 0, 'GET') > 0) {
462
                $group_hidden = new XoopsFormHidden('group', Request::getInt('group', 0, 'GET') );
463
                $form->addElement($group_hidden);
464
            }
465
            $form->addElement($submit_button);
466
            $form->display();
467
        } else {
468
            //Display data
469
            // Assign Breadcrumb menu
470
            $xoBreadCrumb->addHelp(system_adminVersion('users', 'help'));
471
            $xoBreadCrumb->addTips(_AM_SYSTEM_USERS_NAV_TIPS);
472
            $xoBreadCrumb->render();
473
474
            $requete_search  = '<br><br><strong>See search request: </strong><br><br>';
475
            $requete_pagenav = '';
476
477
            $user_uname = Request::getString('user_uname');
478
            $user_uname_match = Request::getInt('user_uname_match', 0);
479
480
                       $criteria = new CriteriaCompo();
481
            if (!empty($user_uname)) {
482
                $match = (!empty($user_uname_match)) ? $user_uname_match: XOOPS_MATCH_START;
483
                switch ($match) {
484
                    case XOOPS_MATCH_START:
485
                        $criteria->add(new Criteria('uname', $myts->addSlashes($user_uname) . '%', 'LIKE'));
486
                        break;
487
                    case XOOPS_MATCH_END:
488
                        $criteria->add(new Criteria('uname', '%' . $myts->addSlashes($user_uname), 'LIKE'));
489
                        break;
490
                    case XOOPS_MATCH_EQUAL:
491
                        $criteria->add(new Criteria('uname', $myts->addSlashes($user_uname)));
492
                        break;
493
                    case XOOPS_MATCH_CONTAIN:
494
                        $criteria->add(new Criteria('uname', '%' . $myts->addSlashes($user_uname) . '%', 'LIKE'));
495
                        break;
496
                }
497
                $requete_pagenav .= '&amp;user_uname=' . htmlspecialchars($user_uname, ENT_QUOTES | ENT_HTML5) . '&amp;user_uname_match=' . htmlspecialchars($user_uname_match, ENT_QUOTES | ENT_HTML5);
498
                $requete_search .= 'uname : ' . $user_uname . ' et user_uname_match=' . $user_uname_match . '<br>';
499
            }
500
            $user_name = Request::getString('user_name');
501
            $user_name_match = Request::getInt('user_name_match', 0);
502
            if (!empty($user_name)) {
503
                $match = Request::getString('user_name_match', XOOPS_MATCH_START);
504
                switch ($match) {
505
                    case XOOPS_MATCH_START:
506
                        $criteria->add(new Criteria('name', $myts->addSlashes($user_name) . '%', 'LIKE'));
507
                        break;
508
                    case XOOPS_MATCH_END:
509
                        $criteria->add(new Criteria('name', '%' . $myts->addSlashes($user_name)), 'LIKE');
510
                        break;
511
                    case XOOPS_MATCH_EQUAL:
512
                        $criteria->add(new Criteria('name', $myts->addSlashes($user_name)));
513
                        break;
514
                    case XOOPS_MATCH_CONTAIN:
515
                        $criteria->add(new Criteria('name', '%' . $myts->addSlashes(Request::getString('user_name', '', 'POST')) . '%', 'LIKE'));
516
                        break;
517
                }
518
                $requete_pagenav .= '&amp;user_name=' . htmlspecialchars($user_name, ENT_QUOTES | ENT_HTML5) . '&amp;user_name_match=' . htmlspecialchars(Request::getString('user_name_match'), ENT_QUOTES | ENT_HTML5);
519
                $requete_search .= 'name : ' . $user_name . ' et user_name_match=' . $user_name_match . '<br>';
520
            }
521
            $user_email = Request::getString('user_email');
522
            $user_email_match = Request::getInt('user_email_match', 0);
523
            if (!empty($user_email)) {
524
                $match = Request::getString('user_email_match', XOOPS_MATCH_START);
525
                switch ($match) {
526
                    case XOOPS_MATCH_START:
527
                        $criteria->add(new Criteria('email', $myts->addSlashes($user_email) . '%', 'LIKE'));
528
                        break;
529
                    case XOOPS_MATCH_END:
530
                        $criteria->add(new Criteria('email', '%' . $myts->addSlashes($user_email), 'LIKE'));
531
                        break;
532
                    case XOOPS_MATCH_EQUAL:
533
                        $criteria->add(new Criteria('email', $myts->addSlashes($user_email)));
534
                        break;
535
                    case XOOPS_MATCH_CONTAIN:
536
                        $criteria->add(new Criteria('email', '%' . $myts->addSlashes($user_email) . '%', 'LIKE'));
537
                        break;
538
                }
539
                $requete_pagenav .= '&amp;user_email=' . htmlspecialchars($user_email, ENT_QUOTES | ENT_HTML5) . '&amp;user_email_match=' . htmlspecialchars($user_email_match, ENT_QUOTES | ENT_HTML5);
540
                $requete_search .= 'email : ' . $user_email . ' et user_email_match=' . $user_email_match . '<br>';
541
            }
542
            $user_url = Request::getString('user_url');
543
            $user_url_match = Request::getInt('user_url_match', 0);
544
            if (Request::hasVar('user_url')) {
545
                $url = formatURL(Request::getUrl('user_url'));
546
                $criteria->add(new Criteria('url', '%' . $myts->addSlashes($url) . '%', 'LIKE'));
547
                $requete_pagenav .= '&amp;user_url=' . htmlspecialchars(Request::getString('user_url'), ENT_QUOTES | ENT_HTML5);
548
                $requete_search .= 'url : ' . Request::getString('user_url') . '<br>';
549
            }
550
            $user_icq = Request::getString('user_icq');
551
            $user_icq_match = Request::getString('user_icq_match');
552
            if (!empty($user_icq)) {
553
                $match = Request::getString('user_icq_match', XOOPS_MATCH_START);
554
                switch ($match) {
555
                    case XOOPS_MATCH_START:
556
                        $criteria->add(new Criteria('user_icq', $myts->addSlashes($user_icq) . '%', 'LIKE'));
557
                        break;
558
                    case XOOPS_MATCH_END:
559
                        $criteria->add(new Criteria('user_icq', '%' . $myts->addSlashes($user_icq), 'LIKE'));
560
                        break;
561
                    case XOOPS_MATCH_EQUAL:
562
                        $criteria->add(new Criteria('user_icq', $myts->addSlashes($user_icq)));
563
                        break;
564
                    case XOOPS_MATCH_CONTAIN:
565
                        $criteria->add(new Criteria('user_icq', '%' . $myts->addSlashes($user_icq) . '%', 'LIKE'));
566
                        break;
567
                }
568
                $requete_pagenav .= '&amp;user_icq=' . htmlspecialchars($user_icq, ENT_QUOTES | ENT_HTML5) . '&amp;user_icq_match=' . htmlspecialchars($user_icq_match, ENT_QUOTES | ENT_HTML5);
569
                $requete_search .= 'icq : ' . $user_icq . ' et user_icq_match=' . $user_icq_match . '<br>';
570
            }
571
572
            $user_aim = Request::getString('user_aim');
573
            $user_aim_match = Request::getString('user_aim_match');
574
            if (!empty($user_aim)) {
575
                $match = Request::getString('user_aim_match', XOOPS_MATCH_START);
576
                switch ($match) {
577
                    case XOOPS_MATCH_START:
578
                        $criteria->add(new Criteria('user_aim', $myts->addSlashes($user_aim) . '%', 'LIKE'));
579
                        break;
580
                    case XOOPS_MATCH_END:
581
                        $criteria->add(new Criteria('user_aim', '%' . $myts->addSlashes($user_aim), 'LIKE'));
582
                        break;
583
                    case XOOPS_MATCH_EQUAL:
584
                        $criteria->add(new Criteria('user_aim', $myts->addSlashes($user_aim)));
585
                        break;
586
                    case XOOPS_MATCH_CONTAIN:
587
                        $criteria->add(new Criteria('user_aim', '%' . $myts->addSlashes($user_aim) . '%', 'LIKE'));
588
                        break;
589
                }
590
                $requete_pagenav .= '&amp;user_aim=' . htmlspecialchars($user_aim, ENT_QUOTES | ENT_HTML5) . '&amp;user_aim_match=' . htmlspecialchars($user_aim_match, ENT_QUOTES | ENT_HTML5);
591
                $requete_search .= 'aim : ' . $user_aim . ' et user_aim_match=' . $user_aim_match . '<br>';
592
            }
593
            $user_yim = Request::getString('user_yim');
594
            $user_yim_match = Request::getString('user_yim_match');
595
            if (!empty($user_yim)) {
596
                $match = Request::getString('user_yim_match', XOOPS_MATCH_START);
597
                switch ($match) {
598
                    case XOOPS_MATCH_START:
599
                        $criteria->add(new Criteria('user_yim', $myts->addSlashes(Request::getString('user_yim')) . '%', 'LIKE'));
600
                        break;
601
                    case XOOPS_MATCH_END:
602
                        $criteria->add(new Criteria('user_yim', '%' . $myts->addSlashes(Request::getString('user_yim')), 'LIKE'));
603
                        break;
604
                    case XOOPS_MATCH_EQUAL:
605
                        $criteria->add(new Criteria('user_yim', $myts->addSlashes(Request::getString('user_yim'))));
606
                        break;
607
                    case XOOPS_MATCH_CONTAIN:
608
                        $criteria->add(new Criteria('user_yim', '%' . $myts->addSlashes(Request::getString('user_yim')) . '%', 'LIKE'));
609
                        break;
610
                }
611
                $requete_pagenav .= '&amp;user_yim=' . htmlspecialchars(Request::getString('user_yim'), ENT_QUOTES | ENT_HTML5) . '&amp;user_yim_match=' . htmlspecialchars(Request::getString('user_yim_match'), ENT_QUOTES | ENT_HTML5);
612
                $requete_search .= 'yim : ' . Request::getString('user_yim') . ' et user_yim_match=' . Request::getString('user_yim_match') . '<br>';
613
            }
614
615
            $user_msnm = Request::getString('user_msnm');
616
            $user_msnm_match = Request::getString('user_msnm_match');
617
            if (!empty($user_msnm)) {
618
                $match = Request::getString('user_msnm_match', XOOPS_MATCH_START);
619
                switch ($match) {
620
                    case XOOPS_MATCH_START:
621
                        $criteria->add(new Criteria('user_msnm', $myts->addSlashes($user_msnm) . '%', 'LIKE'));
622
                        break;
623
                    case XOOPS_MATCH_END:
624
                        $criteria->add(new Criteria('user_msnm', '%' . $myts->addSlashes($user_msnm), 'LIKE'));
625
                        break;
626
                    case XOOPS_MATCH_EQUAL:
627
                        $criteria->add(new Criteria('user_msnm', $myts->addSlashes($user_msnm)));
628
                        break;
629
                    case XOOPS_MATCH_CONTAIN:
630
                        $criteria->add(new Criteria('user_msnm', '%' . $myts->addSlashes($user_msnm) . '%', 'LIKE'));
631
                        break;
632
                }
633
                $requete_pagenav .= '&amp;user_msnm=' . htmlspecialchars($user_msnm . '&amp;user_msnm_match=' . htmlspecialchars($user_msnm_match, ENT_QUOTES | ENT_HTML5), ENT_QUOTES | ENT_HTML5);
634
                $requete_search .= 'msn : ' . $user_msnm . ' et user_msnm_match=' . $user_msnm_match . '<br>';
635
            }
636
637
            if (Request::hasVar('user_from')) {
638
                $criteria->add(new Criteria('user_from', '%' . $myts->addSlashes(Request::getString('user_from')) . '%', 'LIKE'));
639
                $requete_pagenav .= '&amp;user_from=' . htmlspecialchars(Request::getString('user_from'), ENT_QUOTES | ENT_HTML5);
640
                $requete_search .= 'from : ' . Request::getString('user_from') . '<br>';
641
            }
642
643
            if (Request::hasVar('user_intrest')) {
644
                $criteria->add(new Criteria('user_intrest', '%' . $myts->addSlashes(Request::getString('user_intrest')) . '%', 'LIKE'));
645
                $requete_pagenav .= '&amp;user_intrest=' . htmlspecialchars(Request::getString('user_intrest'), ENT_QUOTES | ENT_HTML5);
646
                $requete_search .= 'interet : ' . Request::getString('user_intrest') . '<br>';
647
            }
648
649
            if (Request::hasVar('user_occ')) {
650
                $criteria->add(new Criteria('user_occ', '%' . $myts->addSlashes(Request::getString('user_occ')) . '%', 'LIKE'));
651
                $requete_pagenav .= '&amp;user_occ=' . htmlspecialchars(Request::getString('user_occ'), ENT_QUOTES | ENT_HTML5);
652
                $requete_search .= 'location : ' . Request::getString('user_occ') . '<br>';
653
            }
654
655
            if (Request::hasVar('user_name_match')) {
656
                $f_user_lastlog_more = Request::getString('user_name_match', XOOPS_MATCH_START);
657
                $time                = time() - (60 * 60 * 24 * $f_user_lastlog_more);
658
                if ($time > 0) {
659
                    $criteria->add(new Criteria('last_login', $time, '<'));
660
                }
661
                $requete_pagenav .= '&amp;user_lastlog_more=' . htmlspecialchars(Request::getString('user_lastlog_more'), ENT_QUOTES | ENT_HTML5);
662
                $requete_search .= 'derniere connexion apres : ' . Request::getString('user_lastlog_more') . '<br>';
663
            }
664
665
            if (Request::hasVar('user_name_match')) {
666
                $f_user_lastlog_less = Request::getString('user_name_match', XOOPS_MATCH_START);
667
                $time                = time() - (60 * 60 * 24 * $f_user_lastlog_less);
668
                if ($time > 0) {
669
                    $criteria->add(new Criteria('last_login', $time, '>'));
670
                }
671
                $requete_pagenav .= '&amp;user_lastlog_less=' . htmlspecialchars(Request::getString('user_lastlog_less'), ENT_QUOTES | ENT_HTML5);
672
                $requete_search .= 'derniere connexion avant : ' . Request::getString('user_lastlog_less') . '<br>';
673
            }
674
675
            if (Request::hasVar('user_reg_more') && is_numeric(Request::getString('user_reg_more'))) {
676
                $f_user_reg_more = (int)Request::getString('user_reg_more');
677
                $time            = time() - (60 * 60 * 24 * $f_user_reg_more);
678
                if ($time > 0) {
679
                    $criteria->add(new Criteria('user_regdate', $time, '<'));
680
                }
681
                $requete_pagenav .= '&amp;user_regdate=' . htmlspecialchars(Request::getString('user_regdate'), ENT_QUOTES | ENT_HTML5);
682
                $requete_search .= 'enregistre apres : ' . Request::getString('user_reg_more') . '<br>';
683
            }
684
685
686
            if (Request::hasVar('user_reg_less') && is_numeric(Request::getString('user_reg_less'))) {
687
                $f_user_reg_less = (int)Request::getString('user_reg_less');
688
                $time            = time() - (60 * 60 * 24 * $f_user_reg_less);
689
                if ($time > 0) {
690
                    $criteria->add(new Criteria('user_regdate', $time, '>'));
691
                }
692
                $requete_pagenav .= '&amp;user_reg_less=' . htmlspecialchars(Request::getString('user_reg_less'), ENT_QUOTES | ENT_HTML5);
693
                $requete_search .= 'enregistre avant : ' . Request::getString('user_reg_less') . '<br>';
694
            }
695
696
            if (Request::hasVar('user_posts_more') && is_numeric(Request::getString('user_posts_more'))) {
697
                $criteria->add(new Criteria('posts', (int)Request::getString('user_posts_more'), '>'));
698
                $requete_pagenav .= '&amp;user_posts_more=' . htmlspecialchars(Request::getString('user_posts_more'), ENT_QUOTES | ENT_HTML5);
699
                $requete_search .= 'posts plus de : ' . Request::getString('user_posts_more') . '<br>';
700
            }
701
702
            if (Request::hasVar('user_posts_less') && is_numeric(Request::getString('user_posts_less'))) {
703
                $criteria->add(new Criteria('posts', (int)Request::getString('user_posts_less'), '<'));
704
                $requete_pagenav .= '&amp;user_posts_less=' . htmlspecialchars(Request::getString('user_posts_less'), ENT_QUOTES | ENT_HTML5);
705
                $requete_search .= 'post moins de : ' . Request::getString('user_posts_less') . '<br>';
706
            }
707
708
            if (Request::hasVar('user_mailok')) {
709
                if (Request::getString('user_mailok') === 'mailng') {
710
                    $criteria->add(new Criteria('user_mailok', 0));
711
                } elseif (Request::getString('user_mailok') === 'mailok') {
712
                    $criteria->add(new Criteria('user_mailok', 1));
713
                } else {
714
                    $criteria->add(new Criteria('user_mailok', 0, '>='));
715
                }
716
                $requete_pagenav .= '&amp;user_mailok=' . htmlspecialchars(Request::getString('user_mailok'), ENT_QUOTES | ENT_HTML5);
717
                $requete_search .= 'accept email : ' . Request::getString('user_mailok') . '<br>';
718
            }
719
720
            if (Request::hasVar('user_type')) {
721
                if (Request::getString('user_type') === 'inactv') {
722
                    $criteria->add(new Criteria('level', 0, '='));
723
                    $user_type = 'inactv';
724
                    $requete_search .= 'actif ou inactif : inactif<br>';
725
                } elseif (Request::getString('user_type') === 'actv') {
726
                    $criteria->add(new Criteria('level', 0, '>'));
727
                    $user_type = 'actv';
728
                    $requete_search .= 'actif ou inactif : actif<br>';
729
                }
730
                $requete_pagenav .= '&amp;user_type=' . htmlspecialchars(Request::getString('user_type'), ENT_QUOTES | ENT_HTML5);
731
            } else {
732
                $criteria->add(new Criteria('level', 0, '>='));
733
                $user_type = '';
734
                $requete_search .= 'actif ou inactif : admin et user<br>';
735
            }
736
737
            $validsort = array('uname', 'email', 'last_login', 'user_regdate', 'posts');
738
            if (Request::hasVar('user_sort')) {
739
                $userSort = Request::getString('user_sort');
740
                $sort = (!in_array($userSort, $validsort)) ? 'uid' : $userSort;
741
                $requete_pagenav .= '&amp;user_sort=' . htmlspecialchars($userSort, ENT_QUOTES | ENT_HTML5);
742
                $requete_search .= 'order by : ' . $sort . '<br>';
743
            } else {
744
                $sort = 'uid';
745
                $requete_pagenav .= '&amp;user_sort=uid';
746
                $requete_search .= 'order by : ' . $sort . '<br>';
747
            }
748
749
            $order = 'DESC';
750
            if (Request::hasVar('user_order') && Request::getString('user_order') === 'ASC') {
751
                $requete_pagenav .= '&amp;user_order=ASC';
752
                $requete_search .= 'tris : ' . $order . '<br>';
753
            } else {
754
                //$order = "ASC";
755
                $requete_pagenav .= '&amp;user_order=DESC';
756
                $requete_search .= 'tris : ' . $order . '<br>';
757
            }
758
759
            $user_limit = (int)xoops_getModuleOption('users_pager', 'system');
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

759
            $user_limit = (int)/** @scrutinizer ignore-deprecated */ xoops_getModuleOption('users_pager', 'system');
Loading history...
760
            if (Request::hasVar('user_limit')) {
761
                $user_limit = Request::getInt('user_limit');
762
                $requete_pagenav .= '&amp;user_limit=' . htmlspecialchars(Request::getString('user_limit'), ENT_QUOTES | ENT_HTML5);
763
                $requete_search .= 'limit : ' . $user_limit . '<br>';
764
            } else {
765
                $requete_pagenav .= '&amp;user_limit=' . xoops_getModuleOption('users_pager', 'system');
0 ignored issues
show
Deprecated Code introduced by
The function xoops_getModuleOption() has been deprecated. ( Ignorable by Annotation )

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

765
                $requete_pagenav .= '&amp;user_limit=' . /** @scrutinizer ignore-deprecated */ xoops_getModuleOption('users_pager', 'system');
Loading history...
766
                $requete_search .= 'limit : ' . $user_limit . '<br>';
767
            }
768
769
            $start = Request::getInt('start');
770
                $groups = array();
771
            $selgroups = array();
772
            if (Request::hasVar('selgroups') && $_REQUEST['selgroups'] != '') {
773
                $selgroups = Request::getArray('selgroups', array()); // Default to an empty array if 'selgroups' is not set
774
                if (empty($selgroups)) {
775
                    // If 'selgroups' is an empty array, try to get it as an integer
776
                    $selgroupsInt = Request::getInt('selgroups', 0);
777
                    if ($selgroupsInt != 0) {
778
                        $groups = array($selgroupsInt);
779
                }
780
            } else {
781
                    $groups = array_map('intval', $selgroups);
782
                }
783
                $requete_pagenav .= '&amp;selgroups=' . htmlspecialchars(implode(',', $selgroups), ENT_QUOTES | ENT_HTML5);
784
            }
785
            //print_r($groups);
786
            /** @var XoopsMemberHandler $member_handler */
787
            $member_handler = xoops_getHandler('member');
788
789
            if (empty($groups)) {
790
                $users_count = $member_handler->getUserCount($criteria);
791
            } else {
792
                $users_count = $member_handler->getUserCountByGroupLink($groups, $criteria);
793
            }
794
            if ($start < $users_count) {
795
                echo sprintf(_AM_SYSTEM_USERS_USERSFOUND, $users_count) . '<br>';
796
                $criteria->setSort($sort);
797
                $criteria->setOrder($order);
798
                $criteria->setLimit($user_limit);
799
                $criteria->setStart($start);
800
                $users_arr = $member_handler->getUsersByGroupLink($groups, $criteria, true);
801
                $ucount    = 0;
802
            }
803
804
            $xoopsTpl->assign('users_count', $users_count);
805
            $xoopsTpl->assign('users_display', true);
806
807
            //User limit
808
            $user_limit = Request::getInt('user_limit',  20);
809
            //User type
810
            $user_type = Request::getString('user_type');
811
            //selgroups
812
            $selgroups = Request::getString('selgroups'); //TODO should it be an array?
813
            $user_uname = Request::getString('username');
814
815
            //Form tris
816
            $form          = '<form action="admin.php?fct=users" method="post">
817
                    ' . _AM_SYSTEM_USERS_SEARCH_USER . '<input type="text" name="user_uname" value="' . $myts->htmlSpecialChars($user_uname) . '" size="15">
818
                    <select name="selgroups">
819
                        <option value="" selected>' . _AM_SYSTEM_USERS_ALLGROUP . '</option>';
820
            /** @var XoopsGroupHandler $group_handler */
821
            $group_handler = xoops_getHandler('group');
822
            $group_arr     = $group_handler->getObjects();
823
            foreach (array_keys($group_arr) as $i) {
824
                if ($group_arr[$i]->getVar('groupid') != XOOPS_GROUP_ANONYMOUS) {
825
                    $form .= '<option value="' . $group_arr[$i]->getVar('groupid') . '"  ' . ($selgroups == $group_arr[$i]->getVar('groupid') ? ' selected' : '') . '>' . $group_arr[$i]->getVar('name') . '</option>';
826
                }
827
            }
828
            $form .= '</select>&nbsp;
829
                <select name="user_type">
830
                    <option value="" ' . ($user_type === '' ? ' selected' : '') . '>' . _AM_SYSTEM_USERS_ALLUSER . '</option>
831
                    <option value="actv" ' . ($user_type === 'actv' ? ' selected' : '') . '>' . _AM_SYSTEM_USERS_ACTIVEUSER . '</option>
832
                    <option value="inactv" ' . ($user_type === 'inactv' ? ' selected' : '') . '>' . _AM_SYSTEM_USERS_INACTIVEUSER . '</option>
833
                </select>&nbsp;
834
                <select name="user_limit">
835
                    <option value="20" ' . ($user_limit == 20 ? ' selected' : '') . '>20</option>
836
                    <option value="50" ' . ($user_limit == 50 ? ' selected' : '') . '>50</option>
837
                    <option value="100" ' . ($user_limit == 100 ? ' selected' : '') . '>100</option>
838
                </select>&nbsp;
839
                <input type="hidden" name="user_uname_match" value="XOOPS_MATCH_START" />
840
                <input type="submit" value="' . _AM_SYSTEM_USERS_SEARCH . '" name="speed_search">&nbsp;
841
                <input type="submit" value="' . _AM_SYSTEM_USERS_ADVANCED_SEARCH . '" name="complet_search"></form>
842
                ';
843
844
            //select groupe
845
            $form_select_groups = '<select  name="selgroups" id="selgroups"   style="display:none;"><option value="">---------</option>';
846
            //$module_array[0] = _AM_SYSTEM_USERS_COMMENTS_FORM_ALL_MODS;
847
            $group_handler = xoops_getHandler('group');
848
            $group_arr     = $group_handler->getObjects();
849
            foreach (array_keys($group_arr) as $i) {
850
                if ($group_arr[$i]->getVar('groupid') != XOOPS_GROUP_ANONYMOUS) {
851
                    $form_select_groups .= '<option value="' . $group_arr[$i]->getVar('groupid') . '"  ' . ($selgroups == $group_arr[$i]->getVar('groupid') ? ' selected' : '') . '>' . $group_arr[$i]->getVar('name') . '</option>';
852
                }
853
            }
854
            $form_select_groups .= '</select><input type="hidden" name="op" value="users_add_delete_group">';
855
856
            $xoopsTpl->assign('form_sort', $form);
857
            $xoopsTpl->assign('form_select_groups', $form_select_groups);
858
859
            // add token to render in template
860
            $tokenElement = new XoopsFormHiddenToken();
861
            $token = $tokenElement->render();
862
            $xoopsTpl->assign('form_token', $token);
863
864
            //echo $requete_search;
865
            if ($users_count > 0) {
866
                //echo $requete_search;
867
                foreach (array_keys($users_arr) as $i) {
868
                    //Display group
869
                    $user_group = $member_handler->getGroupsByUser($users_arr[$i]->getVar('uid'));
870
                    if (in_array(XOOPS_GROUP_ADMIN, $user_group)) {
871
                        $users['group'] = system_AdminIcons('xoops/group_1.png');
872
                        //$users['icon'] = '<img src="'.XOOPS_URL.'/modules/system/images/icons/admin.png" alt="'._AM_SYSTEM_USERS_ADMIN.'" title="'._AM_SYSTEM_USERS_ADMIN.'" />';
873
                        $users['checkbox_user'] = false;
874
                    } else {
875
                        $users['group'] = system_AdminIcons('xoops/group_2.png');
876
                        //$users['icon'] = '<img src="'.XOOPS_URL.'/modules/system/images/icons/user.png" alt="'._AM_SYSTEM_USERS_USER.'" title="'._AM_SYSTEM_USERS_USER.'" />';
877
                        $users['checkbox_user'] = true;
878
                    }
879
                    $users['uid']         = $users_arr[$i]->getVar('uid');
880
                    $users['name']        = $users_arr[$i]->getVar('name');
881
                    $users['uname']       = $users_arr[$i]->getVar('uname');
882
                    $users['email']       = $users_arr[$i]->getVar('email');
883
                    $users['url']         = $users_arr[$i]->getVar('url');
884
                    $users['user_avatar'] = ($users_arr[$i]->getVar('user_avatar') === 'blank.gif') ? system_AdminIcons('anonymous.png') : XOOPS_URL . '/uploads/' . $users_arr[$i]->getVar('user_avatar');
885
                    $users['reg_date']    = formatTimestamp($users_arr[$i]->getVar('user_regdate'), 'm');
886
                    if ($users_arr[$i]->getVar('last_login') > 0) {
887
                        $users['last_login'] = formatTimestamp($users_arr[$i]->getVar('last_login'), 'm');
888
                    } else {
889
                        $users['last_login'] = _AM_SYSTEM_USERS_NOT_CONNECT;
890
                    }
891
                    $users['user_level'] = $users_arr[$i]->getVar('level');
892
                    $users['user_icq']   = $users_arr[$i]->getVar('user_icq');
893
                    $users['user_aim']   = $users_arr[$i]->getVar('user_aim');
894
                    $users['user_yim']   = $users_arr[$i]->getVar('user_yim');
895
                    $users['user_msnm']  = $users_arr[$i]->getVar('user_msnm');
896
897
                    $users['posts'] = $users_arr[$i]->getVar('posts');
898
899
                    $xoopsTpl->appendByRef('users', $users);
900
                    $xoopsTpl->appendByRef('users_popup', $users);
901
                    unset($users);
902
                }
903
            } else {
904
                $xoopsTpl->assign('users_no_found', true);
905
            }
906
907
            if ($users_count > $user_limit) {
908
                include_once XOOPS_ROOT_PATH . '/class/pagenav.php';
909
                $nav = new XoopsPageNav($users_count, $user_limit, $start, 'start', 'fct=users&amp;op=default' . $requete_pagenav);
910
                $xoopsTpl->assign('nav', $nav->renderNav());
911
            }
912
        }
913
        break;
914
}
915
// Call Footer
916
xoops_cp_footer();
917