diff options
-rw-r--r-- | admin/user_list.php | 38 | ||||
-rw-r--r-- | doc/ChangeLog | 6 | ||||
-rw-r--r-- | include/functions.inc.php | 30 | ||||
-rw-r--r-- | template/default/admin/user_list.tpl | 7 |
4 files changed, 81 insertions, 0 deletions
diff --git a/admin/user_list.php b/admin/user_list.php index 9bfbacd33..615ecdf58 100644 --- a/admin/user_list.php +++ b/admin/user_list.php @@ -155,6 +155,29 @@ while ($row = mysql_fetch_array($result)) )); } +$blockname = 'status_option'; + +$template->assign_block_vars( + $blockname, + array( + 'VALUE'=> -1, + 'CONTENT' => '------------', + 'SELECTED' => '' + )); + +foreach (get_enums(USERS_TABLE, 'status') as $status) +{ + $selected = (isset($_GET['status']) and $_GET['status'] == $status) ? + 'selected="selected"' : ''; + $template->assign_block_vars( + $blockname, + array( + 'VALUE' => $status, + 'CONTENT' => $lang['user_status_'.$status], + 'SELECTED' => $selected + )); +} + // +-----------------------------------------------------------------------+ // | filter | // +-----------------------------------------------------------------------+ @@ -186,6 +209,11 @@ if (isset($_GET['group']) $filter['group'] = $_GET['group']; } +if (isset($_GET['status']) + and in_array($_GET['status'], get_enums(USERS_TABLE, 'status'))) +{ + $filter['status'] = $_GET['status']; +} // +-----------------------------------------------------------------------+ // | navigation bar | @@ -205,6 +233,11 @@ if (isset($filter['group'])) $query.= ' AND group_id = '.$filter['group']; } +if (isset($filter['status'])) +{ + $query.= ' + AND status = \''.$filter['status']."'"; +} $query.= ' ;'; list($counter) = mysql_fetch_row(pwg_query($query)); @@ -258,6 +291,11 @@ if (isset($filter['group'])) $query.= ' AND group_id = '.$filter['group']; } +if (isset($filter['status'])) +{ + $query.= ' + AND status = \''.$filter['status']."'"; +} $query.= ' ORDER BY '.$order_by.' '.$direction.' LIMIT '.$start.', '.$conf['users_page'].' diff --git a/doc/ChangeLog b/doc/ChangeLog index b3e45227c..cff4f3ff0 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,9 @@ +2005-04-30 Pierrick LE GALL + + * user list updated : ability to filter list on status. Function + get_enums comes back to retrieve the list of possible status in + the database. + 2005-04-28 Pierrick LE GALL * user list updated : ability to filter list on group diff --git a/include/functions.inc.php b/include/functions.inc.php index a9c48f33b..ce64148a7 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -34,6 +34,36 @@ include_once( PHPWG_ROOT_PATH .'include/functions_html.inc.php' ); //----------------------------------------------------------- generic functions +/** + * returns an array containing the possible values of an enum field + * + * @param string tablename + * @param string fieldname + */ +function get_enums($table, $field) +{ + // retrieving the properties of the table. Each line represents a field : + // columns are 'Field', 'Type' + $result = pwg_query('desc '.$table); + while ($row = mysql_fetch_array($result)) + { + // we are only interested in the the field given in parameter for the + // function + if ($row['Field'] == $field) + { + // retrieving possible values of the enum field + // enum('blue','green','black') + $options = explode(',', substr($row['Type'], 5, -1)); + foreach ($options as $i => $option) + { + $options[$i] = str_replace("'", '',$option); + } + } + } + mysql_free_result($result); + return $options; +} + // get_boolean transforms a string to a boolean value. If the string is // "false" (case insensitive), then the boolean value false is returned. In // any other case, true is returned. diff --git a/template/default/admin/user_list.tpl b/template/default/admin/user_list.tpl index 5aa108298..215564879 100644 --- a/template/default/admin/user_list.tpl +++ b/template/default/admin/user_list.tpl @@ -22,6 +22,13 @@ username <input type="text" name="username" value="{F_USERNAME}" /> + status + <select name="status"> + <!-- BEGIN status_option --> + <option value="{status_option.VALUE}" {status_option.SELECTED} > {status_option.CONTENT}</option> + <!-- END status_option --> + </select> + group <select name="group"> <!-- BEGIN group_option --> |