| [ Index ] |
|
Code source de XOOPS 2.0.17.1 |
1 <?php 2 /** 3 * user selection 4 * 5 * limit: Only work with javascript enabled 6 * TODO: plugins for external applications, including but not limited: sending massive emails/PMs, membership edit 7 * 8 * @copyright The XOOPS project http://www.xoops.org/ 9 * @license http://www.fsf.org/copyleft/gpl.html GNU public license 10 * @author Taiwen Jiang (phppp or D.J.) <php_pp@hotmail.com> 11 * @since 1.00 12 * @version $Id$ 13 */ 14 15 include "../mainfile.php"; 16 xoops_header(false); 17 18 $denied = true; 19 if (!empty($_REQUEST['token'])) { 20 if ($GLOBALS['xoopsSecurity']->validateToken($_REQUEST['token'], false)) { 21 $denied = false; 22 } 23 } elseif ( is_object($xoopsUser) && $xoopsUser->isAdmin() ) { 24 $denied = false; 25 } 26 if ($denied) { 27 xoops_error(_NOPERM); 28 exit(); 29 } 30 31 $token = @$_REQUEST["token"]; 32 $name_form = 'memberslist'; 33 $name_userid = 'uid' . ( @$_REQUEST['multiple'] ? "[]" : "" ); 34 $name_username = 'uname' . ( @$_REQUEST['multiple'] ? "[]" : "" ); 35 36 if (!@include_once XOOPS_ROOT_PATH."/language/".$xoopsConfig["language"]."/findusers.php") { 37 include_once XOOPS_ROOT_PATH."/language/english/findusers.php"; 38 } 39 40 class XoopsRank extends XoopsObject 41 { 42 function __construct() { 43 $this->XoopsRank(); 44 } 45 46 function XoopsRank() 47 { 48 $this->XoopsObject(); 49 $this->initVar('rank_id', XOBJ_DTYPE_INT, null, false); 50 $this->initVar('rank_title', XOBJ_DTYPE_TXTBOX, null, false); 51 $this->initVar('rank_min', XOBJ_DTYPE_INT, 0); 52 $this->initVar('rank_max', XOBJ_DTYPE_INT, 0); 53 $this->initVar('rank_special', XOBJ_DTYPE_INT, 0); 54 $this->initVar('rank_image', XOBJ_DTYPE_TXTBOX, ""); 55 } 56 } 57 58 class XoopsRankHandler extends XoopsObjectHandler 59 { 60 function __construct(&$db) { 61 $this->XoopsRankHandler($db); 62 } 63 64 function XoopsRankHandler(&$db) { 65 $this->XoopsObjectHandler($db); 66 } 67 68 function &create($isNew = true) { 69 $obj =& new XoopsRank(); 70 if ($isNew === true) { 71 $obj->setNew(); 72 } 73 return $obj; 74 } 75 76 function &get($id = 0) 77 { 78 $object =& $this->create(false); 79 $sql = "SELECT * FROM " . $this->db->prefix('ranks') . " WHERE rank_id = " . $this->db->quoteString($id); 80 if (!$result = $this->db->query($sql)) { 81 $ret = null; 82 return $ret; 83 } 84 while ($row = $this->db->fetchArray($result)) { 85 $object->assignVars($row); 86 } 87 88 return $object; 89 } 90 91 function getList($criteria = null, $limit = 0, $start = 0) 92 { 93 $ret = array(); 94 if ($criteria == null) { 95 $criteria = new CriteriaCompo(); 96 } 97 98 $sql = 'SELECT rank_id, rank_title FROM '.$this->db->prefix('ranks'); 99 if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) { 100 $sql .= ' '.$criteria->renderWhere(); 101 if ($criteria->getSort() != '') { 102 $sql .= ' ORDER BY '.$criteria->getSort().' '.$criteria->getOrder(); 103 } 104 $limit = $criteria->getLimit(); 105 $start = $criteria->getStart(); 106 } 107 $result = $this->db->query($sql, $limit, $start); 108 if (!$result) { 109 return $ret; 110 } 111 112 $myts =& MyTextSanitizer::getInstance(); 113 while ($myrow = $this->db->fetchArray($result)) { 114 $ret[$myrow["rank_id"]] = $myts->htmlSpecialChars($myrow["rank_title"]); 115 } 116 return $ret; 117 } 118 } 119 120 class XoUser extends XoopsUser 121 { 122 function __construct() { 123 $this->XoUser(); 124 } 125 126 function XoUser() { 127 $this->XoopsUser(); 128 129 $unsets = array("actkey", "pass", "theme", "umode", "uorder", "notify_mode"); 130 foreach($unsets as $var) { 131 unset($this->vars[$var]); 132 } 133 } 134 } 135 136 class XoUserHandler extends XoopsObjectHandler 137 { 138 function __construct(&$db) { 139 $this->XoUserHandler($db); 140 } 141 142 function XoUserHandler(&$db) { 143 $this->XoopsObjectHandler($db); 144 } 145 146 function &create($isNew = true) { 147 $obj =& new XoUser(); 148 if ($isNew === true) { 149 $obj->setNew(); 150 } 151 return $obj; 152 } 153 154 function getCount($criteria = null, $groups = array()) { 155 if (!is_array($groups)) { 156 $groups = array($groups); 157 } 158 $groups = array_filter($groups); 159 if (empty($groups)) { 160 $sql = ' SELECT COUNT(DISTINCT u.uid) FROM '.$this->db->prefix('users'). ' AS u'. 161 ' WHERE 1=1'; 162 } else { 163 $sql = ' SELECT COUNT(DISTINCT u.uid) FROM '.$this->db->prefix('users'). ' AS u'. 164 ' LEFT JOIN '.$this->db->prefix('groups_users_link'). ' AS g ON g.uid = u.uid'. 165 ' WHERE g.groupid IN ('.implode(', ', array_map('intval', $groups)).')'; 166 } 167 if (isset($criteria) && is_subclass_of($criteria, 'criteriaelement')) { 168 // Use the direct renderer, assuming no `uid` in criteria 169 if ($render = $criteria->render()) { 170 $sql .= ' AND '.$render; 171 } 172 } 173 $result = $this->db->query($sql); 174 list($count) = $this->db->fetchRow($result); 175 return $count; 176 } 177 178 function getAll($criteria = null, $groups = array()) { 179 if (!is_array($groups)) { 180 $groups = array($groups); 181 } 182 $groups = array_filter($groups); 183 $limit = null; 184 $start = null; 185 if (empty($groups)) { 186 $sql = ' SELECT u.* FROM '.$this->db->prefix('users'). ' AS u'. 187 ' WHERE 1=1'; 188 } else { 189 190 $sql = ' SELECT u.* FROM '.$this->db->prefix('users'). ' AS u'. 191 ' LEFT JOIN '.$this->db->prefix('groups_users_link'). ' AS g ON g.uid = u.uid'. 192 ' WHERE g.groupid IN ('.implode(', ', array_map('intval', $groups)).')'; 193 } 194 if (isset($criteria) && is_subclass_of($criteria, "criteriaelement")) { 195 if ($render = $criteria->render()) { 196 $sql .= ' AND '.$render; 197 } 198 if ($sort = $criteria->getSort()) { 199 $sql .= " ORDER BY ".$sort." ".$criteria->getOrder(); 200 $orderSet = true; 201 } 202 $limit = $criteria->getLimit(); 203 $start = $criteria->getStart(); 204 } 205 if (empty($orderSet)) $sql .= " ORDER BY u.uid ASC"; 206 $result = $this->db->query($sql, $limit, $start); 207 $ret = array(); 208 while ($myrow = $this->db->fetchArray($result)) { 209 $object =& $this->create(false); 210 $object->assignVars($myrow); 211 $ret[$myrow["uid"]] = $object; 212 unset($object); 213 } 214 215 return $ret; 216 } 217 } 218 219 $rank_handler = new XoopsRankHandler($xoopsDB); 220 $user_handler = new XoUserHandler($xoopsDB); 221 222 $items_match = array( 223 "uname" => _MA_USER_UNAME, 224 "name" => _MA_USER_REALNAME, 225 "email" => _MA_USER_EMAIL, 226 "user_icq" => _MA_USER_ICQ, 227 "user_aim" => _MA_USER_AIM, 228 "user_yim" => _MA_USER_YIM, 229 "user_msnm" => _MA_USER_MSNM 230 ); 231 232 $items_range = array( 233 "user_regdate" => _MA_USER_RANGE_USER_REGDATE, 234 "last_login" => _MA_USER_RANGE_LAST_LOGIN, 235 "posts" => _MA_USER_RANGE_POSTS, 236 ); 237 238 define("FINDUSERS_MODE_SIMPLE", 0); 239 define("FINDUSERS_MODE_ADVANCED", 1); 240 define("FINDUSERS_MODE_QUERY", 2); 241 242 $modes = array( 243 FINDUSERS_MODE_SIMPLE => _MA_USER_MODE_SIMPLE, 244 FINDUSERS_MODE_ADVANCED => _MA_USER_MODE_ADVANCED, 245 FINDUSERS_MODE_QUERY => _MA_USER_MODE_QUERY, 246 ); 247 248 if ( empty($_POST["user_submit"]) ) { 249 250 include_once XOOPS_ROOT_PATH."/class/xoopsformloader.php"; 251 252 $form = new XoopsThemeForm(_MA_USER_FINDUS, "uesr_findform", "findusers.php", 'post', true); 253 254 $mode = intval( @$_REQUEST["mode"] ); 255 if ( FINDUSERS_MODE_QUERY == $mode ) { 256 $form->addElement(new XoopsFormTextArea(_MA_USER_QUERY, "query", @$_POST["query"])); 257 } else { 258 if ( FINDUSERS_MODE_ADVANCED == $mode ) { 259 foreach ($items_match as $var => $title) { 260 $text = new XoopsFormText("", $var, 30, 100, @$_POST[$var]); 261 $match = new XoopsFormSelectMatchOption("", "{$var}_match", @$_POST["{$var}_match"]); 262 $match_tray = new XoopsFormElementTray($title, " "); 263 $match_tray->addElement($match); 264 $match_tray->addElement($text); 265 $form->addElement($match_tray); 266 unset($text, $match, $match_tray); 267 } 268 269 $url_text = new XoopsFormText(_MA_USER_URLC, "url", 30, 100, @$_POST["url"]); 270 $location_text = new XoopsFormText(_MA_USER_LOCATION, "user_from", 30, 100, @$_POST["user_from"]); 271 $occupation_text = new XoopsFormText(_MA_USER_OCCUPATION, "user_occ", 30, 100, @$_POST["user_occ"]); 272 $interest_text = new XoopsFormText(_MA_USER_INTEREST, "user_intrest", 30, 100, @$_POST["user_intrest"]); 273 foreach ($items_range as $var => $title) { 274 $more = new XoopsFormText("", "{$var}_more", 10, 5, @$_POST["{$var}_more"]); 275 $less = new XoopsFormText("", "{$var}_less", 10, 5, @$_POST["{$var}_less"]); 276 $range_tray = new XoopsFormElementTray($title, " - "); 277 $range_tray->addElement($less); 278 $range_tray->addElement($more); 279 $form->addElement($range_tray); 280 unset($more, $less, $range_tray); 281 } 282 283 $mailok_radio = new XoopsFormRadio(_MA_USER_SHOWMAILOK, "user_mailok", empty($_POST["user_mailok"]) ? "both" : $_POST["user_mailok"]); 284 $mailok_radio->addOptionArray(array("mailok"=>_MA_USER_MAILOK, "mailng"=>_MA_USER_MAILNG, "both"=>_MA_USER_BOTH)); 285 $avatar_radio = new XoopsFormRadio(_MA_USER_HASAVATAR, "user_avatar", empty($_POST["user_avatar"]) ? "both" : $_POST["user_avatar"]); 286 $avatar_radio->addOptionArray(array("y"=>_YES, "n"=>_NO, "both"=>_MA_USER_BOTH)); 287 288 $level_radio = new XoopsFormRadio(_MA_USER_LEVEL, "level", @$_POST["level"]); 289 $levels = array( 0 => _ALL, 1 => _MA_USER_LEVEL_ACTIVE, 2 => _MA_USER_LEVEL_INACTIVE , 3 => _MA_USER_LEVEL_DISABLED); 290 $level_radio->addOptionArray($levels); 291 292 $member_handler =& xoops_gethandler('member'); 293 $groups = $member_handler->getGroupList(); 294 $groups[0] = _ALL; 295 $group_select = new XoopsFormSelect(_MA_USER_GROUP, 'groups', @$_POST['groups'], 3, true); 296 $group_select->addOptionArray($groups); 297 298 $ranks = $rank_handler->getList(); 299 $ranks[0] = _ALL; 300 $rank_select = new XoopsFormSelect(_MA_USER_RANK, 'rank', intval( @$_POST['rank'] )); 301 $rank_select->addOptionArray($ranks); 302 303 304 $form->addElement($url_text); 305 $form->addElement($location_text); 306 $form->addElement($occupation_text); 307 $form->addElement($interest_text); 308 $form->addElement($mailok_radio); 309 $form->addElement($avatar_radio); 310 $form->addElement($level_radio); 311 312 $form->addElement($group_select); 313 $form->addElement($rank_select); 314 } else { 315 foreach (array("uname", "email") as $var) { 316 $title = $items_match[$var]; 317 $text = new XoopsFormText("", $var, 30, 100, @$_POST[$var]); 318 $match = new XoopsFormSelectMatchOption("", "{$var}_match", @$_POST["{$var}_match"]); 319 $match_tray = new XoopsFormElementTray($title, " "); 320 $match_tray->addElement($match); 321 $match_tray->addElement($text); 322 $form->addElement($match_tray); 323 unset($text, $match, $match_tray); 324 } 325 } 326 327 $sort_select = new XoopsFormSelect(_MA_USER_SORT, "user_sort", @$_POST["user_sort"]); 328 $sort_select->addOptionArray(array("uname"=>_MA_USER_UNAME, "last_login"=>_MA_USER_LASTLOGIN, "user_regdate"=>_MA_USER_REGDATE, "posts"=>_MA_USER_POSTS)); 329 $order_select = new XoopsFormSelect(_MA_USER_ORDER, "user_order", @$_POST["user_order"]); 330 $order_select->addOptionArray(array("ASC"=>_MA_USER_ASC,"DESC"=>_MA_USER_DESC)); 331 332 $form->addElement($sort_select); 333 $form->addElement($order_select); 334 } 335 $form->addElement( new XoopsFormText(_MA_USER_LIMIT, "limit", 6, 6, empty($_REQUEST["limit"]) ? 50 : intval($_REQUEST["limit"])) ); 336 $form->addElement( new XoopsFormHidden("mode", $mode) ); 337 $form->addElement( new XoopsFormHidden("target", @$_REQUEST["target"]) ); 338 $form->addElement( new XoopsFormHidden("multiple", @$_REQUEST["multiple"]) ); 339 $form->addElement( new XoopsFormHidden("token", $token) ); 340 $form->addElement( new XoopsFormButton("", "user_submit", _SUBMIT, "submit") ); 341 342 $acttotal = $user_handler->getCount(new Criteria('level', 0, '>')); 343 $inacttotal = $user_handler->getCount(new Criteria('level', 0, '<=')); 344 echo "</html><body>"; 345 echo "<h2 style='text-align:left;'>"._MA_USER_FINDUS." - ".$modes[$mode]."</h2>"; 346 $modes_switch = array(); 347 foreach ($modes as $_mode => $title) { 348 if ($mode == $_mode) continue; 349 $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>"; 350 } 351 echo "<h4>".implode(" | ", $modes_switch)."</h4>"; 352 echo "(".sprintf(_MA_USER_ACTUS, "<span style='color:#ff0000;'>$acttotal</span>")." ".sprintf(_MA_USER_INACTUS, "<span style='color:#ff0000;'>$inacttotal</span>").")"; 353 $form->display(); 354 355 } else { 356 $myts =& MyTextSanitizer::getInstance(); 357 358 $limit = empty($_POST['limit']) ? 50 : intval( $_POST['limit'] ); 359 $start = intval( @$_POST['start'] ); 360 361 if (!isset($_POST["query"])) { 362 $criteria = new CriteriaCompo(); 363 foreach (array_keys($items_match) as $var) { 364 if ( !empty($_POST[$var]) ) { 365 $match = (!empty($_POST["{$var}_match"])) ? intval($_POST["{$var}_match"]) : XOOPS_MATCH_START; 366 $value = str_replace("_", "\\\_", $myts->addSlashes(trim($_POST[$var]))); 367 switch ($match) { 368 case XOOPS_MATCH_START: 369 $criteria->add(new Criteria($var, $value.'%', 'LIKE')); 370 break; 371 case XOOPS_MATCH_END: 372 $criteria->add(new Criteria($var, '%'.$value, 'LIKE')); 373 break; 374 case XOOPS_MATCH_EQUAL: 375 $criteria->add(new Criteria($var, $value)); 376 break; 377 case XOOPS_MATCH_CONTAIN: 378 $criteria->add(new Criteria($var, '%'.$value.'%', 'LIKE')); 379 break; 380 } 381 } 382 } 383 if ( !empty($_POST['url']) ) { 384 $url = formatURL(trim($_POST['url'])); 385 $criteria->add(new Criteria('url', $url.'%', 'LIKE')); 386 } 387 if ( !empty($_POST['user_from']) ) { 388 $criteria->add(new Criteria('user_from', '%'.$myts->addSlashes(trim($_POST['user_from'])).'%', 'LIKE')); 389 } 390 if ( !empty($_POST['user_intrest']) ) { 391 $criteria->add(new Criteria('user_intrest', '%'.$myts->addSlashes(trim($_POST['user_intrest'])).'%', 'LIKE')); 392 } 393 if ( !empty($_POST['user_occ']) ) { 394 $criteria->add(new Criteria('user_occ', '%'.$myts->addSlashes(trim($_POST['user_occ'])).'%', 'LIKE')); 395 } 396 397 foreach (array("last_login", "user_regdate") as $var) { 398 if ( !empty($_POST["{$var}_more"]) && is_numeric($_POST["{$var}_more"]) ) { 399 $time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_more"]))); 400 if ( $time > 0 ) { 401 $criteria->add(new Criteria($var, $time, '<=')); 402 } 403 } 404 if ( !empty($_POST["{$var}_less"]) && is_numeric($_POST["{$var}_less"]) ) { 405 $time = time() - (60 * 60 * 24 * intval(trim($_POST["{$var}_less"]))); 406 if ( $time > 0 ) { 407 $criteria->add(new Criteria($var, $time, '>=')); 408 } 409 } 410 } 411 if ( !empty($_POST['posts_more']) && is_numeric($_POST['posts_more']) ) { 412 $criteria->add(new Criteria('posts', intval($_POST['posts_more']), '<=')); 413 } 414 if ( !empty($_POST['posts_less']) && is_numeric($_POST['posts_less']) ) { 415 $criteria->add(new Criteria('posts', intval($_POST['posts_less']), '>=')); 416 } 417 if ( !empty($_POST['user_mailok']) ) { 418 if ( $_POST['user_mailok'] == "mailng" ) { 419 $criteria->add(new Criteria('user_mailok', 0)); 420 } elseif ( $_POST['user_mailok'] == "mailok" ) { 421 $criteria->add(new Criteria('user_mailok', 1)); 422 } 423 } 424 if ( !empty($_POST['user_avatar']) ) { 425 if ( $_POST['user_avatar'] == "y" ) { 426 $criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'NOT IN')); 427 } elseif ( $_POST['user_avatar'] == "n" ) { 428 $criteria->add(new Criteria('user_avatar', "('', 'blank.gif')", 'IN')); 429 } 430 } 431 if ( !empty($_POST['level']) ) { 432 $level_value = array(1 => 1, 2 => 0, 3 => -1); 433 $level = isset($level_value[intval($_POST["level"])]) ? $level_value[intval($_POST["level"])] : 1; 434 $criteria->add(new Criteria("level", $level)); 435 } 436 if ( !empty($_POST['rank']) ) { 437 $rank_obj = $rank_handler->get( $_POST['rank'] ); 438 if ($rank_obj->getVar("rank_special")) { 439 $criteria->add(new Criteria("rank", intval($_POST['rank']))); 440 } else { 441 if ($rank_obj->getVar("rank_min")) { 442 $criteria->add(new Criteria('posts', $rank_obj->getVar("rank_min"), '>=')); 443 } 444 if ($rank_obj->getVar("rank_max")) { 445 $criteria->add(new Criteria('posts', $rank_obj->getVar("rank_max"), '<=')); 446 } 447 } 448 } 449 450 $total = $user_handler->getCount($criteria, @$_POST["groups"]); 451 452 $validsort = array("uname", "email", "last_login", "user_regdate", "posts"); 453 $sort = (!in_array($_POST['user_sort'], $validsort)) ? "uname" : $_POST['user_sort']; 454 $order = "ASC"; 455 if ( isset($_POST['user_order']) && $_POST['user_order'] == "DESC") { 456 $order = "DESC"; 457 } 458 459 $criteria->setSort($sort); 460 $criteria->setOrder($order); 461 $criteria->setLimit($limit); 462 $criteria->setStart($start); 463 $foundusers = $user_handler->getAll($criteria, @$_POST["groups"]); 464 465 } else { 466 $query = trim($_POST["query"]); 467 // Query with alias 468 if (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."[\s]+as[\s]+([^\s]+).*)/i", $query, $matches) ) { 469 $alias = $matches[2]; 470 $subquery = $matches[1]; 471 472 // Query without alias 473 } elseif (preg_match("/select[\s]+.*[\s]+from[\s]+(".$xoopsDB->prefix("users")."\b.*)/i", $query, $matches) ) { 474 $alias = ""; 475 $subquery = $matches[1]; 476 477 // Invalid query 478 } else { 479 $query = "SELECT * FROM ".$xoopsDB->prefix("users"); 480 $subquery = $xoopsDB->prefix("users"); 481 } 482 483 $sql_count = "SELECT COUNT(DISTINCT ".(empty($alias) ? "" : $alias . "." )."uid) FROM ". $subquery; 484 $result = $xoopsDB->query($sql_count); 485 list($total) = $xoopsDB->FetchRow($result); 486 487 $result = $xoopsDB->query($query, $limit, $start); 488 $foundusers = array(); 489 while ($myrow = $xoopsDB->fetchArray($result)) { 490 $object =& $user_handler->create(false); 491 $object->assignVars($myrow); 492 $foundusers[$myrow["uid"]] = $object; 493 unset($object); 494 } 495 } 496 497 echo $js_adduser=' 498 <script type="text/javascript"> 499 var multiple='.intval($_REQUEST['multiple']).'; 500 function addusers() 501 { 502 var sel_str = ""; 503 var num = 0; 504 var mForm = document.forms["'.$name_form.'"]; 505 for (var i=0;i!=mForm.elements.length;i++) { 506 var id=mForm.elements[i]; 507 if ( ( (multiple > 0 && id.type == "checkbox") || (multiple == 0 && id.type == "radio") ) && (id.checked == true) && ( id.name == "'.$name_userid.'" ) ) { 508 var name = mForm.elements[++i]; 509 var len = id.value.length + name.value.length; 510 sel_str += len + ":" + id.value + ":" + name.value; 511 num ++; 512 } 513 } 514 if (num == 0) { 515 alert("'._MA_USER_NOUSERSELECTED.'"); 516 return false; 517 } 518 sel_str = num + ":" + sel_str; 519 window.opener.addusers(sel_str); 520 alert("'._MA_USER_USERADDED.'"); 521 if (multiple == 0) { 522 window.close(); 523 window.opener.focus(); 524 } 525 return true; 526 } 527 </script> 528 '; 529 530 echo "</html><body>"; 531 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 />"; 532 if ( empty($start) && empty($foundusers) ) { 533 echo "<h4>"._MA_USER_NOFOUND,"</h4>"; 534 $hiddenform = "<form name='findnext' action='findusers.php' method='post'>"; 535 foreach ( $_POST as $k => $v ) { 536 if ($k == 'XOOPS_TOKEN_REQUEST') { 537 // regenerate token value 538 $hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n"; 539 } else { 540 $hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n"; 541 } 542 } 543 if (!isset($_POST['limit'])) { 544 $hiddenform .= "<input type='hidden' name='limit' value='{$limit}' />\n"; 545 } 546 if (!isset($_POST['start'])) { 547 $hiddenform .= "<input type='hidden' name='start' value='{$start}' />\n"; 548 } 549 $hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n"; 550 $hiddenform .= "</form>"; 551 552 echo "<div>".$hiddenform; 553 echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n"; 554 echo "</div>"; 555 } elseif ( $start < $total ) { 556 if ( !empty($total) ) { 557 echo sprintf(_MA_USER_USERSFOUND, $total)."<br />"; 558 } 559 if (!empty($foundusers)) { 560 echo "<form action='findusers.php' method='post' name='{$name_form}' id='{$name_form}'> 561 <table width='100%' border='0' cellspacing='1' cellpadding='4' class='outer'> 562 <tr> 563 <th align='center' width='5px'>"; 564 if (!empty($_POST["multiple"])) { 565 echo "<input type='checkbox' name='memberslist_checkall' id='memberslist_checkall' onclick='xoopsCheckAll(\"{$name_form}\", \"memberslist_checkall\");' />"; 566 } 567 echo "</th> 568 <th align='center'>"._MA_USER_UNAME."</th> 569 <th align='center'>"._MA_USER_REALNAME."</th> 570 <th align='center'>"._MA_USER_REGDATE."</th> 571 <th align='center'>"._MA_USER_LASTLOGIN."</th> 572 <th align='center'>"._MA_USER_POSTS."</th> 573 </tr>"; 574 $ucount = 0; 575 foreach (array_keys($foundusers) as $j) { 576 if ($ucount % 2 == 0) { 577 $class = 'even'; 578 } else { 579 $class = 'odd'; 580 } 581 $ucount++; 582 $fuser_name = $foundusers[$j]->getVar("name") ? $foundusers[$j]->getVar("name") : " "; 583 echo "<tr class='$class'> 584 <td align='center'>"; 585 if (!empty($_POST["multiple"])) { 586 echo "<input type='checkbox' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />"; 587 echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />"; 588 } else { 589 echo "<input type='radio' name='{$name_userid}' id='{$name_userid}' value='".$foundusers[$j]->getVar("uid")."' />"; 590 echo "<input type='hidden' name='{$name_username}' id='{$name_username}' value='".$foundusers[$j]->getVar("uname")."' />"; 591 } 592 echo "</td> 593 <td><a href='".XOOPS_URL."/userinfo.php?uid=".$foundusers[$j]->getVar("uid")."' target='_blank'>".$foundusers[$j]->getVar("uname")."</a></td> 594 <td>".$fuser_name."</td> 595 <td align='center'>".($foundusers[$j]->getVar("user_regdate") ? date("Y-m-d", $foundusers[$j]->getVar("user_regdate")) : "")."</td> 596 <td align='center'>".($foundusers[$j]->getVar("last_login") ? date("Y-m-d H:i", $foundusers[$j]->getVar("last_login")) : "")."</td> 597 <td align='center'>".$foundusers[$j]->getVar("posts")."</td>"; 598 echo "</tr>\n"; 599 } 600 echo "<tr class='foot'><td colspan='6'>"; 601 602 // placeholder for external applications 603 if (empty($_POST["target"])) { 604 echo "<select name='fct'><option value='users'>"._DELETE."</option><option value='mailusers'>"._MA_USER_SENDMAIL."</option>"; 605 echo "</select> "; 606 echo $GLOBALS['xoopsSecurity']->getTokenHTML()."<input type='submit' value='"._SUBMIT."' />"; 607 608 // Add selected users 609 } else { 610 echo "<input type='button' value='"._MA_USER_ADD_SELECTED."' onclick='addusers();' />"; 611 } 612 echo "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n"; 613 echo "</td></tr></table></form>\n"; 614 } 615 616 $hiddenform = "<form name='findnext' action='findusers.php' method='post'>"; 617 foreach ( $_POST as $k => $v ) { 618 if ($k == 'XOOPS_TOKEN_REQUEST') { 619 // regenerate token value 620 $hiddenform .= $GLOBALS['xoopsSecurity']->getTokenHTML()."\n"; 621 } else { 622 $hiddenform .= "<input type='hidden' name='".htmlSpecialChars($k, ENT_QUOTES)."' value='".htmlSpecialChars($myts->stripSlashesGPC($v), ENT_QUOTES)."' />\n"; 623 } 624 } 625 if (!isset($_POST['limit'])) { 626 $hiddenform .= "<input type='hidden' name='limit' value='".$limit."' />\n"; 627 } 628 if (!isset($_POST['start'])) { 629 $hiddenform .= "<input type='hidden' name='start' value='".$start."' />\n"; 630 } 631 $hiddenform .= "<input type='hidden' name='token' value='".htmlspecialchars($token, ENT_QUOTES)."' />\n"; 632 if ( !isset($total) || ( $totalpages = ceil($total / $limit) ) > 1 ) { 633 $prev = $start - $limit; 634 if ( $start - $limit >= 0 ) { 635 $hiddenform .= "<a href='#0' onclick='javascript:document.findnext.start.value=".$prev.";document.findnext.submit();'>"._MA_USER_PREVIOUS."</a> \n"; 636 } 637 $counter = 1; 638 $currentpage = ($start+$limit) / $limit; 639 640 if (!isset($total)) { 641 while ( $counter <= $currentpage ) { 642 if ( $counter == $currentpage ) { 643 $hiddenform .= "<strong>".$counter."</strong> "; 644 } elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 ) { 645 $hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> "; 646 if ( $counter == 1 && $currentpage > 5 ) { 647 $hiddenform .= "... "; 648 } 649 } 650 $counter++; 651 } 652 } else { 653 while ( $counter <= $totalpages ) { 654 if ( $counter == $currentpage ) { 655 $hiddenform .= "<strong>".$counter."</strong> "; 656 } elseif ( ($counter > $currentpage-4 && $counter < $currentpage+4) || $counter == 1 || $counter == $totalpages ) { 657 if ( $counter == $totalpages && $currentpage < $totalpages-4 ) { 658 $hiddenform .= "... "; 659 } 660 $hiddenform .= "<a href='#".$counter."' onclick='javascript:document.findnext.start.value=".($counter-1)*$limit.";document.findnext.submit();'>".$counter."</a> "; 661 if ( $counter == 1 && $currentpage > 5 ) { 662 $hiddenform .= "... "; 663 } 664 } 665 $counter++; 666 } 667 } 668 669 $next = $start + $limit; 670 if ( ( isset($total) && $total > $next) || ( !isset($total) && count($foundusers) >= $limit ) ) { 671 $hiddenform .= " <a href='#".$total."' onclick='javascript:document.findnext.start.value=".$next.";document.findnext.submit();'>"._MA_USER_NEXT."</a>\n"; 672 } 673 } 674 $hiddenform .= "</form>"; 675 676 echo "<div>".$hiddenform; 677 if (isset($total)) { 678 echo "<br />".sprintf(_MA_USER_USERSFOUND, $total) . " "; 679 } 680 echo "<a href='#' onclick='javascript:document.findnext.start.value=0;document.findnext.user_submit.value=0;document.findnext.submit();'>"._MA_USER_SEARCHAGAIN."</a>\n"; 681 echo "</div>"; 682 } 683 } 684 685 xoops_footer(); 686 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
| Généré le : Sun Nov 25 11:44:32 2007 | par Balluche grâce à PHPXref 0.7 |
|