function lti_tool_provider_memberships_get_memberships in LTI Tool Provider 7
Form a membership list array from the XML memberships.
Parameters
boolean $new: If TRUE, retrieve a new memberships list from the consumer.
Return value
array|NULL An array containing the memberships from the latest saved memberships data file.
1 call to lti_tool_provider_memberships_get_memberships()
- lti_tool_provider_memberships_batch_get_memberships in lti_tool_provider_memberships/
lti_tool_provider_memberships.batch.inc - Batch Operation Callback to get membership data.
File
- lti_tool_provider_memberships/
lti_tool_provider_memberships.module, line 656 - lti_tool_provider_memberships hook implementations and support functions.
Code
function lti_tool_provider_memberships_get_memberships($new = FALSE) {
$memberships_context = lti_tool_provider_memberships_get_memberships_context();
$fid = $memberships_context->lti_tool_provider_memberships_context_file_id;
if ($new || $fid == 0) {
// Retrieve a new copy of the memberships XML from the Consumer.
$data = lti_tool_provider_memberships_request();
if ($fid != 0) {
// Remove the old file.
$file = file_load($fid);
file_usage_delete($file, 'lti_tool_provider_memberships');
file_delete($file);
}
// Create the new file.
$file = file_save_data($data, NULL, FILE_EXISTS_REPLACE);
file_usage_add($file, 'lti_tool_provider_memberships', 'lti_tool_provider_memberships_context', $memberships_context->lti_tool_provider_memberships_context_id);
// Set the fid in the memberships context to the new file and save it.
$memberships_context->lti_tool_provider_memberships_context_file_id = $file->fid;
lti_tool_provider_memberships_context_save($memberships_context);
}
else {
$file = file_load($fid);
$data = file_get_contents($file->uri);
}
$memberships = array();
if ($data != '') {
$message_response = new SimpleXMLElement($data);
if (isset($message_response->memberships)) {
$members = $message_response->memberships->member;
$count = $members
->count();
for ($i = 0; $i < $count; $i++) {
$memberships[$i]['user_id'] = (string) $members[$i]->user_id;
$memberships[$i]['roles'] = (string) $members[$i]->roles;
$memberships[$i]['person_sourcedid'] = (string) $members[$i]->person_sourcedid;
$memberships[$i]['person_contact_email_primary'] = (string) $members[$i]->person_contact_email_primary;
$memberships[$i]['person_name_given'] = (string) $members[$i]->person_name_given;
$memberships[$i]['person_name_family'] = (string) $members[$i]->person_name_family;
$memberships[$i]['person_name_full'] = (string) $members[$i]->person_name_full;
if (variable_get('lti_tool_provider_memberships_subgroups') && isset($members[$i]->groups)) {
foreach ($members[$i]->groups->group as $group) {
$memberships[$i]['groups'][] = array(
'id' => (string) $group->id,
'title' => (string) $group->title,
);
}
}
// Allow other modules to alter.
drupal_alter('lti_tool_provider_memberships_get', $memberships[$i], $members[$i]);
}
}
}
return $memberships;
}