function lti_tool_provider_memberships_get_altered_memberships in LTI Tool Provider 7
Extract the memberships with altered groups and roles from the memberships list.
Parameters
array $member_data: The current saved memberships data.
Return value
array The altered memberships.
1 call to lti_tool_provider_memberships_get_altered_memberships()
- lti_tool_provider_memberships_batch_get_altered_memberships in lti_tool_provider_memberships/
lti_tool_provider_memberships.batch.inc - Batch Operation Callback to get altered memberships.
File
- lti_tool_provider_memberships/
lti_tool_provider_memberships.module, line 841 - lti_tool_provider_memberships hook implementations and support functions.
Code
function lti_tool_provider_memberships_get_altered_memberships($member_data) {
$altered_members = array();
if (!empty($member_data)) {
$count = count($member_data);
for ($i = 0; $i < $count; $i++) {
$query = new EntityFieldQuery();
$result = $query
->entityCondition('entity_type', 'lti_tool_provider_memberships')
->propertyCondition('lti_tool_provider_memberships_context_id', $_SESSION['lti_tool_provider_context_info']['context_id'], '=')
->propertyCondition('lti_tool_provider_memberships_user_id', $member_data[$i]['user_id'])
->propertyCondition('lti_tool_provider_memberships_status', 'Active')
->execute();
if (isset($result['lti_tool_provider_memberships'])) {
$member = reset(entity_load('lti_tool_provider_memberships', array_keys($result['lti_tool_provider_memberships'])));
if ($member->lti_tool_provider_memberships_role != $member_data[$i]['roles']) {
$altered_members[$i]['lti_tool_provider_memberships_id'] = $member->lti_tool_provider_memberships_id;
$altered_members[$i]['user_id'] = $member_data[$i]['user_id'];
$altered_members[$i]['person_name_full'] = $member_data[$i]['person_name_full'];
$altered_members[$i]['old_roles'] = $member->lti_tool_provider_memberships_role;
$altered_members[$i]['new_roles'] = $member_data[$i]['roles'];
$altered_members[$i]['existing_roles'] = $member_data[$i]['roles'];
$altered_members[$i]['dropped_subgroups'] = array();
$altered_members[$i]['added_subgroups'] = array();
}
if (variable_get('lti_tool_provider_memberships_subgroups')) {
$subgroups = lti_tool_provider_memberships_get_subgroups();
// Find the subgroup nids that match the member data groups.
// Get users current groups.
$entity_groups = og_get_entity_groups('user', $member->lti_tool_provider_memberships_uid);
$users_groups = empty($entity_groups) ? array() : reset($entity_groups);
$old_subgroups = array_intersect($subgroups, $users_groups);
$current_groups = array();
foreach ($old_subgroups as $gid) {
$group = node_load($gid);
$current_groups[] = array(
'id' => empty($group->field_lti_memberships_group_id) ? '' : $group->field_lti_memberships_group_id['und'][0]['value'],
'title' => $group->title,
);
}
$new_subgroups = isset($member_data[$i]['groups']) ? $member_data[$i]['groups'] : array();
$dropped_subgroups = array_udiff($current_groups, $new_subgroups, '_lti_tool_provider_memberships_compare_groups');
$added_subgroups = array_udiff($new_subgroups, $current_groups, '_lti_tool_provider_memberships_compare_groups');
if (count($dropped_subgroups) != 0 || count($added_subgroups) != 0) {
$altered_members[$i]['lti_tool_provider_memberships_id'] = $member->lti_tool_provider_memberships_id;
$altered_members[$i]['user_id'] = $member_data[$i]['user_id'];
$altered_members[$i]['person_name_full'] = $member_data[$i]['person_name_full'];
$altered_members[$i]['dropped_subgroups'] = $dropped_subgroups;
$altered_members[$i]['added_subgroups'] = $added_subgroups;
$altered_members[$i]['existing_roles'] = $member_data[$i]['roles'];
}
}
}
}
}
if (!empty($altered_members)) {
foreach ($altered_members as $key => $row) {
$user_id[$key] = $row['user_id'];
}
array_multisort($user_id, SORT_ASC, $altered_members);
}
return $altered_members;
}