From c9d0aca9d390057f2735b54ae08afcd3bbe72593 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Thu, 23 Jun 2016 11:10:31 +1000 Subject: [PATCH] add update code for leader/helper edit form --- booking.studygroup_leaders.inc | 37 +++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/booking.studygroup_leaders.inc b/booking.studygroup_leaders.inc index 7cd0f02..1f7d55d 100644 --- a/booking.studygroup_leaders.inc +++ b/booking.studygroup_leaders.inc @@ -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', "
Studygroup leader/helper test submission form :\n@info
", 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', "
Studygroup assignment previous value:\n@info\nCurrent value:\n@current
", @@ -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', "
" . $final_message . "\n" . implode("\n", $update_messages) . "
"); } /**