function _og_subgroups_get_inherited_users in Subgroups for Organic groups 7.2
Return an array of inherited users from the parent groups that allow for user inheritance.
@see: og_subgroups_views_pre_render().
Parameters
$group_type: The entity type. Defaults to 'node'.
$entity: Optional; The entity object or entity ID.
$states: Optional; Array with the state to return. Defaults to active.
Return value
An array with the entities' entity type as the key, and array - keyed by the OG membership ID and the Entity ID as the value. If nothing found, then an empty array.
1 call to _og_subgroups_get_inherited_users()
- og_subgroups_views_pre_render in ./
og_subgroups.views.inc - Implements hook_views_pre_render().
File
- ./
og_subgroups.common.inc, line 241 - Common functions used in og_subgroups.
Code
function _og_subgroups_get_inherited_users($group_type, $group_id, $states = array(
OG_STATE_ACTIVE,
)) {
$inherited_users = array();
$parents = og_subgroups_parents_load($group_type, $group_id);
foreach ($parents as $parent_type => $parent_ids) {
foreach ($parent_ids as $parent_id) {
$users = og_subgroups_get_users_group($parent_type, $parent_id, $states);
foreach ($users['user'] as $membership_id => $uid) {
$roles = og_get_user_roles($parent_type, $parent_id, $uid);
$membership_ids[] = $membership_id;
$user_ids[] = $uid;
$inherited_from[$parent_type][] = $parent_id;
$inherited_users[$uid][] = array(
'uid' => $uid,
'membership_id' => $membership_id,
'roles' => $roles,
'inherited_from' => array(
'type' => $parent_type,
'id' => $parent_id,
),
);
}
}
}
// Populate the array with *_multiple() functions (performance).
if (!empty($membership_ids)) {
$memberships = og_membership_load_multiple($membership_ids);
$accounts = user_load_multiple($user_ids);
foreach ($inherited_from as $type => $ids) {
$inherited_from_entities[$type] = entity_load($type, $ids);
}
foreach ($inherited_users as $uid => $inheritance) {
foreach ($inheritance as $delta => $data) {
$inherited_users[$uid][$delta]['user'] = $accounts[$uid];
$inherited_users[$uid][$delta]['membership'] = $memberships[$data['membership_id']];
$inherited_users[$uid][$delta]['inherited_from']['entity'] = $inherited_from_entities[$data['inherited_from']['type']][$data['inherited_from']['id']];
}
}
}
return $inherited_users;
}