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;
}