//
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
exit("Access Denied");
}
$op = "form";
if ( isset($_POST['op']) && $_POST['op'] == "submit" ) {
$op = "submit";
}
xoops_cp_header();
//OpenTable();
if ( $op == "form" ) {
$member_handler =& xoops_gethandler('member');
$acttotal = $member_handler->getUserCount(new Criteria('level', 0, '>'));
$inacttotal = $member_handler->getUserCount(new Criteria('level', 0));
include_once XOOPS_ROOT_PATH."/class/xoopsformloader.php";
$uname_text = new XoopsFormText("", "user_uname", 30, 60);
$uname_match = new XoopsFormSelectMatchOption("", "user_uname_match");
$uname_tray = new XoopsFormElementTray(_AM_UNAME, " ");
$uname_tray->addElement($uname_match);
$uname_tray->addElement($uname_text);
$name_text = new XoopsFormText("", "user_name", 30, 60);
$name_match = new XoopsFormSelectMatchOption("", "user_name_match");
$name_tray = new XoopsFormElementTray(_AM_REALNAME, " ");
$name_tray->addElement($name_match);
$name_tray->addElement($name_text);
$email_text = new XoopsFormText("", "user_email", 30, 60);
$email_match = new XoopsFormSelectMatchOption("", "user_email_match");
$email_tray = new XoopsFormElementTray(_AM_EMAIL, " ");
$email_tray->addElement($email_match);
$email_tray->addElement($email_text);
$url_text = new XoopsFormText(_AM_URLC, "user_url", 30, 100);
//$theme_select = new XoopsFormSelectTheme(_AM_THEME, "user_theme");
//$timezone_select = new XoopsFormSelectTimezone(_AM_TIMEZONE, "user_timezone_offset");
$icq_text = new XoopsFormText("", "user_icq", 30, 100);
$icq_match = new XoopsFormSelectMatchOption("", "user_icq_match");
$icq_tray = new XoopsFormElementTray(_AM_ICQ, " ");
$icq_tray->addElement($icq_match);
$icq_tray->addElement($icq_text);
$aim_text = new XoopsFormText("", "user_aim", 30, 100);
$aim_match = new XoopsFormSelectMatchOption("", "user_aim_match");
$aim_tray = new XoopsFormElementTray(_AM_AIM, " ");
$aim_tray->addElement($aim_match);
$aim_tray->addElement($aim_text);
$yim_text = new XoopsFormText("", "user_yim", 30, 100);
$yim_match = new XoopsFormSelectMatchOption("", "user_yim_match");
$yim_tray = new XoopsFormElementTray(_AM_YIM, " ");
$yim_tray->addElement($yim_match);
$yim_tray->addElement($yim_text);
$msnm_text = new XoopsFormText("", "user_msnm", 30, 100);
$msnm_match = new XoopsFormSelectMatchOption("", "user_msnm_match");
$msnm_tray = new XoopsFormElementTray(_AM_MSNM, " ");
$msnm_tray->addElement($msnm_match);
$msnm_tray->addElement($msnm_text);
$location_text = new XoopsFormText(_AM_LOCATION, "user_from", 30, 100);
$occupation_text = new XoopsFormText(_AM_OCCUPATION, "user_occ", 30, 100);
$interest_text = new XoopsFormText(_AM_INTEREST, "user_intrest", 30, 100);
//$bio_text = new XoopsFormText(_AM_EXTRAINFO, "user_bio", 30, 100);
$lastlog_more = new XoopsFormText(_AM_LASTLOGMORE, "user_lastlog_more", 10, 5);
$lastlog_less = new XoopsFormText(_AM_LASTLOGLESS, "user_lastlog_less", 10, 5);
$reg_more = new XoopsFormText(_AM_REGMORE, "user_reg_more", 10, 5);
$reg_less = new XoopsFormText(_AM_REGLESS, "user_reg_less", 10, 5);
$posts_more = new XoopsFormText(_AM_POSTSMORE, "user_posts_more", 10, 5);
$posts_less = new XoopsFormText(_AM_POSTSLESS, "user_posts_less", 10, 5);
$mailok_radio = new XoopsFormRadio(_AM_SHOWMAILOK, "user_mailok", "both");
$mailok_radio->addOptionArray(array("mailok"=>_AM_MAILOK, "mailng"=>_AM_MAILNG, "both"=>_AM_BOTH));
$type_radio = new XoopsFormRadio(_AM_SHOWTYPE, "user_type", "actv");
$type_radio->addOptionArray(array("actv"=>_AM_ACTIVE, "inactv"=>_AM_INACTIVE, "both"=>_AM_BOTH));
$sort_select = new XoopsFormSelect(_AM_SORT, "user_sort");
$sort_select->addOptionArray(array("uname"=>_AM_UNAME,"email"=>_AM_EMAIL,"last_login"=>_AM_LASTLOGIN,"user_regdate"=>_AM_REGDATE,"posts"=>_AM_POSTS));
$order_select = new XoopsFormSelect(_AM_ORDER, "user_order");
$order_select->addOptionArray(array("ASC"=>_AM_ASC,"DESC"=>_AM_DESC));
$limit_text = new XoopsFormText(_AM_LIMIT, "limit", 6, 2);
$fct_hidden = new XoopsFormHidden("fct", "findusers");
$op_hidden = new XoopsFormHidden("op", "submit");
$submit_button = new XoopsFormButton("", "user_submit", _SUBMIT, "submit");
$form = new XoopsThemeForm(_AM_FINDUS, "uesr_findform", "admin.php", 'post', true);
$form->addElement($uname_tray);
$form->addElement($name_tray);
$form->addElement($email_tray);
//$form->addElement($theme_select);
//$form->addElement($timezone_select);
$form->addElement($icq_tray);
$form->addElement($aim_tray);
$form->addElement($yim_tray);
$form->addElement($msnm_tray);
$form->addElement($url_text);
$form->addElement($location_text);
$form->addElement($occupation_text);
$form->addElement($interest_text);
//$form->addElement($bio_text);
$form->addElement($lastlog_more);
$form->addElement($lastlog_less);
$form->addElement($reg_more);
$form->addElement($reg_less);
$form->addElement($posts_more);
$form->addElement($posts_less);
$form->addElement($mailok_radio);
$form->addElement($type_radio);
$form->addElement($sort_select);
$form->addElement($order_select);
$form->addElement($fct_hidden);
$form->addElement($limit_text);
$form->addElement($op_hidden);
// if this is to find users for a specific group
if ( !empty($_GET['group']) && intval($_GET['group']) > 0 ) {
$group_hidden = new XoopsFormHidden("group", intval($_GET['group']));
$form->addElement($group_hidden);
}
$form->addElement($submit_button);
echo "
"._AM_FINDUS."
(".sprintf(_AM_ACTUS, "$acttotal")." ".sprintf(_AM_INACTUS, "$inacttotal").")";
$form->display();
}
elseif ($op == "submit" & $GLOBALS['xoopsSecurity']->check()) {
$myts =& MyTextSanitizer::getInstance();
$criteria = new CriteriaCompo();
if ( !empty($_POST['user_uname']) ) {
$match = (!empty($_POST['user_uname_match'])) ? intval($_POST['user_uname_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_uname'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_uname'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('uname', $myts->addSlashes(trim($_POST['user_uname']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('uname', '%'.$myts->addSlashes(trim($_POST['user_uname'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_name']) ) {
$match = (!empty($_POST['user_name_match'])) ? intval($_POST['user_name_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('name', $myts->addSlashes(trim($_POST['user_name']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('name', '%'.$myts->addSlashes(trim($_POST['user_name'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_email']) ) {
$match = (!empty($_POST['user_email_match'])) ? intval($_POST['user_email_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('email', $myts->addSlashes(trim($_POST['user_email'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('email', '%'.$myts->addSlashes(trim($_POST['user_email'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('email', $myts->addSlashes(trim($_POST['user_email']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('email', '%'.$myts->addSlashes(trim($_POST['user_email'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_url']) ) {
$url = formatURL(trim($_POST['user_url']));
$criteria->add(new Criteria('url', $url.'%', 'LIKE'));
}
if ( !empty($_POST['user_icq']) ) {
$match = (!empty($_POST['user_icq_match'])) ? intval($_POST['user_icq_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_icq', $myts->addSlashes(trim($_POST['user_icq'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_icq'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_icq']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_icq', '%'.$myts->addSlashes(trim($_POST['user_icq'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_aim']) ) {
$match = (!empty($_POST['user_aim_match'])) ? intval($_POST['user_aim_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_aim'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_aim'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_aim', $myts->addSlashes(trim($_POST['user_aim']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_aim', '%'.$myts->addSlashes(trim($_POST['user_aim'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_yim']) ) {
$match = (!empty($_POST['user_yim_match'])) ? intval($_POST['user_yim_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_yim'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_yim'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_yim', $myts->addSlashes(trim($_POST['user_yim']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_yim', '%'.$myts->addSlashes(trim($_POST['user_yim'])).'%', 'LIKE'));
break;
}
}
if ( !empty($_POST['user_msnm']) ) {
$match = (!empty($_POST['user_msnm_match'])) ? intval($_POST['user_msnm_match']) : XOOPS_MATCH_START;
switch ($match) {
case XOOPS_MATCH_START:
$criteria->add(new Criteria('user_msnm', $myts->addSlashes(trim($_POST['user_msnm'])).'%', 'LIKE'));
break;
case XOOPS_MATCH_END:
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_msnm'])), 'LIKE'));
break;
case XOOPS_MATCH_EQUAL:
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_msnm']))));
break;
case XOOPS_MATCH_CONTAIN:
$criteria->add(new Criteria('user_msnm', '%'.$myts->addSlashes(trim($_POST['user_msnm'])).'%', 'LIKE'));
break;
}
}
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'));
}
if ( !empty($_POST['user_lastlog_more']) && is_numeric($_POST['user_lastlog_more']) ) {
$f_user_lastlog_more = intval(trim($_POST['user_lastlog_more']));
$time = time() - (60 * 60 * 24 * $f_user_lastlog_more);
if ( $time > 0 ) {
$criteria->add(new Criteria('last_login', $time, '<'));
}
}
if ( !empty($_POST['user_lastlog_less']) && is_numeric($_POST['user_lastlog_less']) ) {
$f_user_lastlog_less = intval(trim($_POST['user_lastlog_less']));
$time = time() - (60 * 60 * 24 * $f_user_lastlog_less);
if ( $time > 0 ) {
$criteria->add(new Criteria('last_login', $time, '>'));
}
}
if ( !empty($_POST['user_reg_more']) && is_numeric($_POST['user_reg_more']) ) {
$f_user_reg_more = intval(trim($_POST['user_reg_more']));
$time = time() - (60 * 60 * 24 * $f_user_reg_more);
if ( $time > 0 ) {
$criteria->add(new Criteria('user_regdate', $time, '<'));
}
}
if ( !empty($_POST['user_reg_less']) && is_numeric($_POST['user_reg_less']) ) {
$f_user_reg_less = intval($_POST['user_reg_less']);
$time = time() - (60 * 60 * 24 * $f_user_reg_less);
if ( $time > 0 ) {
$criteria->add(new Criteria('user_regdate', $time, '>'));
}
}
if ( !empty($_POST['user_posts_more']) && is_numeric($_POST['user_posts_more']) ) {
$criteria->add(new Criteria('posts', intval($_POST['user_posts_more']), '>'));
}
if ( !empty($_POST['user_posts_less']) && is_numeric($_POST['user_posts_less']) ) {
$criteria->add(new Criteria('posts', intval($_POST['user_posts_less']), '<'));
}
if ( isset($_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));
} else {
$criteria->add(new Criteria('user_mailok', 0, '>='));
}
}
if ( isset($_POST['user_type']) ) {
if ( $_POST['user_type'] == "inactv" ) {
$criteria->add(new Criteria('level', 0, '='));
} elseif ( $_POST['user_type'] == "actv" ) {
$criteria->add(new Criteria('level', 0, '>'));
} else {
$criteria->add(new Criteria('level', 0, '>='));
}
}
$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";
}
$limit = (!empty($_POST['limit'])) ? intval($_POST['limit']) : 50;
if ( $limit == 0 || $limit > 50 ) {
$limit = 50;
}
$start = (!empty($_POST['start'])) ? intval($_POST['start']) : 0;
$member_handler =& xoops_gethandler('member');
$total = $member_handler->getUserCount($criteria);
echo "". _AM_FINDUS ." »» ". _AM_RESULTS."
";
if ( $total == 0 ) {
echo ""._AM_NOFOUND,"
";
} elseif ( $start < $total ) {
echo sprintf(_AM_USERSFOUND, $total)."
";
echo "\n";
$totalpages = ceil($total / $limit);
if ( $totalpages > 1 ) {
$hiddenform = "";
echo "".$hiddenform."
";
printf(_AM_USERSFOUND, $total);
echo "
";
}
}
}
else {
redirect_header('admin.php?fct=findusers', 3, implode('
', $GLOBALS['xoopsSecurity']->getErrors()));
}
//CloseTable();
xoops_cp_footer();
?>