aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--admin/user_perm.php4
-rw-r--r--language/en_UK.iso-8859-1/admin.lang.php5
-rw-r--r--language/fr_FR.iso-8859-1/admin.lang.php5
-rw-r--r--profile.php128
-rw-r--r--template/default/profile.tpl43
5 files changed, 183 insertions, 2 deletions
diff --git a/admin/user_perm.php b/admin/user_perm.php
index 4c58725b5..2583306a1 100644
--- a/admin/user_perm.php
+++ b/admin/user_perm.php
@@ -36,6 +36,10 @@ if (isset($_POST['submituser']))
{
$userdata = getuserdata($_POST['username']);
}
+else if (isset($_GET['user_id']))
+{
+ $userdata = getuserdata(intval($_GET['user_id']));
+}
else if (isset($_POST['falsify'])
and isset($_POST['cat_true'])
and count($_POST['cat_true']) > 0)
diff --git a/language/en_UK.iso-8859-1/admin.lang.php b/language/en_UK.iso-8859-1/admin.lang.php
index 22beb924e..01cd891d9 100644
--- a/language/en_UK.iso-8859-1/admin.lang.php
+++ b/language/en_UK.iso-8859-1/admin.lang.php
@@ -323,6 +323,11 @@ $lang['user_delete'] = 'Delete user';
$lang['user_delete_hint'] = 'Click here to delete this user. Warning! This operation cannot be undone!';
$lang['permuser_only_private'] = 'Only private categories are shown';
$lang['permuser_info'] = 'Only private categories are listed. Private/Public category status can be set in screen "Categories > Public / Private"';
+$lang['order_by'] = 'order by';
+$lang['registration_date'] = 'registration date';
+$lang['ascending'] = 'ascending';
+$lang['descending'] = 'descending';
+$lang['actions'] = 'actions';
// Groups
$lang['group_confirm_delete']= 'Confirm group deletion';
diff --git a/language/fr_FR.iso-8859-1/admin.lang.php b/language/fr_FR.iso-8859-1/admin.lang.php
index c8f32a111..9221bfc8b 100644
--- a/language/fr_FR.iso-8859-1/admin.lang.php
+++ b/language/fr_FR.iso-8859-1/admin.lang.php
@@ -331,6 +331,11 @@ $lang['user_delete'] = 'Supprimer l\'utilisateur';
$lang['user_delete_hint'] = 'Cliquez ici pour supprimer définitivement l\'utilisateur. Attention cette opération ne pourra être rétablie.';
$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.';
$lang['permuser_only_private'] = 'Seules les catégories privées sont représentées';
+$lang['order_by'] = 'classer par';
+$lang['registration_date'] = 'date d\'enregistrement';
+$lang['ascending'] = 'croissant';
+$lang['descending'] = 'décroissant';
+$lang['actions'] = 'actions';
// Groups
$lang['group_list_title'] = 'Liste des groupes existants';
diff --git a/profile.php b/profile.php
index 2f4f3311e..28a7af672 100644
--- a/profile.php
+++ b/profile.php
@@ -34,6 +34,10 @@ if (defined('IN_ADMIN') and isset($_POST['submituser']))
{
$userdata = getuserdata($_POST['username']);
}
+else if (defined('IN_ADMIN') and IN_ADMIN and isset($_GET['user_id']))
+{
+ $userdata = getuserdata(intval($_GET['user_id']));
+}
elseif (defined('IN_ADMIN') and isset($_POST['submit']))
{
$userdata = getuserdata(intval($_POST['userid']));
@@ -226,6 +230,22 @@ if (defined('IN_ADMIN') and IN_ADMIN and empty($userdata))
$template->assign_block_vars('select_user',array());
$admin_profile = add_session_id(PHPWG_ROOT_PATH.'admin.php?page=profile');
+
+ $conf['users_page'] = 20;
+ $start = isset($_GET['start']) ? $_GET['start'] : 0;
+
+ $query = '
+SELECT COUNT(*) AS counter
+ FROM '.USERS_TABLE.'
+ WHERE id != 2
+;';
+ list($counter) = mysql_fetch_row(pwg_query($query));
+ $url = PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start'));
+ $navbar = create_navigation_bar($url,
+ $counter,
+ $start,
+ $conf['users_page'],
+ '');
$template->assign_vars(
array(
@@ -234,10 +254,115 @@ if (defined('IN_ADMIN') and IN_ADMIN and empty($userdata))
'L_FIND_USERNAME'=>$lang['Find_username'],
'L_AUTH_USER'=>$lang['permuser_only_private'],
'L_SUBMIT'=>$lang['submit'],
-
+ 'L_STATUS'=>$lang['user_status'],
+ 'L_USERNAME' => $lang['login'],
+ 'L_EMAIL' => $lang['mail_address'],
+ 'L_ORDER_BY' => $lang['order_by'],
+ 'L_ACTIONS' => $lang['actions'],
+ 'L_PERMISSIONS' => $lang['permissions'],
+ 'L_USERS_LIST' => $lang['title_liste_users'],
+
+ 'NAVBAR'=>$navbar,
'F_SEARCH_USER_ACTION' => $admin_profile,
+ 'F_ORDER_ACTION' => $admin_profile,
'U_SEARCH_USER' => add_session_id(PHPWG_ROOT_PATH.'admin/search.php')
));
+
+ $order_by_items = array('id' => $lang['registration_date'],
+ 'username' => $lang['login']);
+ foreach ($order_by_items as $item => $label)
+ {
+ $selected = (isset($_GET['order_by']) and $_GET['order_by'] == $item) ?
+ 'selected="selected"' : '';
+ $template->assign_block_vars(
+ 'select_user.order_by',
+ array(
+ 'VALUE' => $item,
+ 'CONTENT' => $label,
+ 'SELECTED' => $selected
+ ));
+ }
+
+ $direction_items = array('asc' => $lang['ascending'],
+ 'desc' => $lang['descending']);
+ foreach ($direction_items as $item => $label)
+ {
+ $selected = (isset($_GET['direction']) and $_GET['direction'] == $item) ?
+ 'selected="selected"' : '';
+ $template->assign_block_vars(
+ 'select_user.direction',
+ array(
+ 'VALUE' => $item,
+ 'CONTENT' => $label,
+ 'SELECTED' => $selected
+ ));
+ }
+
+ $profile_url = PHPWG_ROOT_PATH.'admin.php?page=profile&user_id=';
+ $perm_url = PHPWG_ROOT_PATH.'admin.php?page=user_perm&user_id=';
+
+ $users = array();
+ $user_ids = array();
+ $groups_content = array();
+
+ $order_by = 'id';
+ if (isset($_GET['order_by'])
+ and in_array($_GET['order_by'], array_keys($order_by_items)))
+ {
+ $order_by = $_GET['order_by'];
+ }
+
+ $direction = 'ASC';
+ if (isset($_GET['direction'])
+ and in_array($_GET['direction'], array_keys($direction_items)))
+ {
+ $direction = strtoupper($_GET['direction']);
+ }
+
+ $query = '
+SELECT id, username, mail_address, status
+ FROM '.USERS_TABLE.'
+ WHERE id != 2
+ ORDER BY '.$order_by.' '.$direction.'
+ LIMIT '.$start.', '.$conf['users_page'].'
+;';
+ $result = pwg_query($query);
+ while ($row = mysql_fetch_array($result))
+ {
+ array_push($users, $row);
+ array_push($user_ids, $row['id']);
+ $user_groups[$row['id']] = array();
+ }
+
+ $query = '
+SELECT user_id, group_id, name
+ FROM '.USER_GROUP_TABLE.' INNER JOIN '.GROUPS_TABLE.' ON group_id = id
+ WHERE user_id IN ('.implode(',', $user_ids).')
+;';
+ $result = pwg_query($query);
+ while ($row = mysql_fetch_array($result))
+ {
+ $groups_content[$row['group_id']] = $row['name'];
+ array_push($user_groups[$row['user_id']], $row['group_id']);
+ }
+
+ foreach ($users as $item)
+ {
+ $groups = preg_replace('/(\d+)/e',
+ "\$groups_content['$1']",
+ implode(', ', $user_groups[$item['id']]));
+
+ $template->assign_block_vars(
+ 'select_user.user',
+ array(
+ 'U_MOD'=>add_session_id($profile_url.$item['id']),
+ 'U_PERM'=>add_session_id($perm_url.$item['id']),
+ 'USERNAME'=>$item['username'],
+ 'STATUS'=>$item['status'],
+ 'EMAIL'=>isset($item['mail_address']) ? $item['mail_address'] : '',
+ 'GROUPS'=>$groups
+ ));
+ }
}
else
{
@@ -289,6 +414,7 @@ else
'L_YES'=>$lang['yes'],
'L_NO'=>$lang['no'],
'L_SUBMIT'=>$lang['submit'],
+ 'L_RESET'=>$lang['reset'],
'L_RETURN' => $lang['home'],
'L_RETURN_HINT' => $lang['home_hint'],
diff --git a/template/default/profile.tpl b/template/default/profile.tpl
index b672e566f..79f15764e 100644
--- a/template/default/profile.tpl
+++ b/template/default/profile.tpl
@@ -5,6 +5,46 @@
<input type="submit" name="submituser" value="{L_LOOKUP_USER}" class="bouton" />
<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;" />
</form>
+
+<div class="admin">{L_USERS_LIST}</div>
+<form method="get" action="{F_ORDER_ACTION}">
+<input type="hidden" name="page" value="profile" />
+<div style="text-align:center">
+ {L_ORDER_BY}
+ <select name="order_by">
+ <!-- BEGIN order_by -->
+ <option value="{select_user.order_by.VALUE}" {select_user.order_by.SELECTED} >{select_user.order_by.CONTENT}</option>
+ <!-- END order_by -->
+ </select>
+ <select name="direction">
+ <!-- BEGIN direction -->
+ <option value="{select_user.direction.VALUE}" {select_user.direction.SELECTED} >{select_user.direction.CONTENT}</option>
+ <!-- END direction -->
+ </select>
+ <input type="submit" value="{L_SUBMIT}" class="bouton" />
+</div>
+</form>
+
+<table style="width:100%;" >
+ <tr class="throw">
+ <th style="width:20%;">{L_USERNAME}</th>
+ <th style="width:20%;">{L_STATUS}</th>
+ <th style="width:30%;">{L_EMAIL}</th>
+ <th style="width:30%;">{L_GROUPS}</th>
+ <th style="width:1%;">{L_ACTIONS}</th>
+ </tr>
+ <!-- BEGIN user -->
+ <tr>
+ <td><a href="{select_user.user.U_MOD}">{select_user.user.USERNAME}</a></td>
+ <td>{select_user.user.STATUS}</td>
+ <td>{select_user.user.EMAIL}</td>
+ <td>{select_user.user.GROUPS}</td>
+<!-- [<a href="{select_user.user.U_MOD}">{L_MODIFY}</a>] -->
+ <td>[<a href="{select_user.user.U_PERM}">{L_PERMISSIONS}</a>]</td>
+ </tr>
+ <!-- END user -->
+</table>
+<div class="navigationBar">{NAVBAR}</div>
<!-- END select_user -->
<!-- BEGIN modify -->
<!-- BEGIN profile -->
@@ -109,6 +149,7 @@
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="{L_SUBMIT}" class="bouton" />
+ <input type="reset" name="reset" value="{L_RESET}" class="bouton" />
</td>
</tr>
</table>
@@ -118,4 +159,4 @@
<a href="{U_RETURN}" title="{L_RETURN_HINT}">[{L_RETURN}]</a>
</div>
<!-- END profile -->
-<!-- END modify --> \ No newline at end of file
+<!-- END modify -->