📄 findusers.php
字号:
echo "</html><body>";
echo "<h2 style='text-align:left;'>"._MA_USER_FINDUS." - ".$modes[$mode]."</h2>";
$modes_switch = array();
foreach ($modes as $_mode => $title) {
if ($mode == $_mode) continue;
$modes_switch[] = "<a href='findusers.php?target=".htmlspecialchars(@$_REQUEST["target"], ENT_QUOTES)."&multiple=".htmlspecialchars(@$_REQUEST["multiple"], ENT_QUOTES)."&token=".htmlspecialchars($token, ENT_QUOTES)."&mode={$_mode}'>{$title}</a>";
}
echo "<h4>".implode(" | ", $modes_switch)."</h4>";
echo "(".sprintf(_MA_USER_ACTUS, "<span style='color:#ff0000;'>$acttotal</span>")." ".sprintf(_MA_USER_INACTUS, "<span style='color:#ff0000;'>$inacttotal</span>").")";
$form->display();
} else {
$myts =& MyTextSanitizer::getInstance();
$limit = empty($_POST['limit']) ? 50 : intval( $_POST['limit'] );
$start = intval( @$_POST['start'] );
if (!isset($_POST["query"])) {
$criteria = new CriteriaCompo();
foreach (array_keys($items_match) as $var) {
if ( !empty($_POST[$var]) ) {
$match = (!empty($_POST["{$var}_match"])) ? intval($_POST["{$var}_match"]) : XOOPS_MATCH_START;
$value = str_replace("_", "\\\_", $myts->addSlashes(trim($_POST[$var])));
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria($var, $value.'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria($var, '%'.$value, 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria($var, $value));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria($var, '%'.$value.'%', 'LIKE'));
break;
}
}
}
if ( !empty($_POST['url']) ) {
$url = formatURL(trim($_POST['url']));
$criteria->add(new Criteria('url', $url.'%', 'LIKE'));
}
if ( !empty($_POST['user_from']) ) {
$criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_from'])).'%', 'LIKE'));
}
if ( !empty($_POST['user_intrest']) ) {
$criteria->add(new Criteria('user_intrest', '%'.$myts->addSlashes(trim($_POST['user_intrest'])).'%', 'LIKE'));
}
if ( !empty($_POST['user_occ']) ) {
$criteria->add(new Criteria('user_occ', '%'.$myts->addSlashes(trim($_POST['user_occ'])).'%', 'LIKE'));
}
foreach (array("last_login", "user_regdate") as $var) {
if ( !empty($_POST["{$var}_more"]) && is_numeric($_POST["{$var}_more"]) ) {
$time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_more"])));
if ( $time > 0 ) {
$criteria->add(new Criteria($var, $time, '<='));
}
}
if ( !empty($_POST["{$var}_less"]) && is_numeric($_POST["{$var}_less"]) ) {
$time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_less"])));
if ( $time > 0 ) {
$criteria->add(new Criteria($var, $time, '>='));
}
}
}
if ( !empty($_POST['posts_more']) && is_numeric($_POST['posts_more']) ) {
$criteria->add(new Criteria('posts', intval($_POST['posts_more']), '<='));
}
if ( !empty($_POST['posts_less']) && is_numeric($_POST['posts_less']) ) {
$criteria->add(new Criteria('posts', intval($_POST['posts_less']), '>='));
}
if ( !empty($_POST['user_mailok']) ) {
if ( $_POST['user_mailok'] == "mailng" ) {
$criteria->add(new Criteria('user_mailok', 0));
} elseif ( $_POST['user_mailok'] == "mailok" ) {
$criteria->add(new Criteria('user_mailok', 1));
}
}
if ( !empty($_POST['user_avatar']) ) {
if ( $_POST['user_avatar'] == "y" ) {
$criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'NOT IN'));
} elseif ( $_POST['user_avatar'] == "n" ) {
$criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'IN'));
}
}
if ( !empty($_POST['level']) ) {
$level_value = array(1 => 1, 2 => 0, 3 => -1);
$level = isset($level_value[intval($_POST["level"])]) ? $level_value[intval($_POST["level"])] : 1;
$criteria->add(new Criteria("level", $level));
}
if ( !empty($_POST['rank']) ) {
$rank_obj = $rank_handler->get( $_POST['rank'] );
if ($rank_obj->getVar("rank_special")) {
$criteria->add(new Criteria("rank", intval($_POST['rank'])));
} else {
if ($rank_obj->getVar("rank_min")) {
$criteria->add(new Criteria('posts', $rank_obj->getVar("rank_min"), '>='));
}
if ($rank_obj->getVar("rank_max")) {
$criteria->add(new Criteria('posts', $rank_obj->getVar("rank_max"), '<='));
}
}
}
$total = $user_handler->getCount($criteria, @$_POST["groups"]);
$validsort = array("uname", "email", "last_login", "user_regdate", "posts");
$sort = (!in_array($_POST['user_sort'], $validsort)) ? "uname" : $_POST['user_sort'];
$order = "ASC";
if ( isset($_POST['user_order']) && $_POST['user_order'] == "DESC") {
$order = "DESC";
}
$criteria->setSort($sort);
$criteria->setOrder($order);
$criteria->setLimit($limit);
$criteria->setStart($start);
$foundusers = $user_handler->getAll($criteria, @$_POST["groups"]);
} else {
$query = trim($_POST["query"]);
// Query with alias
if (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."[\s]+as[\s]+([^\s]+).*)/i", $query, $matches) ) {
$alias = $matches[2];
$subquery = $matches[1];
// Query without alias
} elseif (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."\b.*)/i", $query, $matches) ) {
$alias = "";
$subquery = $matches[1];
// Invalid query
} else {
$query = "SELECT * FROM ".$xoopsDB->prefix("users");
$subquery = $xoopsDB->prefix("users");
}
$sql_count = "SELECT COUNT(DISTINCT ".(empty($alias) ? "" : $alias . "." )."uid) FROM ". $subquery;
$result = $xoopsDB->query($sql_count);
list($total) = $xoopsDB->FetchRow($result);
$result = $xoopsDB->query($query, $limit, $start);
$foundusers = array();
while ($myrow = $xoopsDB->fetchArray($result)) {
$object =& $user_handler->create(false);
$object->assignVars($myrow);
$foundusers[$myrow["uid"]] = $object;
unset($object);
}
}
echo $js_adduser='
<script type="text/javascript">
var multiple='.intval($_REQUEST['multiple']).';
function addusers()
{
var sel_str = "";
var num = 0;
var mForm = document.forms["'.$name_form.'"];
for (var i=0;i!=mForm.elements.length;i++) {
var id=mForm.elements[i];
if ( ( (multiple > 0 && id.type == "checkbox") || (multiple == 0 && id.type == "radio") ) && (id.checked == true) && ( id.name == "'.$name_userid.'" ) ) {
var name = mForm.elements[++i];
var len = id.value.length + name.value.length;
sel_str += len + ":" + id.value + ":" + name.value;
num ++;
}
}
if (num == 0) {
alert("'._MA_USER_NOUSERSELECTED.'");
return false;
}
sel_str = num + ":" + sel_str;
window.opener.addusers(sel_str);
alert("'._MA_USER_USERADDED.'");
if (multiple == 0) {
window.close();
window.opener.focus();
}
return true;
}
</script>
';
echo "</html><body>";
echo "<a href='findusers.php?target=".htmlspecialchars(@$_POST["target"], ENT_QUOTES)."&multiple=".intval(@$_POST["multiple"])."&token=".htmlspecialchars($token, ENT_QUOTES)."'>". _MA_USER_FINDUS ."</a> <span style='font-weight:bold;'>»»</span> ". _MA_USER_RESULTS."<br /><br />";
if ( empty($start) && empty($foundusers) ) {
echo "<h4>"._MA_USER_NOFOUND,"</h4>";
$hiddenform = "<form name='findnext' action='findusers.php' method='post'>";
foreach ( $_POST as $k => $v ) {
if ($k == 'XOOPS_TOKEN_REQUEST') {
// regenerate token value
$hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n";
} else {
$hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n";
}
}
if (!isset($_POST['limit'])) {
$hiddenform .= "<input type='hidden' name='limit' value='{$limit}' />\n";
}
if (!isset($_POST['start'])) {
$hiddenform .= "<input type='hidden' name='start' value='{$start}' />\n";
}
$hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
$hiddenform .= "</form>";
echo "<div>".$hiddenform;
echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n";
echo "</div>";
} elseif ( $start < $total ) {
if ( !empty($total) ) {
echo sprintf(_MA_USER_USERSFOUND, $total)."<br />";
}
if (!empty($foundusers)) {
echo "<form action='findusers.php' method='post' name='{$name_form}' id='{$name_form}'>
<table width='100%' border='0' cellspacing='1' cellpadding='4' class='outer'>
<tr>
<th align='center' width='5px'>";
if (!empty($_POST["multiple"])) {
echo "<input type='checkbox' name='memberslist_checkall' id='memberslist_checkall' onclick='xoopsCheckAll(\"{$name_form}\", \"memberslist_checkall\");' />";
}
echo "</th>
<th align='center'>"._MA_USER_UNAME."</th>
<th align='center'>"._MA_USER_REALNAME."</th>
<th align='center'>"._MA_USER_REGDATE."</th>
<th align='center'>"._MA_USER_LASTLOGIN."</th>
<th align='center'>"._MA_USER_POSTS."</th>
</tr>";
$ucount = 0;
foreach (array_keys($foundusers) as $j) {
if ($ucount % 2 == 0) {
$class = 'even';
} else {
$class = 'odd';
}
$ucount++;
$fuser_name = $foundusers[$j]->getVar("name") ? $foundusers[$j]->getVar("name") : " ";
echo "<tr class='$class'>
<td align='center'>";
if (!empty($_POST["multiple"])) {
echo "<input type='checkbox' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />";
echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />";
} else {
echo "<input type='radio' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />";
echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />";
}
echo "</td>
<td><a href='".XOOPS_URL."/userinfo.php?uid=".$foundusers[$j]->getVar("uid")."' target='_blank'>".$foundusers[$j]->getVar("uname")."</a></td>
<td>".$fuser_name."</td>
<td align='center'>".($foundusers[$j]->getVar("user_regdate") ? date("Y-m-d", $foundusers[$j]->getVar("user_regdate")) : "")."</td>
<td align='center'>".($foundusers[$j]->getVar("last_login") ? date("Y-m-d H:i", $foundusers[$j]->getVar("last_login")) : "")."</td>
<td align='center'>".$foundusers[$j]->getVar("posts")."</td>";
echo "</tr>\n";
}
echo "<tr class='foot'><td colspan='6'>";
// placeholder for external applications
if (empty($_POST["target"])) {
echo "<select name='fct'><option value='users'>"._DELETE."</option><option value='mailusers'>"._MA_USER_SENDMAIL."</option>";
echo "</select> ";
echo $GLOBALS['xoopsSecurity']->getTokenHTML()."<input type='submit' value='"._SUBMIT."' />";
// Add selected users
} else {
echo "<input type='button' value='"._MA_USER_ADD_SELECTED."' onclick='addusers();' />";
}
echo "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
echo "</td></tr></table></form>\n";
}
$hiddenform = "<form name='findnext' action='findusers.php' method='post'>";
foreach ( $_POST as $k => $v ) {
if ($k == 'XOOPS_TOKEN_REQUEST') {
// regenerate token value
$hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n";
} else {
$hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n";
}
}
if (!isset($_POST['limit'])) {
$hiddenform .= "<input type='hidden' name='limit' value='".$limit."' />\n";
}
if (!isset($_POST['start'])) {
$hiddenform .= "<input type='hidden' name='start' value='".$start."' />\n";
}
$hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n";
if ( !isset($total) || ( $totalpages = ceil($total / $limit) ) > 1 ) {
$prev = $start - $limit;
if ( $start - $limit >= 0 ) {
$hiddenform .= "<a href='#0' onclick='javascript:document.findnext.start.value=".$prev.";document.findnext.submit();'>"._MA_USER_PREVIOUS."</a> \n";
}
$counter = 1;
$currentpage = ($start+$limit) / $limit;
if (!isset($total)) {
while ( $counter <= $currentpage ) {
if ( $counter == $currentpage ) {
$hiddenform .= "<strong>".$counter."</strong> ";
} elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 ) {
$hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> ";
if ( $counter == 1 && $currentpage > 5 ) {
$hiddenform .= "... ";
}
}
$counter++;
}
} else {
while ( $counter <= $totalpages ) {
if ( $counter == $currentpage ) {
$hiddenform .= "<strong>".$counter."</strong> ";
} elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 || $counter == $totalpages ) {
if ( $counter == $totalpages && $currentpage < $totalpages-4 ) {
$hiddenform .= "... ";
}
$hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> ";
if ( $counter == 1 && $currentpage > 5 ) {
$hiddenform .= "... ";
}
}
$counter++;
}
}
$next = $start + $limit;
if ( ( isset($total) && $total > $next) || ( !isset($total) && count($foundusers) >= $limit ) ) {
$hiddenform .= " <a href='#".$total."' onclick='javascript:document.findnext.start.value=".$next.";document.findnext.submit();'>"._MA_USER_NEXT."</a>\n";
}
}
$hiddenform .= "</form>";
echo "<div>".$hiddenform;
if (isset($total)) {
echo "<br />".sprintf(_MA_USER_USERSFOUND, $total) . " ";
}
echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n";
echo "</div>";
}
}
xoops_footer();
?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -