diff --git a/admin.php b/admin.php index 185b4f885..60a6b25db 100644 --- a/admin.php +++ b/admin.php @@ -50,12 +50,18 @@ else if (isset($_GET['user_id'])) if (isset( $_GET['page'] )) switch ( $_GET['page'] ) { - case 'user_list': - $title = $lang['title_liste_users']; $page_valide = true; break; - case 'profile': - $title = $lang['title_user_modify']; - $page_valide = true; - break; + case 'user_list' : + { + $title = $lang['title_liste_users']; + $page_valide = true; + break; + } + case 'profile' : + { + $title = $lang['title_user_modify']; + $page_valide = true; + break; + } case 'user_perm': $title = $lang['title_user_perm'].' '.$username; $page_valide = true; break; @@ -248,7 +254,7 @@ $template->assign_vars(array( 'U_COMMENTS'=>add_session_id($link_start.'comments' ), 'U_CADDIE'=>add_session_id($link_start.'element_set&cat=caddie'), 'U_THUMBNAILS'=>add_session_id($link_start.'thumbnail' ), - 'U_USERS'=>add_session_id($link_start.'profile' ), + 'U_USERS'=>add_session_id($link_start.'user_list' ), 'U_GROUPS'=>add_session_id($link_start.'group_list' ), 'U_USERS_AUTH'=>add_session_id($link_start.'user_perm' ), 'U_GROUPS_AUTH'=>add_session_id($link_start.'group_perm'), diff --git a/admin/user_list.php b/admin/user_list.php new file mode 100644 index 000000000..8e50f9c02 --- /dev/null +++ b/admin/user_list.php @@ -0,0 +1,246 @@ +set_filenames(array('user_list'=>'admin/user_list.tpl')); + +$base_url = add_session_id(PHPWG_ROOT_PATH.'admin.php?page=user_list'); + +$conf['users_page'] = 20; + +if (isset($_GET['start']) and is_numeric($_GET['start'])) +{ + $start = $_GET['start']; +} +else +{ + $start = 0; +} + +$template->assign_vars( + array( + 'L_AUTH_USER'=>$lang['permuser_only_private'], + 'L_GROUP_ADD_USER' => $lang['group_add_user'], + 'L_SUBMIT'=>$lang['submit'], + 'L_STATUS'=>$lang['user_status'], + 'L_USERNAME' => $lang['login'], + 'L_PASSWORD' => $lang['password'], + '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'], + + 'F_ADD_ACTION' => $base_url, + 'F_USERNAME' => @$_GET['username'], + 'F_FILTER_ACTION' => PHPWG_ROOT_PATH.'admin.php' + )); + +if (isset($_GET['id'])) +{ + $template->assign_block_vars('session', array('ID' => $_GET['id'])); +} + +$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( + '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( + 'direction', + array( + 'VALUE' => $item, + 'CONTENT' => $label, + 'SELECTED' => $selected + )); +} + +// +-----------------------------------------------------------------------+ +// | filter | +// +-----------------------------------------------------------------------+ + +$username = !empty($_GET['username']) ? $_GET['username'] : '%'; +$username = str_replace('*', '%', $username); +if (function_exists('mysql_real_escape_string')) +{ + $username = mysql_real_escape_string($username); +} +else +{ + $username = mysql_escape_string($username); +} +$username = !empty($username) ? $username : '%'; + +// +-----------------------------------------------------------------------+ +// | navigation bar | +// +-----------------------------------------------------------------------+ + +$query = ' +SELECT count(*) + FROM '.USERS_TABLE.' + WHERE id != 2 + AND username LIKE \''.$username.'\' +;'; +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('NAVBAR' => $navbar)); + +// +-----------------------------------------------------------------------+ +// | user list | +// +-----------------------------------------------------------------------+ + +$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 + AND username LIKE \''.$username.'\' + 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(); +} + +if (count($user_ids) > 0) +{ + $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( + 'user', + array( + 'U_MOD'=>add_session_id($profile_url.$item['id']), + 'U_PERM'=>add_session_id($perm_url.$item['id']), + 'USERNAME'=>$item['username'], + 'STATUS'=>$lang['user_status_'.$item['status']], + 'EMAIL'=>isset($item['mail_address']) ? $item['mail_address'] : '', + 'GROUPS'=>$groups + )); + } +} + +// +-----------------------------------------------------------------------+ +// | html code display | +// +-----------------------------------------------------------------------+ + +$template->assign_var_from_handle('ADMIN_CONTENT', 'user_list'); +?> diff --git a/doc/ChangeLog b/doc/ChangeLog index eaf71ed5e..d75bc5402 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,10 @@ +2005-04-25 Pierrick LE GALL + + * profile.php is no longer used for listing users : + admin/user_list.php comes back (as in 1.3 branch) + + * user list updated : ability to filter list on username + 2005-04-25 Gweltas * ability to install even if file include/mysql.inc.php doesn't diff --git a/profile.php b/profile.php index 42d36ca92..57f6255be 100644 --- a/profile.php +++ b/profile.php @@ -30,11 +30,7 @@ // | initialization | // +-----------------------------------------------------------------------+ $userdata = array(); -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'])) +if (defined('IN_ADMIN') and IN_ADMIN and isset($_GET['user_id'])) { $userdata = getuserdata(intval($_GET['user_id'])); } @@ -208,11 +204,6 @@ UPDATE '.USERS_TABLE.' } } } -else if (defined('IN_ADMIN') and IN_ADMIN and isset($_POST['submit_add'])) -{ - $errors = register_user($_POST['login'], $_POST['password'], - $_POST['password'], ''); -} // +-----------------------------------------------------------------------+ // | page header and options | // +-----------------------------------------------------------------------+ @@ -230,237 +221,88 @@ else //----------------------------------------------------- template initialization $template->set_filenames(array('profile_body'=>'profile.tpl')); -if (defined('IN_ADMIN') and IN_ADMIN and empty($userdata)) -{ - $admin_profile = add_session_id(PHPWG_ROOT_PATH.'admin.php?page=profile'); +$expand = ($userdata['expand'] == 'true') ? 'EXPAND_TREE_YES':'EXPAND_TREE_NO'; - $template->assign_block_vars('add_user', array('F_ACTION'=>$admin_profile)); - $template->assign_block_vars('select_user',array()); - - $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'], - ''); +$nb_comments = +($userdata['show_nb_comments'] == 'true') ? 'NB_COMMENTS_YES':'NB_COMMENTS_NO'; - $template->assign_vars( - array( - 'L_SELECT_USERNAME'=>$lang['Select_username'], - 'L_LOOKUP_USER'=>$lang['Look_up_user'], - 'L_FIND_USERNAME'=>$lang['Find_username'], - 'L_AUTH_USER'=>$lang['permuser_only_private'], - 'L_GROUP_ADD_USER' => $lang['group_add_user'], - 'L_SUBMIT'=>$lang['submit'], - 'L_STATUS'=>$lang['user_status'], - 'L_USERNAME' => $lang['login'], - 'L_PASSWORD' => $lang['password'], - '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_vars( + array( + 'USERNAME'=>$userdata['username'], + 'USERID'=>$userdata['id'], + 'EMAIL'=>@$userdata['mail_address'], + 'LANG_SELECT'=>language_select($userdata['language'], 'language'), + 'NB_IMAGE_LINE'=>$userdata['nb_image_line'], + 'NB_ROW_PAGE'=>$userdata['nb_line_page'], + 'STYLE_SELECT'=>style_select($userdata['template'], 'template'), + 'RECENT_PERIOD'=>$userdata['recent_period'], + 'MAXWIDTH'=>@$userdata['maxwidth'], + 'MAXHEIGHT'=>@$userdata['maxheight'], - $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'=>$lang['user_status_'.$item['status']], - 'EMAIL'=>isset($item['mail_address']) ? $item['mail_address'] : '', - 'GROUPS'=>$groups - )); - } -} -else -{ - $expand = - ($userdata['expand']=='true')? - 'EXPAND_TREE_YES':'EXPAND_TREE_NO'; - - $nb_comments = - ($userdata['show_nb_comments']=='true')? - 'NB_COMMENTS_YES':'NB_COMMENTS_NO'; - - $template->assign_block_vars('modify',array()); - $template->assign_vars( - array( - 'USERNAME'=>$userdata['username'], - 'USERID'=>$userdata['id'], - 'EMAIL'=>@$userdata['mail_address'], - 'LANG_SELECT'=>language_select($userdata['language'], 'language'), - 'NB_IMAGE_LINE'=>$userdata['nb_image_line'], - 'NB_ROW_PAGE'=>$userdata['nb_line_page'], - 'STYLE_SELECT'=>style_select($userdata['template'], 'template'), - 'RECENT_PERIOD'=>$userdata['recent_period'], - 'MAXWIDTH'=>@$userdata['maxwidth'], - 'MAXHEIGHT'=>@$userdata['maxheight'], - - $expand=>'checked="checked"', - $nb_comments=>'checked="checked"', - - 'L_TITLE' => $lang['customize_title'], - 'L_REGISTRATION_INFO' => $lang['register_title'], - 'L_PREFERENCES' => $lang['preferences'], - 'L_USERNAME' => $lang['login'], - 'L_EMAIL' => $lang['mail_address'], - 'L_CURRENT_PASSWORD' => $lang['password'], - 'L_CURRENT_PASSWORD_HINT' => $lang['password_hint'], - 'L_NEW_PASSWORD' => $lang['new_password'], - 'L_NEW_PASSWORD_HINT' => $lang['new_password_hint'], - 'L_CONFIRM_PASSWORD' => $lang['reg_confirm'], - 'L_CONFIRM_PASSWORD_HINT' => $lang['confirm_password_hint'], - 'L_LANG_SELECT'=>$lang['language'], - 'L_NB_IMAGE_LINE'=>$lang['nb_image_per_row'], - 'L_NB_ROW_PAGE'=>$lang['nb_row_per_page'], - 'L_STYLE_SELECT'=>$lang['theme'], - 'L_RECENT_PERIOD'=>$lang['recent_period'], - 'L_EXPAND_TREE'=>$lang['auto_expand'], - 'L_NB_COMMENTS'=>$lang['show_nb_comments'], - 'L_MAXWIDTH'=>$lang['maxwidth'], - 'L_MAXHEIGHT'=>$lang['maxheight'], - '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'], - - 'F_ACTION'=>add_session_id($url_action), - )); + $expand=>'checked="checked"', + $nb_comments=>'checked="checked"', + + 'L_TITLE' => $lang['customize_title'], + 'L_REGISTRATION_INFO' => $lang['register_title'], + 'L_PREFERENCES' => $lang['preferences'], + 'L_USERNAME' => $lang['login'], + 'L_EMAIL' => $lang['mail_address'], + 'L_CURRENT_PASSWORD' => $lang['password'], + 'L_CURRENT_PASSWORD_HINT' => $lang['password_hint'], + 'L_NEW_PASSWORD' => $lang['new_password'], + 'L_NEW_PASSWORD_HINT' => $lang['new_password_hint'], + 'L_CONFIRM_PASSWORD' => $lang['reg_confirm'], + 'L_CONFIRM_PASSWORD_HINT' => $lang['confirm_password_hint'], + 'L_LANG_SELECT'=>$lang['language'], + 'L_NB_IMAGE_LINE'=>$lang['nb_image_per_row'], + 'L_NB_ROW_PAGE'=>$lang['nb_row_per_page'], + 'L_STYLE_SELECT'=>$lang['theme'], + 'L_RECENT_PERIOD'=>$lang['recent_period'], + 'L_EXPAND_TREE'=>$lang['auto_expand'], + 'L_NB_COMMENTS'=>$lang['show_nb_comments'], + 'L_MAXWIDTH'=>$lang['maxwidth'], + 'L_MAXHEIGHT'=>$lang['maxheight'], + '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'], + + 'F_ACTION'=>add_session_id($url_action), + )); - if (!defined('IN_ADMIN') or !IN_ADMIN) - { - $url_return = PHPWG_ROOT_PATH.'category.php?'.$_SERVER['QUERY_STRING']; - $template->assign_vars(array('U_RETURN' => add_session_id($url_return))); - } +if (!defined('IN_ADMIN') or !IN_ADMIN) +{ + $url_return = PHPWG_ROOT_PATH.'category.php?'.$_SERVER['QUERY_STRING']; + $template->assign_vars(array('U_RETURN' => add_session_id($url_return))); +} //------------------------------------------------------------- user management - if (defined('IN_ADMIN') and IN_ADMIN) +if (defined('IN_ADMIN') and IN_ADMIN) +{ + $status_select = ''; + $status_select .=''; - $status_select .=''; - $status_select .=''; - $status_select .=''; - $template->assign_block_vars( - 'modify.admin', - array( - 'L_ADMIN_USER'=>$lang['user_management'], - 'L_STATUS'=>$lang['user_status'], - 'L_DELETE'=>$lang['user_delete'], - 'L_DELETE_HINT'=>$lang['user_delete_hint'], - 'STATUS'=>$status_select - )); + $status_select .= 'selected="selected"'; } + $status_select .='>'.$lang['user_status_guest'] .''; + $status_select .=''; + $status_select .=''; + $template->assign_block_vars( + 'admin', + array( + 'L_ADMIN_USER'=>$lang['user_management'], + 'L_STATUS'=>$lang['user_status'], + 'L_DELETE'=>$lang['user_delete'], + 'L_DELETE_HINT'=>$lang['user_delete_hint'], + 'STATUS'=>$status_select + )); } // +-----------------------------------------------------------------------+ // | errors display | @@ -482,7 +324,7 @@ if (defined('IN_ADMIN') and IN_ADMIN) } else { - $template->assign_block_vars('modify.profile',array()); + $template->assign_block_vars('profile',array()); $template->parse('profile_body'); include(PHPWG_ROOT_PATH.'include/page_tail.php'); } diff --git a/template/default/admin/user_list.tpl b/template/default/admin/user_list.tpl new file mode 100644 index 000000000..906828afa --- /dev/null +++ b/template/default/admin/user_list.tpl @@ -0,0 +1,59 @@ +{L_GROUP_ADD_USER} + + + + {L_USERNAME} + {L_PASSWORD} + + + + +{L_USERS_LIST} + + + + + + + + + + + + username + + {L_ORDER_BY} + + + {order_by.CONTENT} + + + + + {direction.CONTENT} + + + + + + + + + + {L_USERNAME} + {L_STATUS} + {L_EMAIL} + {L_GROUPS} + {L_ACTIONS} + + + + {user.USERNAME} + {user.STATUS} + {user.EMAIL} + {user.GROUPS} + [{L_PERMISSIONS}] + + + +{NAVBAR} diff --git a/template/default/profile.tpl b/template/default/profile.tpl index 500b10066..f8b9dd2e5 100644 --- a/template/default/profile.tpl +++ b/template/default/profile.tpl @@ -8,64 +8,6 @@ - -{L_GROUP_ADD_USER} - - {L_USERNAME} - {L_PASSWORD} - - - - - -{L_SELECT_USERNAME} - - - - - - -{L_USERS_LIST} - - - - {L_ORDER_BY} - - - {select_user.order_by.CONTENT} - - - - - {select_user.direction.CONTENT} - - - - - - - - - {L_USERNAME} - {L_STATUS} - {L_EMAIL} - {L_GROUPS} - {L_ACTIONS} - - - - {select_user.user.USERNAME} - {select_user.user.STATUS} - {select_user.user.EMAIL} - {select_user.user.GROUPS} - - [{L_PERMISSIONS}] - - - -{NAVBAR} - - {L_TITLE} @@ -169,4 +111,3 @@ [{L_RETURN}] -