Changeset 709


Ignore:
Timestamp:
Jan 20, 2005, 12:36:43 AM (19 years ago)
Author:
plg
Message:
  • new features : multipages users list. The list can be ordered by id (same effect than registration date) or by username. On each line, you can access properties and permissions for the user
Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/admin/user_perm.php

    r675 r709  
    3636{
    3737  $userdata = getuserdata($_POST['username']);
     38}
     39else if (isset($_GET['user_id']))
     40{
     41  $userdata = getuserdata(intval($_GET['user_id']));
    3842}
    3943else if (isset($_POST['falsify'])
  • trunk/language/en_UK.iso-8859-1/admin.lang.php

    r695 r709  
    324324$lang['permuser_only_private'] = 'Only private categories are shown';
    325325$lang['permuser_info'] = 'Only private categories are listed. Private/Public category status can be set in screen "Categories > Public / Private"';
     326$lang['order_by'] = 'order by';
     327$lang['registration_date'] = 'registration date';
     328$lang['ascending'] = 'ascending';
     329$lang['descending'] = 'descending';
     330$lang['actions'] = 'actions';
    326331
    327332// Groups
  • trunk/language/fr_FR.iso-8859-1/admin.lang.php

    r695 r709  
    332332$lang['permuser_info'] = 'Seules les catégories déclarées en privée sont affichées. Le status privé/public des catégories est configurable dans l\'écran "Catégories > Sécurité" de l\'administration.';
    333333$lang['permuser_only_private'] = 'Seules les catégories privées sont représentées';
     334$lang['order_by'] = 'classer par';
     335$lang['registration_date'] = 'date d\'enregistrement';
     336$lang['ascending'] = 'croissant';
     337$lang['descending'] = 'décroissant';
     338$lang['actions'] = 'actions';
    334339
    335340// Groups
  • trunk/profile.php

    r688 r709  
    3535  $userdata = getuserdata($_POST['username']);
    3636}
     37else if (defined('IN_ADMIN') and IN_ADMIN and isset($_GET['user_id']))
     38{
     39  $userdata = getuserdata(intval($_GET['user_id']));
     40}
    3741elseif (defined('IN_ADMIN') and isset($_POST['submit']))
    3842{
     
    227231
    228232  $admin_profile = add_session_id(PHPWG_ROOT_PATH.'admin.php?page=profile');
     233
     234  $conf['users_page'] = 20;
     235  $start = isset($_GET['start']) ? $_GET['start'] : 0;
     236
     237  $query = '
     238SELECT COUNT(*) AS counter
     239  FROM '.USERS_TABLE.'
     240  WHERE id != 2
     241;';
     242  list($counter) = mysql_fetch_row(pwg_query($query));
     243  $url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
     244  $navbar = create_navigation_bar($url,
     245                                  $counter,
     246                                  $start,
     247                                  $conf['users_page'],
     248                                  '');
    229249 
    230250  $template->assign_vars(
     
    235255      'L_AUTH_USER'=>$lang['permuser_only_private'],
    236256      'L_SUBMIT'=>$lang['submit'],
    237      
     257      'L_STATUS'=>$lang['user_status'],
     258      'L_USERNAME' => $lang['login'],
     259      'L_EMAIL' => $lang['mail_address'],
     260      'L_ORDER_BY' => $lang['order_by'],
     261      'L_ACTIONS' => $lang['actions'],
     262      'L_PERMISSIONS' => $lang['permissions'],
     263      'L_USERS_LIST' => $lang['title_liste_users'],
     264
     265      'NAVBAR'=>$navbar,
    238266      'F_SEARCH_USER_ACTION' => $admin_profile,
     267      'F_ORDER_ACTION' => $admin_profile,
    239268      'U_SEARCH_USER' => add_session_id(PHPWG_ROOT_PATH.'admin/search.php')
    240269      ));
     270
     271  $order_by_items = array('id' => $lang['registration_date'],
     272                          'username' => $lang['login']);
     273  foreach ($order_by_items as $item => $label)
     274  {
     275    $selected = (isset($_GET['order_by']) and $_GET['order_by'] == $item) ?
     276      'selected="selected"' : '';
     277    $template->assign_block_vars(
     278      'select_user.order_by',
     279      array(
     280        'VALUE' => $item,
     281        'CONTENT' => $label,
     282        'SELECTED' => $selected
     283        ));
     284  }
     285
     286  $direction_items = array('asc' => $lang['ascending'],
     287                           'desc' => $lang['descending']);
     288  foreach ($direction_items as $item => $label)
     289  {
     290    $selected = (isset($_GET['direction']) and $_GET['direction'] == $item) ?
     291      'selected="selected"' : '';
     292    $template->assign_block_vars(
     293      'select_user.direction',
     294      array(
     295        'VALUE' => $item,
     296        'CONTENT' => $label,
     297        'SELECTED' => $selected
     298        ));
     299  }
     300
     301  $profile_url = PHPWG_ROOT_PATH.'admin.php?page=profile&user_id=';
     302  $perm_url = PHPWG_ROOT_PATH.'admin.php?page=user_perm&user_id=';
     303
     304  $users = array();
     305  $user_ids = array();
     306  $groups_content = array();
     307
     308  $order_by = 'id';
     309  if (isset($_GET['order_by'])
     310      and in_array($_GET['order_by'], array_keys($order_by_items)))
     311  {
     312    $order_by = $_GET['order_by'];
     313  }
     314
     315  $direction = 'ASC';
     316  if (isset($_GET['direction'])
     317      and in_array($_GET['direction'], array_keys($direction_items)))
     318  {
     319    $direction = strtoupper($_GET['direction']);
     320  }
     321 
     322  $query = '
     323SELECT id, username, mail_address, status
     324  FROM '.USERS_TABLE.'
     325  WHERE id != 2
     326  ORDER BY '.$order_by.' '.$direction.'
     327  LIMIT '.$start.', '.$conf['users_page'].'
     328;';
     329  $result = pwg_query($query);
     330  while ($row = mysql_fetch_array($result))
     331  {
     332    array_push($users, $row);
     333    array_push($user_ids, $row['id']);
     334    $user_groups[$row['id']] = array();
     335  }
     336
     337  $query = '
     338SELECT user_id, group_id, name
     339  FROM '.USER_GROUP_TABLE.' INNER JOIN '.GROUPS_TABLE.' ON group_id = id
     340  WHERE user_id IN ('.implode(',', $user_ids).')
     341;';
     342  $result = pwg_query($query);
     343  while ($row = mysql_fetch_array($result))
     344  {
     345    $groups_content[$row['group_id']] = $row['name'];
     346    array_push($user_groups[$row['user_id']], $row['group_id']);
     347  }
     348
     349  foreach ($users as $item)
     350  {
     351    $groups = preg_replace('/(\d+)/e',
     352                           "\$groups_content['$1']",
     353                           implode(', ', $user_groups[$item['id']]));
     354   
     355    $template->assign_block_vars(
     356      'select_user.user',
     357      array(
     358        'U_MOD'=>add_session_id($profile_url.$item['id']),
     359        'U_PERM'=>add_session_id($perm_url.$item['id']),
     360        'USERNAME'=>$item['username'],
     361        'STATUS'=>$item['status'],
     362        'EMAIL'=>isset($item['mail_address']) ? $item['mail_address'] : '',
     363        'GROUPS'=>$groups
     364        ));
     365  }
    241366}
    242367else
     
    290415      'L_NO'=>$lang['no'],
    291416      'L_SUBMIT'=>$lang['submit'],
     417      'L_RESET'=>$lang['reset'],
    292418      'L_RETURN' =>  $lang['home'],
    293419      'L_RETURN_HINT' =>  $lang['home_hint'], 
  • trunk/template/default/profile.tpl

    r631 r709  
    66  <input type="submit" name="usersubmit" value="{L_FIND_USERNAME}" class="bouton" onClick="window.open('{U_SEARCH_USER}', '_phpwgsearch', 'HEIGHT=250,resizable=yes,WIDTH=400');return false;" />
    77</form>
     8
     9<div class="admin">{L_USERS_LIST}</div>
     10<form method="get" action="{F_ORDER_ACTION}">
     11<input type="hidden" name="page" value="profile" />
     12<div style="text-align:center">
     13  {L_ORDER_BY}
     14  <select name="order_by">
     15    <!-- BEGIN order_by -->
     16    <option value="{select_user.order_by.VALUE}" {select_user.order_by.SELECTED} >{select_user.order_by.CONTENT}</option>
     17    <!-- END order_by -->
     18  </select>
     19  <select name="direction">
     20    <!-- BEGIN direction -->
     21    <option value="{select_user.direction.VALUE}" {select_user.direction.SELECTED} >{select_user.direction.CONTENT}</option>
     22    <!-- END direction -->
     23  </select>
     24  <input type="submit" value="{L_SUBMIT}" class="bouton" />
     25</div>
     26</form>
     27
     28<table style="width:100%;" >
     29  <tr class="throw">
     30    <th style="width:20%;">{L_USERNAME}</th>
     31    <th style="width:20%;">{L_STATUS}</th>
     32    <th style="width:30%;">{L_EMAIL}</th>
     33    <th style="width:30%;">{L_GROUPS}</th>
     34    <th style="width:1%;">{L_ACTIONS}</th>
     35  </tr>
     36  <!-- BEGIN user -->
     37  <tr>
     38    <td><a href="{select_user.user.U_MOD}">{select_user.user.USERNAME}</a></td>
     39    <td>{select_user.user.STATUS}</td>
     40    <td>{select_user.user.EMAIL}</td>
     41    <td>{select_user.user.GROUPS}</td>
     42<!-- [<a href="{select_user.user.U_MOD}">{L_MODIFY}</a>] -->
     43    <td>[<a href="{select_user.user.U_PERM}">{L_PERMISSIONS}</a>]</td>
     44  </tr>
     45  <!-- END user -->
     46</table>
     47<div class="navigationBar">{NAVBAR}</div>
    848<!-- END select_user -->
    949<!-- BEGIN modify -->
     
    110150        <td colspan="2" align="center">
    111151          <input type="submit" name="submit" value="{L_SUBMIT}" class="bouton" />
     152          <input type="reset" name="reset" value="{L_RESET}" class="bouton" />
    112153        </td>
    113154  </tr>
Note: See TracChangeset for help on using the changeset viewer.