[ Index ]
 

Code source de Phorum 5.1.25

Accédez au Source d'autres logiciels libres

Classes | Fonctions | Variables | Constantes | Tables

title

Body

[fermer]

/include/admin/ -> users.php (source)

   1  <?php
   2  
   3  ////////////////////////////////////////////////////////////////////////////////
   4  //                                                                            //
   5  //   Copyright (C) 2006  Phorum Development Team                              //
   6  //   http://www.phorum.org                                                    //
   7  //                                                                            //
   8  //   This program is free software. You can redistribute it and/or modify     //
   9  //   it under the terms of either the current Phorum License (viewable at     //
  10  //   phorum.org) or the Phorum License that was distributed with this file    //
  11  //                                                                            //
  12  //   This program is distributed in the hope that it will be useful,          //
  13  //   but WITHOUT ANY WARRANTY, without even the implied warranty of           //
  14  //   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.                     //
  15  //                                                                            //
  16  //   You should have received a copy of the Phorum License                    //
  17  //   along with this program.                                                 //
  18  ////////////////////////////////////////////////////////////////////////////////
  19  
  20      if(!defined("PHORUM_ADMIN")) return;
  21  
  22      include ('./include/format_functions.php');
  23  
  24  
  25      $error="";
  26  
  27      if(count($_POST)){
  28  
  29  
  30          if( isset($_POST['action']) && $_POST['action'] == "deleteUsers") {
  31  
  32              $count=count($_POST['deleteIds']);
  33              if($count > 0) {
  34                  foreach($_POST['deleteIds'] as $id => $deluid) {
  35                      phorum_user_delete($deluid);
  36                  }
  37                  phorum_admin_okmsg("$count User(s) deleted.");
  38              }
  39  
  40          } else {
  41  
  42              $user_data=$_POST;
  43  
  44              switch( $_POST["section"] ) {
  45  
  46  
  47                  case "forums":
  48  
  49                      if($_POST["new_forum"]){
  50                          if(!is_array($_POST["new_forum_permissions"])){
  51                              $permission=0;
  52                          } else {
  53                              $permission = 0;
  54                              foreach($_POST["new_forum_permissions"] as $perm=>$check){
  55                                 $permission = $permission | $perm;
  56                              }
  57                          }
  58  
  59                          $user_data["forum_permissions"][$_POST["new_forum"]]=$permission;
  60                      }
  61  
  62                      if(isset($_POST["delforum"])){
  63                          foreach($_POST["delforum"] as $fid=>$val){
  64                              unset($user_data["forum_permissions"][$fid]);
  65                              unset($_POST["forums"][$fid]);
  66                          }
  67                      }
  68  
  69                      if(isset($_POST["forums"])){
  70                          foreach($_POST["forums"] as $forum_id){
  71                              $permission=0;
  72  
  73                              if(isset($user_data["forum_permissions"][$forum_id])){
  74                                  foreach($user_data["forum_permissions"][$forum_id] as $perm=>$check){
  75                                      $permission = $permission | $perm;
  76                                  }
  77                              }
  78  
  79                              $user_data["forum_permissions"][$forum_id]=$permission;
  80                          }
  81                      }
  82  
  83                      if(empty($user_data["forum_permissions"])) $user_data["forum_permissions"]=array();
  84  
  85                      unset($user_data["delforum"]);
  86                      unset($user_data["new_forum"]);
  87                      unset($user_data["new_forum_permissions"]);
  88  
  89                      break;
  90  
  91                  case "groups":
  92                      $groupdata = array();
  93  
  94                      if($_POST["new_group"]){
  95                          // set the new group permission to approved
  96                          $groupdata[$_POST["new_group"]] = PHORUM_USER_GROUP_APPROVED;
  97                      }
  98  
  99                      if(isset($_POST["group_perm"])){
 100                          foreach($_POST["group_perm"] as $group_id=>$perm){
 101                              // as long as we aren't removing them from the group, accept other values
 102                              if ($perm != PHORUM_USER_GROUP_REMOVE){
 103                                  $groupdata[$group_id] = $perm;
 104                              }
 105                          }
 106                      }
 107  
 108                      phorum_user_save_groups($_POST["user_id"], $groupdata);
 109                      break;
 110              }
 111  
 112              if(isset($_POST['password1']) && !empty($_POST['password1']) && !empty($_POST['password2']) && $_POST['password1'] != $_POST['password2']) {
 113                  $error="Passwords don't match!";
 114              } elseif(!empty($_POST['password1']) && !empty($_POST['password2'])) {
 115                  $user_data['password']=$_POST['password1'];
 116                  $user_data['password_temp']=$_POST['password1'];
 117              }
 118  
 119              // clean up
 120              unset($user_data["module"]);
 121              unset($user_data["section"]);
 122              unset($user_data["password1"]);
 123              unset($user_data["password2"]);
 124  
 125              if (empty($error)){
 126                  $user_data = phorum_hook("admin_users_form_save", $user_data);
 127                  if (isset($user_data["error"])) {
 128                      $error = $user_data["error"];
 129                      unset($user_data["error"]);
 130                  }
 131              }
 132  
 133              if(empty($error)){
 134                  phorum_user_save($user_data);
 135                  phorum_admin_okmsg("User Saved");
 136              }
 137          }
 138  
 139      }
 140  
 141      if ($error) {
 142          phorum_admin_error($error);
 143      }
 144  
 145      include_once  "./include/admin/PhorumInputForm.php";
 146      include_once  "./include/profile_functions.php";
 147      include_once  "./include/users.php";
 148  
 149      if(!defined("PHORUM_ORIGINAL_USER_CODE") || PHORUM_ORIGINAL_USER_CODE!==true){
 150          echo "Phorum User Admin only works with the Phorum User System.";
 151          return;
 152      }
 153  
 154      if(!isset($_GET["edit"]) && !isset($_POST['section'])){
 155  
 156          if(empty($_REQUEST["user_id"])){
 157  
 158              $frm =& new PhorumInputForm ("", "get", "Search");
 159  
 160              $frm->addbreak("Phorum User Admin");
 161  
 162              $frm->hidden("module", "users");
 163  
 164              $frm->addrow("Search", "Username or email contains: " . $frm->text_box("search", $_REQUEST["search"], 30) . " &bull; <a href=\"{$PHORUM["admin_http_path"]}?module=users&search=\">Find All Users</a>");
 165  
 166              $frm->addrow("", "Post count " .
 167                  $frm->select_tag("posts_op", array("gte" => ">=", "lte" => "<="), $_REQUEST["posts_op"]) .
 168                  $frm->text_box("posts", empty($_REQUEST["posts"]) ? "" : (int) $_REQUEST["posts"], 5) .
 169                  " and last active " .
 170                  // these are flipped because we're going back in time
 171                  $frm->select_tag("lastactive_op", array("gte" => "<=", "lte" => ">="), $_REQUEST["lastactive_op"]) .
 172                  $frm->text_box("lastactive", empty($_REQUEST["lastactive"]) ? "" : (int) $_REQUEST["lastactive"], 5) . " days ago");
 173              $frm->show();
 174          }
 175  
 176  ?>
 177          <hr class=\"PhorumAdminHR\" />
 178  
 179          <script type="text/javascript">
 180          <!--
 181          function CheckboxControl(form, onoff) {
 182              for (var i = 0; i < form.elements.length; i++)
 183                  if (form.elements[i].type == "checkbox")
 184                      form.elements[i].checked = onoff;
 185          }
 186          // -->
 187          </script>
 188  <?php
 189  
 190          $search=$_REQUEST["search"];
 191  
 192          $url_safe_search=urlencode($_REQUEST["search"]);
 193          $url_safe_search.="&posts=".urlencode($_REQUEST["posts"]);
 194          $url_safe_search.="&posts_op=".urlencode($_REQUEST["posts_op"]);
 195          $url_safe_search.="&lastactive=".urlencode($_REQUEST["lastactive"]);
 196          $url_safe_search.="&lastactive_op=".urlencode($_REQUEST["lastactive_op"]);
 197  
 198          $users=phorum_db_search_users($_REQUEST["search"]);
 199  
 200          if (isset($_REQUEST["posts"]) && $_REQUEST["posts"] != "" && $_REQUEST["posts"] >= 0) {
 201              $cmpfn = phorum_admin_gen_compare($_REQUEST["posts_op"]);
 202              $users = phorum_admin_filter_arr($users, "posts", $_REQUEST["posts"], $cmpfn);
 203          }
 204  
 205          if(isset($_REQUEST["lastactive"]) && $_REQUEST["lastactive"] != "" && $_REQUEST["lastactive"] >= 0) {
 206              $time = time() - ($_REQUEST["lastactive"] * 86400);
 207              $cmpfn = phorum_admin_gen_compare($_REQUEST["lastactive_op"]);
 208              $users = phorum_admin_filter_arr($users, "date_last_active", $time, $cmpfn);
 209          }
 210  
 211          $total=count($users);
 212  
 213          // count active
 214          $total_active=0;
 215          $total_poster=0;
 216          foreach($users as $user){
 217            if ($user['active']==1) {
 218              $total_active++;
 219              if (intval($user['posts'])) $total_poster++;
 220            }
 221          }
 222  
 223  
 224          settype($_REQUEST["start"], "integer");
 225  
 226          $display=30;
 227  
 228          $users=array_slice($users, $_REQUEST["start"], $display);
 229  
 230          if(count($users)) {
 231  
 232              $nav="";
 233  
 234              if($_REQUEST["start"]>0){
 235                  $old_start=$_REQUEST["start"]-$display;
 236                  $nav.="<a href=\"{$PHORUM["admin_http_path"]}?module=users&search=$url_safe_search&start=$old_start\">Previous Page</a>";
 237              }
 238  
 239              $nav.="&nbsp;&nbsp;";
 240  
 241              if($_REQUEST["start"]+$display<$total){
 242                  $new_start=$_REQUEST["start"]+$display;
 243                  $nav.="<a href=\"{$PHORUM["admin_http_path"]}?module=users&search=$url_safe_search&start=$new_start\">Next Page</a>";
 244              }
 245  
 246              echo <<<EOT
 247              <form name="UsersForm" action="{$PHORUM["admin_http_path"]}" method="post">
 248              <input type="hidden" name="module" value="users">
 249              <input type="hidden" name="action" value="deleteUsers">
 250              <table border="0" cellspacing="1" cellpadding="0"
 251                     class="PhorumAdminTable" width="100%">
 252              <tr>
 253                  <td>$total users found ($total_active active, $total_poster posting)</td>
 254                  <td colspan="3">Showing $display users at a time
 255                  <td colspan="2" align="right">$nav</td>
 256              </tr>
 257              <tr>
 258                  <td class="PhorumAdminTableHead">User</td>
 259                  <td class="PhorumAdminTableHead">Email</td>
 260                  <td class="PhorumAdminTableHead">Status</td>
 261                  <td class="PhorumAdminTableHead">Posts</td>
 262                  <td class="PhorumAdminTableHead">Last Activity</td>
 263                  <td class="PhorumAdminTableHead">Delete</td>
 264              </tr>
 265  EOT;
 266  
 267              foreach($users as $user){
 268  
 269                  switch($user['active']){
 270  
 271                      case PHORUM_USER_ACTIVE:
 272                          $status = "Active";
 273                          break;
 274  
 275                      case PHORUM_USER_PENDING_EMAIL:
 276                      case PHORUM_USER_PENDING_BOTH:
 277                          $status = "Pending Confirmation";
 278                          break;
 279  
 280                      case PHORUM_USER_PENDING_MOD:
 281                          $status = "Pending Moderator Approval";
 282  
 283                      default:
 284                          $status = "Deactivated";
 285                  }
 286  
 287                  $posts = intval($user['posts']);
 288  
 289                  $ta_class = "PhorumAdminTableRow".($ta_class == "PhorumAdminTableRow" ? "Alt" : "");
 290  
 291                  echo "<tr>\n";
 292                  echo "    <td class=\"".$ta_class."\"><a href=\"{$PHORUM["admin_http_path"]}?module=users&user_id={$user['user_id']}&edit=1\">".htmlspecialchars($user['username'])."</a></td>\n";
 293                  echo "    <td class=\"".$ta_class."\">".htmlspecialchars($user['email'])."</td>\n";
 294                  echo "    <td class=\"".$ta_class."\">{$status}</td>\n";
 295                  echo "    <td class=\"".$ta_class."\" style=\"text-align:right\">{$posts}</td>\n";
 296                  echo "    <td class=\"".$ta_class."\" align=\"right\">".(intval($user['date_last_active']) ? strftime($PHORUM['short_date'], intval($user['date_last_active'])) : "&nbsp;")."</td>\n";
 297                  echo "    <td class=\"".$ta_class."\"><input type=\"checkbox\" name=\"deleteIds[]\" value=\"{$user['user_id']}\"></td>\n";
 298                  echo "</tr>\n";
 299              }
 300  
 301              echo <<<EOT
 302              <tr>
 303                <td colspan="6" align="right">
 304                <input type="button" value="Check All"
 305                 onClick="CheckboxControl(this.form, true);">
 306                <input type="button" value="Clear All"
 307                 onClick="CheckboxControl(this.form, false);">
 308                <input type="submit" name="submit" value="Delete Selected Users"
 309                 onClick="return confirm('Really delete the selected user(s)?')">
 310                </td>
 311              </tr>
 312              </table>
 313              </form>
 314  EOT;
 315  
 316          } else {
 317  
 318              echo "No Users Found.";
 319  
 320          }
 321  
 322      }
 323  
 324      // display edit form
 325      if(isset($_REQUEST["user_id"])){
 326  
 327          $user=phorum_user_get($_REQUEST["user_id"]);
 328  
 329          if(count($user)){
 330  
 331              $frm =& new PhorumInputForm ("", "post", "Update");
 332  
 333              $frm->hidden("module", "users");
 334  
 335              $frm->hidden("section", "main");
 336  
 337              $frm->hidden("user_id", $_REQUEST["user_id"]);
 338  
 339              $frm->addbreak("Edit User");
 340  
 341              $frm->addrow("User Name", htmlspecialchars($user["username"])."&nbsp;&nbsp;<a href=\"#forums\">Edit Forum Permissions</a>&nbsp;&nbsp;<a href=\"#groups\">Edit Groups</a>");
 342  
 343              $frm->addrow("Email", $frm->text_box("email", $user["email"], 50));
 344              $frm->addrow("Password (Enter to change)", $frm->text_box("password1",""));
 345              $frm->addrow("Password (Confirmation)", $frm->text_box("password2",""));
 346  
 347  
 348              $frm->addrow("Signature", $frm->textarea("signature", $user["signature"]));
 349  
 350              $frm->addrow("Active", $frm->select_tag("active", array("No", "Yes"), $user["active"]));
 351  
 352              $frm->addrow("Administrator", $frm->select_tag("admin", array("No", "Yes"), $user["admin"]));
 353  
 354              $frm->addrow("Registration Date", phorum_date("%m/%d/%Y %I:%M%p",$user['date_added']));
 355  
 356              $row=$frm->addrow("Date last active", phorum_date("%m/%d/%Y %I:%M%p",$user['date_last_active']));
 357  
 358              $frm->addhelp($row, "Date last active", "This shows the date, when the user was last seen in the forum. Check your setting on \"Track user usage\" in the \"General Settings\". As long as this setting is not enabled, the activity will not be tracked.");
 359  
 360              phorum_hook("admin_users_form", $frm, $user);
 361  
 362              $frm->show();
 363  
 364              echo "<br /><hr class=\"PhorumAdminHR\" /><br /><a name=\"forums\"></a>";
 365  
 366              $frm =& new PhorumInputForm ("", "post", "Update");
 367  
 368              $frm->hidden("user_id", $_REQUEST["user_id"]);
 369  
 370              $frm->hidden("module", "users");
 371  
 372              $frm->hidden("section", "forums");
 373  
 374              $row=$frm->addbreak("Edit Forum Permissions");
 375  
 376              $frm->addhelp($row, "Forum Permissions", "These are permissions set exclusively for this user.  You need to grant all permisssions you want the user to have for a forum here.  No permissions from groups or a forum's properties will be used once the user has specific permissions for a forum.");
 377  
 378              $forums=phorum_db_get_forums();
 379  
 380              $forumpaths = phorum_get_forum_info(1);
 381  
 382              $perm_frm = $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_READ."]", 1, "Read")."&nbsp;&nbsp;".
 383                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_REPLY."]", 1, "Reply")."&nbsp;&nbsp;".
 384                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_NEW_TOPIC."]", 1, "Create&nbsp;New&nbsp;Topics")."&nbsp;&nbsp;".
 385                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_EDIT."]", 1, "Edit&nbsp;Their&nbsp;Posts")."<br />".
 386                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_ATTACH."]", 1, "Attach&nbsp;Files")."<br />".
 387                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_MODERATE_MESSAGES."]", 1, "Moderate Messages")."&nbsp;&nbsp;".
 388                          $frm->checkbox("new_forum_permissions[".PHORUM_USER_ALLOW_MODERATE_USERS."]", 1, "Moderate Users")."&nbsp;&nbsp;";
 389  
 390              $arr[]="Add A Forum...";
 391  
 392              foreach($forumpaths as $forum_id=>$forumname){
 393                  if(!isset($user["forum_permissions"][$forum_id]) && $forums[$forum_id]['folder_flag'] == 0)
 394                      $arr[$forum_id]=$forumname;
 395              }
 396              if(count($arr)>1)
 397                  $frm->addrow($frm->select_tag("new_forum", $arr), $perm_frm);
 398  
 399  
 400              if(is_array($user["forum_permissions"])){
 401                  foreach($user["forum_permissions"] as $forum_id=>$perms){
 402                      $perm_frm = $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_READ."]", 1, "Read", ($perms & PHORUM_USER_ALLOW_READ))."&nbsp;&nbsp;".
 403                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_REPLY."]", 1, "Reply", ($perms & PHORUM_USER_ALLOW_REPLY))."&nbsp;&nbsp;".
 404                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_NEW_TOPIC."]", 1, "Create&nbsp;New&nbsp;Topics", ($perms & PHORUM_USER_ALLOW_NEW_TOPIC))."&nbsp;&nbsp;".
 405                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_EDIT."]", 1, "Edit&nbsp;Their&nbsp;Posts", ($perms & PHORUM_USER_ALLOW_EDIT))."<br />".
 406                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_ATTACH."]", 1, "Attach&nbsp;Files", ($perms & PHORUM_USER_ALLOW_ATTACH))."<br />".
 407                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_MODERATE_MESSAGES."]", 1, "Moderate Messages", ($perms & PHORUM_USER_ALLOW_MODERATE_MESSAGES))."&nbsp;&nbsp;".
 408                                  $frm->checkbox("forum_permissions[$forum_id][".PHORUM_USER_ALLOW_MODERATE_USERS."]", 1, "Moderate Users", ($perms & PHORUM_USER_ALLOW_MODERATE_USERS))."&nbsp;&nbsp;".
 409  
 410                      $frm->hidden("forums[$forum_id]", $forum_id);
 411  
 412                      $row=$frm->addrow($forumpaths[$forum_id]."<br />".$frm->checkbox("delforum[$forum_id]", 1, "Delete"), $perm_frm);
 413  
 414                  }
 415              }
 416  
 417              $frm->show();
 418  
 419              echo "<br /><hr class=\"PhorumAdminHR\" /><br /><a name=\"groups\"></a>";
 420  
 421              $frm =& new PhorumInputForm ("", "post", "Update");
 422  
 423              $frm->hidden("user_id", $_REQUEST["user_id"]);
 424  
 425              $frm->hidden("module", "users");
 426  
 427              $frm->hidden("section", "groups");
 428  
 429              $extra_opts = "";
 430              // if its an admin, let the user know that the admin will be able to act as a moderator no matter what
 431              if ($user["admin"]){
 432                  $row=$frm->addbreak("Edit Groups (Admins can act as a moderator of every group, regardless of these values)");
 433              }
 434              else{
 435                  $row=$frm->addbreak("Edit Groups");
 436              }
 437  
 438              $groups= phorum_db_get_groups();
 439              $usergroups = phorum_user_get_groups($_REQUEST["user_id"]);
 440  
 441              $arr=array("Add A Group...");
 442              foreach($groups as $group_id=>$group){
 443                  if(!isset($usergroups[$group_id]))
 444                      $arr[$group_id]=$group["name"];
 445              }
 446  
 447              if(count($arr)>1)
 448                  $frm->addrow("Add A Group", $frm->select_tag("new_group", $arr));
 449  
 450              if(is_array($usergroups)){
 451                  $group_options = array(PHORUM_USER_GROUP_REMOVE => "< Remove User From Group >",
 452                          PHORUM_USER_GROUP_SUSPENDED => "Suspended",
 453                          PHORUM_USER_GROUP_UNAPPROVED => "Unapproved",
 454                          PHORUM_USER_GROUP_APPROVED => "Approved",
 455                          PHORUM_USER_GROUP_MODERATOR => "Group Moderator");
 456                  foreach($usergroups as $group_id => $group_perm){
 457                      $group_info = phorum_db_get_groups($group_id);
 458                      $frm->hidden("groups[$group_id]", "$group_id");
 459                      $frm->addrow($group_info[$group_id]["name"], $frm->select_tag("group_perm[$group_id]", $group_options, $group_perm, $extra_opts));
 460                  }
 461              }
 462  
 463              $frm->show();
 464  
 465          } else {
 466  
 467              echo "User Not Found.";
 468  
 469          }
 470  
 471      }
 472  
 473  ?>


Généré le : Thu Nov 29 12:22:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics