You are here

function lti_tool_provider_memberships_add_user_to_membership_groups in LTI Tool Provider 7

Add a user to membership groups.

Groups are created if necessary and roles are assigned.

Parameters

integer $uid: The users uid.

array $membership_groups: An array of memberships groups.

string $roles: The list of LTI roles.

2 calls to lti_tool_provider_memberships_add_user_to_membership_groups()
lti_tool_provider_memberships_add_member in lti_tool_provider_memberships/lti_tool_provider_memberships.module
Add a membership for a new user.
lti_tool_provider_memberships_alter_member in lti_tool_provider_memberships/lti_tool_provider_memberships.module
Alter membership for a member.

File

lti_tool_provider_memberships/lti_tool_provider_memberships.module, line 1140
lti_tool_provider_memberships hook implementations and support functions.

Code

function lti_tool_provider_memberships_add_user_to_membership_groups($uid, $membership_groups, $lti_roles) {
  list($subgroup_entity, $subgroup_bundle) = explode(':', variable_get('lti_tool_provider_memberships_subgroup_mapping_bundle'));
  if ($subgroup_entity != 'none') {

    // Get users current groups.
    $users_groups = og_get_entity_groups('user', $uid);

    // Loop through the membership groups.
    foreach ($membership_groups as $membership_group) {

      // Find or create the subgroup that matches the membership_group.
      $subgroup_eid = lti_tool_provider_memberships_get_subgroup($subgroup_entity, $subgroup_bundle, $membership_group);

      // Add the user to the group.
      if (!array_key_exists($subgroup_entity, $users_groups) || !in_array($subgroup_eid, $users_groups[$subgroup_entity])) {
        og_group($subgroup_entity, $subgroup_eid, array(
          'entity_type' => 'user',
          'entity' => $uid,
          'field_name' => FALSE,
          'state' => OG_STATE_ACTIVE,
        ));
      }

      // Grant the group roles.
      $subgroup_roles = lti_tool_provider_memberships_search_roles($lti_roles);
      foreach ($subgroup_roles as $lti_role => $subgroup_role) {
        og_role_grant($subgroup_entity, $subgroup_eid, $uid, $subgroup_role);
      }
    }
  }
}