Hello,

I'm trying to display a list of the members of the group, filtered by the group user role.
If I add "OG User Roles: Role name" filter with custom role parameter (for example, previously created role 'administator'), all works properly, but if want to get member list without members with 'administrator' role, no any roles are shown.
I have just one group type, 1 custom role 'administrator' in it.

Comments

ñull’s picture

Same issue here, trying to list users with their roles in groups. No way to do this when the field remains blank.

nevosa’s picture

same issue. fiddling around with the view does not help.

jastraat’s picture

Could one of you post an export of your view?

whop’s picture

Hello,

same issue, still no clue.
It works as you wold say for custom roles, but for member and non member roles its not working at all.
If I check OG Role in views...just to display in fields, for memers its epmty, for cusstom one it displays the info.

Thanks for help

griz’s picture

Same here. Filtering doesn't work either.

griz’s picture

Issue summary: View changes

text fixes

mtndan’s picture

Same issue here - I'm not able to filter by the default "member", "non-member" or "administrator" roles. Only the custom roles.

I suppose a workaround could be to create more custom roles but that seems unnecesssary.

NWOM’s picture

I'm having the same issue. Here is my exported view as requested by jastraat:

$view = new view();
$view->name = 'dealer_list';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'og_membership';
$view->human_name = 'Dealer List';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Dealer List';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['access']['type'] = 'role';
$handler->display->display_options['access']['role'] = array(
  6 => '6',
);
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'nid' => 'nid',
  'field_customer_id' => 'field_customer_id',
  'field_company_id' => 'field_company_id',
  'field_branch_id' => 'field_branch_id',
  'title' => 'title',
  'edit_node' => 'edit_node',
  'nothing' => 'nothing',
  'nothing_1' => 'nothing_1',
);
$handler->display->display_options['style_options']['default'] = '-1';
$handler->display->display_options['style_options']['info'] = array(
  'nid' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'field_customer_id' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'field_company_id' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'field_branch_id' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'title' => array(
    'sortable' => 1,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'edit_node' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'nothing' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'nothing_1' => array(
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
/* Relationship: OG membership: Group Node from OG membership */
$handler->display->display_options['relationships']['og_membership_related_node_group']['id'] = 'og_membership_related_node_group';
$handler->display->display_options['relationships']['og_membership_related_node_group']['table'] = 'og_membership';
$handler->display->display_options['relationships']['og_membership_related_node_group']['field'] = 'og_membership_related_node_group';
/* Relationship: OG membership: OG Roles from membership */
$handler->display->display_options['relationships']['og_users_roles']['id'] = 'og_users_roles';
$handler->display->display_options['relationships']['og_users_roles']['table'] = 'og_membership';
$handler->display->display_options['relationships']['og_users_roles']['field'] = 'og_users_roles';
$handler->display->display_options['relationships']['og_users_roles']['relationship'] = 'og_membership_related_node_group';
/* Field: Content: Nid */
$handler->display->display_options['fields']['nid']['id'] = 'nid';
$handler->display->display_options['fields']['nid']['table'] = 'node';
$handler->display->display_options['fields']['nid']['field'] = 'nid';
$handler->display->display_options['fields']['nid']['relationship'] = 'og_membership_related_node_group';
$handler->display->display_options['fields']['nid']['label'] = '';
$handler->display->display_options['fields']['nid']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['nid']['element_default_classes'] = FALSE;
/* Field: Content: Customer ID */
$handler->display->display_options['fields']['field_customer_id']['id'] = 'field_customer_id';
$handler->display->display_options['fields']['field_customer_id']['table'] = 'field_data_field_customer_id';
$handler->display->display_options['fields']['field_customer_id']['field'] = 'field_customer_id';
$handler->display->display_options['fields']['field_customer_id']['relationship'] = 'og_membership_related_node_group';
/* Field: Content: Company ID */
$handler->display->display_options['fields']['field_company_id']['id'] = 'field_company_id';
$handler->display->display_options['fields']['field_company_id']['table'] = 'field_data_field_company_id';
$handler->display->display_options['fields']['field_company_id']['field'] = 'field_company_id';
$handler->display->display_options['fields']['field_company_id']['relationship'] = 'og_membership_related_node_group';
/* Field: Content: Branch ID */
$handler->display->display_options['fields']['field_branch_id']['id'] = 'field_branch_id';
$handler->display->display_options['fields']['field_branch_id']['table'] = 'field_data_field_branch_id';
$handler->display->display_options['fields']['field_branch_id']['field'] = 'field_branch_id';
$handler->display->display_options['fields']['field_branch_id']['relationship'] = 'og_membership_related_node_group';
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['relationship'] = 'og_membership_related_node_group';
$handler->display->display_options['fields']['title']['label'] = 'Dealership';
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
/* Field: Member List Link */
$handler->display->display_options['fields']['nothing']['id'] = 'nothing';
$handler->display->display_options['fields']['nothing']['table'] = 'views';
$handler->display->display_options['fields']['nothing']['field'] = 'nothing';
$handler->display->display_options['fields']['nothing']['ui_name'] = 'Member List Link';
$handler->display->display_options['fields']['nothing']['label'] = 'Member List';
$handler->display->display_options['fields']['nothing']['alter']['text'] = '<a href="/group/node/[nid]/admin/people">View Members</>';
/* Field: Invite Member Link */
$handler->display->display_options['fields']['nothing_1']['id'] = 'nothing_1';
$handler->display->display_options['fields']['nothing_1']['table'] = 'views';
$handler->display->display_options['fields']['nothing_1']['field'] = 'nothing';
$handler->display->display_options['fields']['nothing_1']['ui_name'] = 'Invite Member Link';
$handler->display->display_options['fields']['nothing_1']['label'] = 'Invite Members';
$handler->display->display_options['fields']['nothing_1']['alter']['text'] = '<a href="/group/node/[nid]/admin/people/invite">Invite Members</a>';
/* Sort criterion: Content: Customer ID (field_customer_id) */
$handler->display->display_options['sorts']['field_customer_id_value']['id'] = 'field_customer_id_value';
$handler->display->display_options['sorts']['field_customer_id_value']['table'] = 'field_data_field_customer_id';
$handler->display->display_options['sorts']['field_customer_id_value']['field'] = 'field_customer_id_value';
$handler->display->display_options['sorts']['field_customer_id_value']['relationship'] = 'og_membership_related_node_group';
/* Contextual filter: OG membership: Entity id */
$handler->display->display_options['arguments']['etid']['id'] = 'etid';
$handler->display->display_options['arguments']['etid']['table'] = 'og_membership';
$handler->display->display_options['arguments']['etid']['field'] = 'etid';
$handler->display->display_options['arguments']['etid']['default_action'] = 'default';
$handler->display->display_options['arguments']['etid']['default_argument_type'] = 'current_user';
$handler->display->display_options['arguments']['etid']['summary']['number_of_records'] = '0';
$handler->display->display_options['arguments']['etid']['summary']['format'] = 'default_summary';
$handler->display->display_options['arguments']['etid']['summary_options']['items_per_page'] = '25';
$handler->display->display_options['arguments']['etid']['specify_validation'] = TRUE;
$handler->display->display_options['arguments']['etid']['validate']['type'] = 'user';
$handler->display->display_options['arguments']['etid']['validate_options']['type'] = 'either';
$handler->display->display_options['arguments']['etid']['validate_options']['roles'] = array(
  6 => '6',
);
/* Filter criterion: Content: Type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['relationship'] = 'og_membership_related_node_group';
$handler->display->display_options['filters']['type']['value'] = array(
  'dealership' => 'dealership',
);
$handler->display->display_options['filters']['type']['group'] = 1;
/* Filter criterion: OG user roles: Role Name */
$handler->display->display_options['filters']['name']['id'] = 'name';
$handler->display->display_options['filters']['name']['table'] = 'og_role';
$handler->display->display_options['filters']['name']['field'] = 'name';
$handler->display->display_options['filters']['name']['relationship'] = 'og_users_roles';
$handler->display->display_options['filters']['name']['value'] = array(
  'administrator member' => 'administrator member',
);

/* Display: Admin Member View */
$handler = $view->new_display('page', 'Admin Member View', 'page_1');
$handler->display->display_options['path'] = 'dealerships';
$handler->display->display_options['menu']['type'] = 'normal';
$handler->display->display_options['menu']['title'] = 'Dealerships';
$handler->display->display_options['menu']['description'] = 'Dealerships';
$handler->display->display_options['menu']['weight'] = '0';
$handler->display->display_options['menu']['name'] = 'main-menu';
$handler->display->display_options['menu']['context'] = 0;
$handler->display->display_options['menu']['context_only_inline'] = 0;
Chetan Sharma’s picture

Issue summary: View changes

I am not able to see member role in the member list

simon_j_nichols’s picture

The problem is that the "member" and "non-member" roles are not actually stored against the user. So when the roles for the users are retrieved only custom roles and administrator are in the database tables. The "member" and "non-member" role definitions are however defined in the role definition table so they appear in the filter list as options, but the data is never stored against the users to match up to them.

I also thin a number of the logical options for the filter are broken, but different story.

Create a custom role and assign it to every user (using rules maybe) or work around this I think are the only options

gunwald’s picture

I have the same problem, but agree to simon_j_nichols, that a number of the logical options for the filter are broken. If this would not be the case you could logically work around the problem, that

the "member" and "non-member" roles are not actually stored against the user.

The problem is, that the logical option Is none of does not work, so you can't exclude any role. Views, if you choose Is none of: administrator members for example, generates a condition like this:

WHERE (( ( [...] (og_users_roles_og_membership__og_role2.name IS NULL ) )))

But it should be:

WHERE (( ( [...] (og_users_roles_og_membership__og_role2.name != 'administrator members' ) )))

Erica_der_Whatkin’s picture

I've just spent the last day and a half trying to figure out what's going on here (and writing my own work around module). Please forgive any formatting gaffes.

The query we ultimately want:

SELECT * 
FROM og_membership  
LEFT JOIN og_users_roles ON (og_membership.etid = og_users_roles.uid AND og_membership.gid = og_users_roles.gid AND og_membership.group_type = og_users_roles.group_type) 
LEFT JOIN og_role ON (og_users_roles.rid = og_role.rid AND og_role.name = 'role_to_be_excluded') 
WHERE og_role.name IS NULL AND og_membership.entity_type = 'user'

This will return all the (user) og_memberships that do not have the specified role.

What we get:

SELECT * 
FROM og_membership  
LEFT JOIN og_users_roles ON (og_membership.etid = og_users_roles.uid) 
LEFT JOIN og_role ON (og_users_roles.rid = og_role.rid AND og_role.name = 'role_to_be_excluded') 
WHERE og_role.name IS NULL AND og_membership.gid = og_users_roles.gid AND og_membership.group_type = og_users_roles.group_type)

which is useless - by putting those clauses in WHERE instead of LEFT JOIN ON, it's returning an empty set.

The solution, as near as I can figure(and without completely rewriting how OG handles group roles), is to create a custom relationship/join handler for the og_membership/og_users_roles relationship to add the extra ON clauses. Do that, remove the useless WHERE clauses from og_handler_filter_user_roles, and you should be mostly good to go.

nickonom’s picture

I've added dpm('test'); to the class og_handler_filter_user_roles extends views_handler_filter_many_to_one field handler in og_handler_filter_user_roles.inc and it shows nothing on a views page with user roles field and unfortunately it returned nothing. So impression is that that handler is not involved at all. Would be nice to finally resolve this issue that is was initially reported back on March 22, 2013.

nickonom’s picture

One more interesting thing is that when you add the OG membership: OG user roles in group (OG user roles in group) filed the view was supposed to pull roles from the database, but in fact it just requests other fields involved completely missing this one:

SELECT node_og_membership.title AS node_og_membership_title, node_og_membership.nid AS node_og_membership_nid, og_membership.created AS og_membership_created, og_membership.state AS og_membership_state, og_membership.id AS id, og_membership.group_type AS og_membership_group_type, og_membership.gid AS og_membership_gid
FROM 
{og_membership} og_membership
LEFT JOIN {node} node_og_membership ON og_membership.gid = node_og_membership.nid AND og_membership.group_type = 'node'
WHERE (( (og_membership.etid = '1' ) )AND(( (og_membership.state IN  ('1')) AND (node_og_membership.status = '1') AND (og_membership.entity_type LIKE 'user' ESCAPE '\\') )))
ORDER BY node_og_membership_title ASC
LIMIT 10 OFFSET 0
nickonom’s picture

Status: Active » Closed (works as designed)

For all those who will arrive at this page in search of solution to the problem:

Turns out all you need is to add another relationship to the views page: OG membership: User from OG membership

So the problem is non-existent here.

JasonSafro’s picture

nickonom++