You are here

function lti_tool_provider_memberships_get_subgroup in LTI Tool Provider 7

Find or create a membership subgroup given the id and title.

Parameters

string $subgroup_entity:

string $subgroup_bundle:

array $membership_group:

Return value

integer

2 calls to lti_tool_provider_memberships_get_subgroup()
lti_tool_provider_memberships_add_user_to_membership_groups in lti_tool_provider_memberships/lti_tool_provider_memberships.module
Add a user to membership groups.
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 1070
lti_tool_provider_memberships hook implementations and support functions.

Code

function lti_tool_provider_memberships_get_subgroup($subgroup_entity, $subgroup_bundle, $membership_group) {

  // Find the group that matches the membership group using title and reference to context group id.
  $subgroup_mapping = variable_get('lti_tool_provider_memberships_subgroup_mapping');
  $query = new EntityFieldQuery();
  if ($subgroup_mapping['title'] == 'title') {
    $entities = $query
      ->entityCondition('entity_type', $subgroup_entity)
      ->entityCondition('bundle', $subgroup_bundle)
      ->propertyCondition('title', $membership_group['title'], '=')
      ->fieldCondition($subgroup_mapping['LTI context group reference'], 'target_id', $_SESSION['lti_tool_provider_context_info']['course_entity_eid'], '=')
      ->execute();
  }
  else {
    $entities = $query
      ->entityCondition('entity_type', $subgroup_entity)
      ->entityCondition('bundle', $subgroup_bundle)
      ->fieldCondition($subgroup_mapping['title'], 'value', $membership_group['title'], '=')
      ->fieldCondition($subgroup_mapping['LTI context group reference'], 'target_id', $_SESSION['lti_tool_provider_context_info']['course_entity_eid'], '=')
      ->execute();
  }
  if (!isset($entities[$subgroup_entity])) {

    // No subgroup found, so provision it.
    $node = new stdClass();
    $node->type = $subgroup_bundle;
    $node->language = LANGUAGE_NONE;
    node_object_prepare($node);
    $node->uid = 0;
    if ($subgroup_mapping['group_id'] == 'Title') {
      $node->title = $membership_group['id'];
    }
    else {
      $node->{$subgroup_mapping['group_id']}[LANGUAGE_NONE][0]['value'] = $membership_group['id'];
    }
    if ($subgroup_mapping['title'] != 'none') {
      if ($subgroup_mapping['title'] == 'title') {
        $node->title = $membership_group['title'];
      }
      else {
        $node->{$subgroup_mapping['group_id']}[LANGUAGE_NONE][0]['value'] = $membership_group['title'];
      }
    }
    node_save($node);

    // Add subgroup to course group.
    og_group($_SESSION['lti_tool_provider_context_info']['course_entity_type'], $_SESSION['lti_tool_provider_context_info']['course_entity_eid'], array(
      'entity_type' => 'node',
      'entity' => $node->nid,
      'field_name' => $subgroup_mapping['LTI context group reference'],
      'state' => OG_STATE_ACTIVE,
    ));
    $subgroup_eid = $node->nid;
    drupal_set_message(t('Group created.'), 'info');
  }
  else {
    $sg = reset($entities[$subgroup_entity]);
    $subgroup_eid = $sg->nid;
  }
  return $subgroup_eid;
}