function lti_tool_provider_memberships_drop_member in LTI Tool Provider 7
Drop membership, optionally delete content and account.
Parameters
integer $member_id: The membership id.
boolean $delete_content: Also delete content.
2 calls to lti_tool_provider_memberships_drop_member()
- lti_tool_provider_memberships_batch_process_dropped_memberships in lti_tool_provider_memberships/
lti_tool_provider_memberships.batch.inc - Batch Operation Callback to process dropped memberships.
- lti_tool_provider_memberships_drop_members in lti_tool_provider_memberships/
lti_tool_provider_memberships.module - Drop memberships, optionally delete content and account.
File
- lti_tool_provider_memberships/
lti_tool_provider_memberships.module, line 1282 - lti_tool_provider_memberships hook implementations and support functions.
Code
function lti_tool_provider_memberships_drop_member($member_id, $delete_content) {
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'lti_tool_provider_memberships')
->propertyCondition('lti_tool_provider_memberships_id', $member_id, '=')
->propertyCondition('lti_tool_provider_memberships_context_id', $_SESSION['lti_tool_provider_context_info']['context_id'], '=')
->execute();
if (!empty($result)) {
$membership = reset(entity_load('lti_tool_provider_memberships', array_keys($result['lti_tool_provider_memberships'])));
if (module_exists('lti_tool_provider_og')) {
if ($delete_content) {
// Remove node(s) owned by member in this context.
$query_join = db_query('SELECT nid, id FROM {node} JOIN {og_membership} WHERE node.nid = og_membership.etid AND og_membership.entity_type = :entity_type AND node.uid = :uid AND og_membership.group_type = :group_type AND og_membership.gid = :gid', array(
':entity_type' => 'node',
':uid' => $account->uid,
':group_type' => $group_entity,
':gid' => $group_eid,
));
foreach ($query_join as $row) {
// Delete node
node_delete($row->nid);
}
}
$group_entity = $_SESSION['lti_tool_provider_context_info']['course_entity_type'];
$group_eid = $_SESSION['lti_tool_provider_context_info']['course_entity_eid'];
// If handling subgroups, remove membership of any subgroup.
if (variable_get('lti_tool_provider_memberships_subgroups') && ($selected_subgroup_bundle = variable_get('lti_tool_provider_memberships_subgroup_mapping_bundle')) != 'none:None') {
$all_subgroups = lti_tool_provider_memberships_get_subgroups();
foreach ($all_subgroups as $key => $subgroup) {
if ($mid = og_get_membership($subgroup_entity, $subgroup, 'user', $membership->lti_tool_provider_memberships_uid)) {
og_membership_delete($mid->id);
}
}
}
// Remove og membership of context group.
$mid = og_get_membership($group_entity, $group_eid, 'user', $membership->lti_tool_provider_memberships_uid);
og_membership_delete($mid->id);
}
// Update membership as dropped.
$membership->lti_tool_provider_memberships_status = 'Inactive';
$membership->date_dropped = REQUEST_TIME;
lti_tool_provider_memberships_save($membership);
drupal_set_message(t('%name\'s membership invalidated.', array(
'%name' => $membership->lti_tool_provider_memberships_user_id,
)));
if ($delete_content) {
// If user has no membership in another context, delete the account.
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'lti_tool_provider_memberships')
->propertyCondition('lti_tool_provider_memberships_id', $member_id, '=')
->execute();
if (empty($result)) {
// Delete user
user_delete($account->uid);
drupal_set_message(t('User %name has been deleted.', array(
'%name' => $account->name,
)));
}
}
}
else {
drupal_set_message(t('%name\'s membership was not found.', array(
'%name' => $member_id,
)));
}
}