function lti_tool_provider_memberships_add_member in LTI Tool Provider 7
Add a membership for a new user.
Parameters
array $member: The data for the new member.
2 calls to lti_tool_provider_memberships_add_member()
- lti_tool_provider_memberships_add_members in lti_tool_provider_memberships/
lti_tool_provider_memberships.module - Add memberships for new users.
- lti_tool_provider_memberships_batch_process_added_memberships in lti_tool_provider_memberships/
lti_tool_provider_memberships.batch.inc - Batch Operation Callback to process added memberships.
File
- lti_tool_provider_memberships/
lti_tool_provider_memberships.module, line 1185 - lti_tool_provider_memberships hook implementations and support functions.
Code
function lti_tool_provider_memberships_add_member($member) {
$lti_user = $member['user_id'] . $_SESSION['lti_tool_provider_context_info']['consumer_domain'];
$result = db_query('SELECT uid FROM {users} WHERE name = :lti_user', array(
':lti_user' => $lti_user,
));
$user_created = FALSE;
foreach ($result as $row) {
if (isset($row->uid)) {
$user_created = TRUE;
}
}
// Create user
if (!$user_created) {
$member['consumer_domain'] = $_SESSION['lti_tool_provider_context_info']['consumer_domain'];
$member['lis_person_contact_email_primary'] = $member['person_contact_email_primary'];
$member['lis_person_name_given'] = $member['person_name_given'];
$member['lis_person_name_family'] = $member['person_name_family'];
$member['lis_person_name_full'] = $member['person_name_full'];
lti_tool_provider_create_account($lti_user, $member);
}
$account = user_load_by_name($lti_user);
// Map Drupal global roles based on the user LTI role.
if (isset($member['roles'])) {
lti_tool_provider_assign_global_roles_to_user($member['roles'], $account->uid);
}
if (module_exists('lti_tool_provider_og')) {
$users_groups = og_get_entity_groups('user', $account->uid);
// Add the user to the group.
$group_entity = $_SESSION['lti_tool_provider_context_info']['course_entity_type'];
$group_eid = $_SESSION['lti_tool_provider_context_info']['course_entity_eid'];
if (!array_key_exists($group_entity, $users_groups) || !in_array($group_eid, $users_groups[$group_entity])) {
og_group($group_entity, $group_eid, array(
'entity_type' => 'user',
'entity' => $account->uid,
'field_name' => FALSE,
'state' => OG_STATE_ACTIVE,
));
}
// Grant the course group roles.
if (isset($member['roles'])) {
$found_roles = lti_tool_provider_og_search_roles($member['roles']);
foreach ($found_roles as $lti_role => $found_role) {
og_role_grant($group_entity, $group_eid, $account->uid, $found_role);
}
}
// If with_groups, provision subgroups and grant subgroup membership.
if (variable_get('lti_tool_provider_memberships_subgroups')) {
lti_tool_provider_memberships_add_user_to_membership_groups($account->uid, $member['groups'], $member['roles']);
}
}
// Update or create the membership.
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'lti_tool_provider_memberships')
->propertyCondition('lti_tool_provider_memberships_user_id', $member['user_id'], '=')
->propertyCondition('lti_tool_provider_memberships_context_id', $_SESSION['lti_tool_provider_context_info']['context_id'], '=')
->execute();
if (!empty($result)) {
// Update
$entity = reset(entity_load('lti_tool_provider_memberships', array_keys($result['lti_tool_provider_memberships'])));
$entity->lti_tool_provider_memberships_status = 'Active';
$entity->lti_tool_provider_memberships_date_dropped = NULL;
$entity->lti_tool_provider_memberships_date_added = REQUEST_TIME;
}
else {
// Create a memberships entity
$entity = entity_get_controller('lti_tool_provider_memberships')
->create();
$entity->lti_tool_provider_memberships_context_id = $_SESSION['lti_tool_provider_context_info']['context_id'];
$entity->lti_tool_provider_memberships_uid = $account->uid;
$entity->lti_tool_provider_memberships_user_id = $member['user_id'];
$entity->lti_tool_provider_memberships_role = $member['roles'];
$entity->lti_tool_provider_memberships_person_name_full = $member['person_name_full'];
}
lti_tool_provider_memberships_save($entity);
drupal_set_message(t('Membership for %name has been updated.', array(
'%name' => $member['user_id'],
)));
}