--- site_user_list_roles.module 2007-05-23 06:49:00.000000000 +1000 +++ site_user_list_roles.module.mine 2007-11-22 16:25:43.000000000 +1100 @@ -46,6 +46,15 @@ ); $users_roles = user_roles(true); unset($users_roles[DRUPAL_AUTHENTICATED_RID]); // all users are authenticated! + + + $form['static']['site_user_list_roles_static_use_limit_arg'] = array( + '#type' => 'checkbox', + '#title' => t('Allow the placement of a role name as a path argument to limit results'), + '#default_value' => variable_get('site_user_list_roles_static_use_limit_arg', 0), + '#description' => t('For example user might specify /site_user_list/editor, if "editor" which would restrict all entries to just "editor" role, you must ensure each of the possibilities is selected.') + ); + $form['static']['site_user_list_roles_static_roles'] = array( '#type' => 'checkboxes', '#options' => $users_roles, @@ -79,6 +88,7 @@ variable_set('site_user_list_roles_display', _site_user_list_roles_user_transform_roles(array_filter($data['site_user_list_roles_display']))); + variable_set('site_user_list_roles_static_use_limit_arg',$data['site_user_list_roles_static_use_limit_arg']); drupal_set_message('The settings have been saved.'); site_user_list_roles_rebuild_table(); @@ -128,6 +138,20 @@ } function site_user_list_roles_site_user_list_restrict($search = array()) { + + // was there an extra variable set? + if(is_string(arg(1)) ) { + // did they specify they wanted to filter the output dynamically with an argument of role name? + $role_name = preg_replace('/[^\w\s\d]/','',check_plain(arg(1))); + if( variable_get('site_user_list_roles_static_use_limit_arg', 0) && strlen($role_name)>0 ) { + $restrict['site_user_list_roles']['joins'][]="LEFT JOIN {users_roles} on `@uid` = users_roles.uid"; + $restrict['site_user_list_roles']['joins'][]="LEFT JOIN {role} on users_roles.rid = role.rid"; + $restrict['site_user_list_roles']['joins'][]='WHERE role.name LIKE "'.$role_name.'"'; + return $restrict; + } + } + + } function site_user_list_roles_site_user_list_fields() {