add update code for leader/helper edit form

This commit is contained in:
Nathan Coad
2016-06-23 11:10:31 +10:00
parent c7b35cd3fc
commit c9d0aca9d3

View File

@@ -361,6 +361,9 @@ function booking_studygroup_leadhelp_edit_form_submit($form, &$form_state) {
$values = $form_state['input'];
$group_id = $form_state['values']['booking_gid'];
$update_messages = array();
$message = "";
$counter = 0;
watchdog('booking_debug', "<pre>Studygroup leader/helper test submission form :\n@info</pre>", array('@info' => print_r( $form_state, true)));
$role_types = array(
@@ -372,6 +375,7 @@ function booking_studygroup_leadhelp_edit_form_submit($form, &$form_state) {
foreach ($role_types as $type => $type_id) {
//iterate over the sessions for that role type
foreach ($values[$type] as $session_id => $person) {
$message = "";
//get the previous value
$previous_value = _booking_studygroup_leadhelp_edit_get_previous_value($form, $type, $type . '[' . $session_id . ']');
watchdog('booking_debug', "<pre>Studygroup assignment previous value:\n@info\nCurrent value:\n@current</pre>",
@@ -379,7 +383,7 @@ function booking_studygroup_leadhelp_edit_form_submit($form, &$form_state) {
//compare it against $person
//if $person is now empty, set the person's role to zero
if (empty($person) && $previous_value != 0) {
watchdog('booking', "Clearing leader/helper role for nid @id and group @group. Used to have role @role.",
$message = t('booking', "Clearing leader/helper role for nid @id and group @group. Used to have role @role.",
array('@id' => $previous_value, '@group' => $group_id, '@role' => $type_id));
db_update('booking_studygroup_mapping')
->fields(array(
@@ -388,18 +392,45 @@ function booking_studygroup_leadhelp_edit_form_submit($form, &$form_state) {
->condition('booking_studygroup_id', $group_id)
->condition('booking_node_id', $previous_value)
->execute();
$counter++;
}
elseif (!empty($person)) {
preg_match('/[\s\w,]+\s\[(\d+)\]/i', $person, $matches);
$person_nid = $matches[1];
//if $person is now different, run an update query
if ($person_nid != $previous_value) {
$message = t('booking', "Adding role @role to nid @id in group @group and session @session.",
array('@id' => $previous_value, '@group' => $group_id, '@role' => $type_id, '@session' => $session_id));
//add the role to the new person
db_update('booking_studygroup_mapping')
->fields(array(
'booking_studygroup_role' => $type_id,
'booking_session_id' => $session_id,
))
->condition('booking_studygroup_id', $group_id)
->condition('booking_node_id', $previous_value)
//->condition('booking_session_id', $session_id)
->execute();
//remove the role from the old person
$message = t('booking', "Removing role @role from nid @id in group @group and session @session.",
array('@id' => $previous_value, '@group' => $group_id, '@role' => $type_id, '@session' => $session_id));
db_update('booking_studygroup_mapping')
->fields(array(
'booking_studygroup_role' => 0,
))
->condition('booking_studygroup_id', $group_id)
->condition('booking_node_id', $previous_value)
->execute()
$counter++;
}
}
$update_messages[] = $message;
}
}
}
}
$final_message = "Updated $counter leader/helper roles for study group id $group_id";
drupal_set_message($final_message, 'status', FALSE);
watchdog('booking', "<pre>" . $final_message . "\n" . implode("\n", $update_messages) . "</pre>");
}
/**