|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
/** |
|
4
|
|
|
* Xoops Members Module |
|
5
|
|
|
* |
|
6
|
|
|
* You may not change or alter any portion of this comment or credits |
|
7
|
|
|
* of supporting developers from this source code or any supporting source code |
|
8
|
|
|
* which is considered copyrighted (c) material of the original comment or credit authors. |
|
9
|
|
|
* This program is distributed in the hope that it will be useful, |
|
10
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
|
12
|
|
|
* |
|
13
|
|
|
* @copyright XOOPS Project (https://xoops.org) |
|
14
|
|
|
* @license http://www.fsf.org/copyleft/gpl.html GNU public license |
|
15
|
|
|
* @package Xoops Members |
|
16
|
|
|
* @since 2.3.0 |
|
17
|
|
|
* @author onokazu |
|
18
|
|
|
* @author John Neill |
|
19
|
|
|
*/ |
|
20
|
|
|
|
|
21
|
|
|
$xoopsOption['template_main'] = 'xoopsmembers_index.tpl'; |
|
22
|
|
|
require_once __DIR__ . '/header.php'; |
|
23
|
|
|
//global $pathIcon16; |
|
24
|
|
|
|
|
25
|
|
|
global $xoopsModule; |
|
26
|
|
|
|
|
27
|
|
|
/** @var \XoopsMemberHandler $memberHandler */ |
|
28
|
|
|
$memberHandler = xoops_getHandler('member'); |
|
29
|
|
|
$total = $memberHandler->getUserCount(new Criteria('level', 0, '>')); |
|
30
|
|
|
|
|
31
|
|
|
$iamadmin = $xoopsUserIsAdmin; |
|
32
|
|
|
$myts = \MyTextSanitizer::getInstance(); |
|
33
|
|
|
$criteria = new \CriteriaCompo(); |
|
34
|
|
|
|
|
35
|
|
|
$criteria->add(new \Criteria('level', 0, '>')); |
|
36
|
|
|
$validsort = ['uname', 'name', 'last_login', 'user_regdate', 'posts']; |
|
37
|
|
|
$sort = (!in_array($helper->getModule()->getInfo('sortmembers'), $validsort)) ? 'uname' : $helper->getModule()->getInfo('sortmembers'); |
|
38
|
|
|
|
|
39
|
|
|
$order = 'ASC'; |
|
40
|
|
|
$temp = $helper->getModule()->getInfo('membersorder'); |
|
41
|
|
|
if (isset($temp) && 'DESC' == $temp) { |
|
42
|
|
|
$order = 'DESC'; |
|
43
|
|
|
} |
|
44
|
|
|
$limit = \Xmf\Request::getInt('limit', 20, 'POST'); |
|
45
|
|
|
if (0 == $limit || $limit > 50) { |
|
46
|
|
|
$limit = 50; |
|
47
|
|
|
} |
|
48
|
|
|
|
|
49
|
|
|
$start = \Xmf\Request::getInt('start', 0, 'POST'); |
|
50
|
|
|
$total = $memberHandler->getUserCount($criteria); |
|
51
|
|
|
$xoopsTpl->assign('totalmember', $total); |
|
52
|
|
|
|
|
53
|
|
|
//Show last member |
|
54
|
|
|
$result = $GLOBALS['xoopsDB']->query("SELECT uid, uname FROM ".$GLOBALS['xoopsDB']->prefix("users")." WHERE level > 0 ORDER BY uid DESC", 1, 0); |
|
55
|
|
|
list($latestuid, $latestuser) = $GLOBALS['xoopsDB']->fetchRow($result); |
|
56
|
|
|
$xoopsTpl->assign('latestmember', " <a href='".XOOPS_URL."/userinfo.php?uid=".$latestuid."'>".$latestuser."</a>"); |
|
57
|
|
|
$xoopsTpl->assign('welcomemessage', $xoopsModuleConfig['welcomemessage']); |
|
58
|
|
|
|
|
59
|
|
|
if (0 == $total) { |
|
60
|
|
|
} elseif ($start < $total) { |
|
61
|
|
|
if ($iamadmin) { |
|
62
|
|
|
$xoopsTpl->assign('is_admin', true); |
|
63
|
|
|
} |
|
64
|
|
|
$criteria->setSort($sort); |
|
65
|
|
|
$criteria->setOrder($order); |
|
66
|
|
|
$criteria->setStart($start); |
|
67
|
|
|
$criteria->setLimit($limit); |
|
68
|
|
|
$foundusers = $memberHandler->getUsers($criteria, true); |
|
69
|
|
|
foreach (array_keys($foundusers) as $j) { |
|
70
|
|
|
$userdata['avatar'] = $foundusers[$j]->getVar('user_avatar') ? '<img src="' . XOOPS_UPLOAD_URL . '/' . $foundusers[$j]->getVar('user_avatar') . '" alt="">' : ' '; |
|
71
|
|
|
$userdata['realname'] = $foundusers[$j]->getVar('name') ?: ' '; |
|
72
|
|
|
$userdata['name'] = $foundusers[$j]->getVar('uname'); |
|
73
|
|
|
$userdata['id'] = $foundusers[$j]->getVar('uid'); |
|
74
|
|
|
if (1 == $foundusers[$j]->getVar('user_viewemail') || $iamadmin) { |
|
75
|
|
|
$userdata['email'] = '<a href="mailto:' . $foundusers[$j]->getVar('email') . '"><img src="' . XOOPS_URL . '/images/icons/email.gif" border="0" alt="' . sprintf(_SENDEMAILTO, $foundusers[$j]->getVar('uname', 'e')) . '"></a>'; |
|
76
|
|
|
} else { |
|
77
|
|
|
$userdata['email'] = ' '; |
|
78
|
|
|
} |
|
79
|
|
|
if ($xoopsUser) { |
|
80
|
|
|
$userdata['pmlink'] = '<a href="javascript:openWithSelfMain(\'' . XOOPS_URL . '/pmlite.php?send2=1&to_userid=' . $foundusers[$j]->getVar('uid') . '\',\'pmlite\',450,370);"><img src="' . XOOPS_URL . '/images/icons/pm.gif" border="0" alt="' . sprintf(_SENDPMTO, $foundusers[$j]->getVar('uname', 'e')) . '"></a>'; |
|
81
|
|
|
} else { |
|
82
|
|
|
$userdata['pmlink'] = ' '; |
|
83
|
|
|
} |
|
84
|
|
|
if ('' != $foundusers[$j]->getVar('url', 'e')) { |
|
85
|
|
|
$userdata['website'] = '<a href="' . $foundusers[$j]->getVar('url', 'e') . '" target="_blank"><img src="' . XOOPS_URL . '/images/icons/www.gif" border="0" alt="' . _VISITWEBSITE . '"></a>'; |
|
86
|
|
|
} else { |
|
87
|
|
|
$userdata['website'] = ' '; |
|
88
|
|
|
} |
|
89
|
|
|
$userdata['registerdate'] = formatTimestamp($foundusers[$j]->getVar('user_regdate'), 's'); |
|
90
|
|
|
if (0 != $foundusers[$j]->getVar('last_login')) { |
|
91
|
|
|
$userdata['lastlogin'] = formatTimestamp($foundusers[$j]->getVar('last_login'), 'm'); |
|
92
|
|
|
} else { |
|
93
|
|
|
$userdata['lastlogin'] = ' '; |
|
94
|
|
|
} |
|
95
|
|
|
$userdata['posts'] = $foundusers[$j]->getVar('posts'); |
|
96
|
|
|
if ($iamadmin) { |
|
97
|
|
|
$userdata['adminlink'] = '<a href="' . XOOPS_URL . '/modules/system/admin.php?fct=users&uid=' . $foundusers[$j]->getVar('uid') . '&op=users_edit">' . '<img src=' . $pathIcon16 . '/edit.png' . " alt='" . _EDIT . "' title='" . _EDIT . "'>" |
|
98
|
|
|
|
|
99
|
|
|
. '</a> | <a href="' . XOOPS_URL . '/modules/system/admin.php?fct=users&op=users_delete&uid=' . $foundusers[$j]->getVar('uid') . '">' . '<img src=' . $pathIcon16 . '/delete.png' . " alt='" . _DELETE . "' title='" . _DELETE . "'>" . '</a>'; |
|
100
|
|
|
} |
|
101
|
|
|
$xoopsTpl->append('users', $userdata); |
|
102
|
|
|
} |
|
103
|
|
|
|
|
104
|
|
|
$totalpages = ceil($total / $limit); |
|
105
|
|
|
if ($totalpages > 1) { |
|
106
|
|
|
$hiddenform = '<form name="findnext" action="index.php" method="post">'; |
|
107
|
|
|
foreach ($_POST as $k => $v) { |
|
108
|
|
|
$hiddenform .= '<input type="hidden" name="' . $myts->htmlSpecialChars($k) . '" value="' . $myts->previewTarea($v) . '">'; |
|
109
|
|
|
} |
|
110
|
|
|
if (!isset($_POST['limit'])) { |
|
111
|
|
|
$hiddenform .= '<input type="hidden" name="limit" value="' . $limit . '">'; |
|
112
|
|
|
} |
|
113
|
|
|
if (!isset($_POST['start'])) { |
|
114
|
|
|
$hiddenform .= '<input type="hidden" name="start" value="' . $start . '">'; |
|
115
|
|
|
} |
|
116
|
|
|
$prev = $start - $limit; |
|
117
|
|
|
if ($start - $limit >= 0) { |
|
118
|
|
|
$hiddenform .= '<a href="#0" onclick="javascript:document.findnext.start.value=' . $prev . ';document.findnext.submit();">' . _MD_XOOPSMEMBERS_PREVIOUS . '</a> '; |
|
119
|
|
|
} |
|
120
|
|
|
$counter = 1; |
|
121
|
|
|
$currentpage = ($start + $limit) / $limit; |
|
122
|
|
|
while ($counter <= $totalpages) { |
|
123
|
|
|
if ($counter == $currentpage) { |
|
124
|
|
|
$hiddenform .= '<b>' . $counter . '</b> '; |
|
125
|
|
|
} elseif (($counter > $currentpage - 4 && $counter < $currentpage + 4) || 1 == $counter || $counter == $totalpages) { |
|
126
|
|
|
if ($counter == $totalpages && $currentpage < $totalpages-4) { |
|
127
|
|
|
$hiddenform .= '... '; |
|
128
|
|
|
} |
|
129
|
|
|
$hiddenform .= '<a href="#' . $counter . '" onclick="javascript:document.findnext.start.value=' . ($counter-1) * $limit . ';document.findnext.submit();">' . $counter . '</a> '; |
|
130
|
|
|
if (1 == $counter && $currentpage > 5) { |
|
131
|
|
|
$hiddenform .= '... '; |
|
132
|
|
|
} |
|
133
|
|
|
} |
|
134
|
|
|
$counter++; |
|
135
|
|
|
} |
|
136
|
|
|
$next = $start + $limit; |
|
137
|
|
|
if ($total > $next) { |
|
138
|
|
|
$hiddenform .= ' <a href="#' . $total . '" onclick="javascript:document.findnext.start.value=' . $next . ';document.findnext.submit();">' . _MD_XOOPSMEMBERS_NEXT . '</a>'; |
|
139
|
|
|
} |
|
140
|
|
|
$hiddenform .= '</form>'; |
|
141
|
|
|
$xoopsTpl->assign('pagenav', $hiddenform); |
|
142
|
|
|
$xoopsTpl->assign('lang_numfound', sprintf(_MD_XOOPSMEMBERS_USERSFOUND, $total)); |
|
143
|
|
|
} |
|
144
|
|
|
} |
|
145
|
|
|
|
|
146
|
|
|
include 'footer.php'; |
|
147
|
|
|
include_once XOOPS_ROOT_PATH . '/footer.php'; |
|
148
|
|
|
exit(); |
|
149
|
|
|
|
|
150
|
|
|
/** |
|
151
|
|
|
* xoops_Criteria() |
|
152
|
|
|
* |
|
153
|
|
|
* @param $criteria |
|
154
|
|
|
* @param string $name |
|
155
|
|
|
* @param string $ret |
|
156
|
|
|
* @param string $match |
|
157
|
|
|
* @return void |
|
158
|
|
|
*/ |
|
159
|
|
|
function xoops_Criteria(&$criteria, $name = '', $ret = '', $match = '') |
|
|
|
|
|
|
160
|
|
|
{ |
|
161
|
|
|
global $criteria; |
|
162
|
|
|
|
|
163
|
|
|
switch ($match) { |
|
164
|
|
|
case XOOPS_MATCH_START: |
|
165
|
|
|
$criteria->add(new \Criteria($name, $ret . '%', 'LIKE')); |
|
166
|
|
|
break; |
|
167
|
|
|
case XOOPS_MATCH_END: |
|
168
|
|
|
$criteria->add(new \Criteria($name, '%' . $ret . '%', 'LIKE')); |
|
169
|
|
|
break; |
|
170
|
|
|
case XOOPS_MATCH_EQUAL: |
|
171
|
|
|
$criteria->add(new \Criteria($name, $ret)); |
|
172
|
|
|
break; |
|
173
|
|
|
case XOOPS_MATCH_CONTAIN: |
|
174
|
|
|
$criteria->add(new \Criteria($name, '%' . $ret . '%', 'LIKE')); |
|
175
|
|
|
break; |
|
176
|
|
|
} |
|
177
|
|
|
} |
|
178
|
|
|
|
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.