[ Index ]
 

Code source de XOOPS 2.0.17.1

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/htdocs/include/ -> findusers.php (source)

   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, "&nbsp;");
 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, "&nbsp;-&nbsp;&nbsp;");
 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, "&nbsp;");
 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)."&amp;multiple=".htmlspecialchars(@$_REQUEST["multiple"], ENT_QUOTES)."&amp;token=".htmlspecialchars($token, ENT_QUOTES)."&amp;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)."&amp;multiple=".intval(@$_POST["multiple"])."&amp;token=".htmlspecialchars($token, ENT_QUOTES)."'>". _MA_USER_FINDUS ."</a>&nbsp;<span style='font-weight:bold;'>&raquo;&raquo;</span>&nbsp;". _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") : "&nbsp;";
 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>&nbsp;";
 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>&nbsp;\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 .= "&nbsp;<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) . "&nbsp;";
 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  ?>


Généré le : Sun Nov 25 11:44:32 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics