function lti_tool_provider_memberships_form in LTI Tool Provider 7
Memberships admin form.
Parameters
array $form: The form array.
array $form_state: The form state array.
Return value
array The form array.
1 string reference to 'lti_tool_provider_memberships_form'
- lti_tool_provider_memberships_menu in lti_tool_provider_memberships/
lti_tool_provider_memberships.module - Implements hook_menu().
File
- lti_tool_provider_memberships/
lti_tool_provider_memberships.module, line 163 - lti_tool_provider_memberships hook implementations and support functions.
Code
function lti_tool_provider_memberships_form($form, &$form_state) {
$form = array(
'#submit' => array(
'lti_tool_provider_memberships_form_submit',
),
'#validate' => array(
'lti_tool_provider_memberships_form_validate',
),
);
// batch process the preparation of data for the form and/or
// retrieve it from the session.
if (!isset($_SESSION['lti_tool_provider_memberships_batch_has_run'])) {
$batch_prepare_form = array(
'title' => t('Preparing membership form.'),
'operations' => array(
array(
'lti_tool_provider_memberships_batch_get_memberships',
array(
FALSE,
),
),
array(
'lti_tool_provider_memberships_batch_get_new_memberships',
array(),
),
array(
'lti_tool_provider_memberships_batch_get_dropped_memberships',
array(),
),
array(
'lti_tool_provider_memberships_batch_get_altered_memberships',
array(),
),
),
'finished' => 'lti_tool_provider_memberships_prepare_form_finished',
'init_message' => t('Preparing membership form.'),
'error_message' => t('Encountered an error while preparing the membership form.'),
'file' => drupal_get_path('module', 'lti_tool_provider_memberships') . '/lti_tool_provider_memberships.batch.inc',
);
batch_set($batch_prepare_form);
batch_process('lti-tool-provider/memberships');
}
$member_data = $_SESSION['lti_tool_provider_memberships_batch_results']['members'];
$new_members = $_SESSION['lti_tool_provider_memberships_batch_results']['new_members'];
$dropped_members = $_SESSION['lti_tool_provider_memberships_batch_results']['dropped_members'];
$altered_members = $_SESSION['lti_tool_provider_memberships_batch_results']['altered_members'];
// Display time of last data retrieval.
$memberships_context = lti_tool_provider_memberships_get_memberships_context();
$fid = $memberships_context->lti_tool_provider_memberships_context_file_id;
if ($fid != 0) {
$file = file_load($fid);
$time_retrieved = format_date($file->timestamp);
}
else {
$time_retrieved = 'Never Retrieved';
}
$form['members'] = array(
'#prefix' => '<div id="membership-table">',
'#suffix' => '</div>',
);
$form['members']['title'] = array(
'#type' => 'item',
'#markup' => t('Memberships for Context: <b>@context</b>, Retrieved on: <b>@date</b>', array(
'@context' => $_SESSION['lti_tool_provider_context_info']['context_id'],
'@date' => $time_retrieved,
)),
);
$form['members']['fetch_xml_btn'] = array(
'#type' => 'submit',
'#value' => t('Refresh'),
);
$form['members']['fetch_xml_and_apply_btn'] = array(
'#type' => 'submit',
'#value' => t('Refresh and apply all changes'),
);
if (!empty($new_members)) {
$form['members']['new_members']['description'] = array(
'#type' => 'item',
'#title' => t('New LTI Memberships'),
'#markup' => t(count($new_members) . ' new member(s)'),
);
$new_members_header = array(
'user_id' => t('User ID'),
'person_name_full' => t('Name'),
'roles' => t('Roles'),
);
if (variable_get('lti_tool_provider_memberships_subgroups')) {
$new_members_header['Groups'] = t('Groups');
}
$new_members_rows = array();
foreach ($new_members as $new_member) {
$new_members_rows[$new_member['user_id']] = $new_member;
if (variable_get('lti_tool_provider_memberships_subgroups')) {
$groups = '';
if (isset($new_member['groups'])) {
foreach ($new_member['groups'] as $group) {
$groups .= $group['title'] . ' ';
}
}
else {
$new_members_rows[$new_member['user_id']]['groups'] = array();
}
$new_members_rows[$new_member['user_id']]['Groups'] = $groups;
}
}
$form['members']['new_members']['new_members_table'] = array(
'#type' => 'tableselect',
'#header' => $new_members_header,
'#options' => $new_members_rows,
);
$form['members']['new_members']['add'] = array(
'#type' => 'submit',
'#value' => t('Add member(s)'),
);
}
if (!empty($dropped_members)) {
$form['members']['dropped_members']['description'] = array(
'#type' => 'item',
'#title' => t('Dropped LTI Memberships'),
'#markup' => t(count($dropped_members) . ' member(s) dropped'),
);
$dropped_members_header = array(
'user_id' => t('User ID'),
'person_name_full' => t('Name'),
'roles' => t('Roles'),
);
$dropped_members_rows = array();
foreach ($dropped_members as $dropped_member) {
$dropped_members_rows[$dropped_member->lti_tool_provider_memberships_id] = array(
'user_id' => $dropped_member->lti_tool_provider_memberships_user_id,
'person_name_full' => $dropped_member->lti_tool_provider_memberships_person_name_full,
'roles' => $dropped_member->lti_tool_provider_memberships_role,
);
}
$form['members']['dropped_members']['dropped_members_table'] = array(
'#type' => 'tableselect',
'#header' => $dropped_members_header,
'#options' => $dropped_members_rows,
);
$form['members']['dropped_members']['remove_dropped_members'] = array(
'#type' => 'submit',
'#value' => t('Invalidate selected member(s) in context, leaving content'),
);
$form['members']['dropped_members']['remove_dropped_members_contents'] = array(
'#type' => 'submit',
'#value' => t('Remove selected member(s) and their content'),
);
}
if (!empty($altered_members)) {
$form['members']['altered_members']['description'] = array(
'#type' => 'item',
'#title' => t('Altered LTI Memberships'),
'#markup' => t(count($altered_members) . ' member(s) altered'),
);
$altered_members_header = array(
'user_id' => t('User ID'),
'person_name_full' => t('Name'),
'old_roles' => t('Old Roles'),
'new_roles' => t('New Roles'),
'dropped_groups' => t('Dropped Groups'),
'added_groups' => t('Added Groups'),
);
$altered_members_rows = array();
foreach ($altered_members as $altered_member) {
$dropped_subgroups = '';
if (isset($altered_member['dropped_subgroups'])) {
foreach ($altered_member['dropped_subgroups'] as $subgroup) {
$dropped_subgroups .= ' ' . $subgroup['title'];
}
}
$added_subgroups = '';
if (isset($altered_member['added_subgroups'])) {
foreach ($altered_member['added_subgroups'] as $subgroup) {
$added_subgroups .= ' ' . $subgroup['title'];
}
}
$altered_members_rows[$altered_member['lti_tool_provider_memberships_id']] = array(
'user_id' => $altered_member['user_id'],
'person_name_full' => $altered_member['person_name_full'],
'old_roles' => isset($altered_member['old_roles']) ? $altered_member['old_roles'] : '',
'new_roles' => isset($altered_member['new_roles']) ? $altered_member['new_roles'] : '',
'existing_roles' => $altered_member['existing_roles'],
'dropped_groups' => $dropped_subgroups,
'dropped_subgroups' => isset($altered_member['dropped_subgroups']) ? $altered_member['dropped_subgroups'] : '',
'added_groups' => $added_subgroups,
'added_subgroups' => isset($altered_member['added_subgroups']) ? $altered_member['added_subgroups'] : '',
);
}
$form['members']['altered_members']['altered_members_table'] = array(
'#type' => 'tableselect',
'#header' => $altered_members_header,
'#options' => $altered_members_rows,
);
$form['members']['altered_members']['update_altered_members'] = array(
'#type' => 'submit',
'#value' => t('Update selected member(s) in context'),
);
}
$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'])
->execute();
$form['members']['current_members']['description'] = array(
'#type' => 'item',
'#title' => t('Current LTI Membership'),
'#markup' => !empty($result) ? t(count((array) $result['lti_tool_provider_memberships']) . ' current member(s)') : '',
);
$current_members_header = array(
array(
'data' => 'User ID',
'field' => 'lti_tool_provider_memberships_user_id',
'sort' => 'asc',
),
array(
'data' => 'Name',
'field' => 'lti_tool_provider_memberships_person_name_full',
),
array(
'data' => 'Roles',
'field' => 'lti_tool_provider_memberships_role',
),
array(
'data' => 'Date Added',
'field' => 'date_added',
),
array(
'data' => 'Date Updated',
'field' => 'date_updated',
),
array(
'data' => 'Date Dropped',
'field' => 'date_dropped',
),
array(
'data' => 'Status',
'field' => 'lti_tool_provider_memberships_status',
),
);
if (isset($form_state['storage']['paging_num']) && $form_state['storage']['paging_num'] > 0) {
$limit = $_SESSION['lti_tool_provider_membership_limit'] = $form_state['storage']['paging_num'];
}
elseif (isset($_SESSION['lti_tool_provider_membership_limit'])) {
$limit = $_SESSION['lti_tool_provider_membership_limit'];
}
else {
$limit = $_SESSION['lti_tool_provider_membership_limit'] = 10;
}
$query = db_select('lti_tool_provider_memberships', 'd')
->condition('lti_tool_provider_memberships_context_id', $_SESSION['lti_tool_provider_context_info']['context_id'])
->fields('d', array(
'lti_tool_provider_memberships_user_id',
'lti_tool_provider_memberships_person_name_full',
'lti_tool_provider_memberships_role',
'date_added',
'date_updated',
'date_dropped',
'lti_tool_provider_memberships_status',
));
$query = $query
->extend('TableSort')
->orderByHeader($current_members_header);
$query = $query
->extend('PagerDefault')
->limit($limit)
->element(13);
$result = $query
->execute();
$current_members_rows = array();
foreach ($result as $entity) {
$current_members_rows[] = array(
$entity->lti_tool_provider_memberships_user_id,
$entity->lti_tool_provider_memberships_person_name_full,
$entity->lti_tool_provider_memberships_role,
format_date($entity->date_added),
format_date($entity->date_updated),
isset($entity->date_dropped) ? format_date($entity->date_dropped) : '-',
$entity->lti_tool_provider_memberships_status,
);
}
$form['members']['current_members']['pager_table'] = array(
'#theme' => 'table',
'#header' => $current_members_header,
'#rows' => $current_members_rows,
'#empty' => t('No LTI Membership entity exists.'),
);
$form['members']['current_members']['pager_table_pager'] = array(
'#theme' => 'pager',
'#element' => 13,
);
$form['members']['current_members']['paging_num'] = array(
'#prefix' => '<div class="container-inline">',
'#type' => 'textfield',
'#title' => t('Items per page'),
'#default_value' => $limit,
'#maxlength' => 4,
'#size' => 3,
);
$form['members']['current_members']['paging_num_btn'] = array(
'#type' => 'submit',
'#value' => t('Go'),
'#suffix' => '</div>',
);
return $form;
}