diff --git a/booking.studygroup_leaders.inc b/booking.studygroup_leaders.inc index c084ae1..5f7a3ec 100644 --- a/booking.studygroup_leaders.inc +++ b/booking.studygroup_leaders.inc @@ -399,17 +399,40 @@ function booking_studygroup_leadhelp_edit_form_submit($form, &$form_state) { $person_nid = $matches[1]; //if $person is now different, run an update query if ($person_nid != $previous_value) { - $update_messages[] = t("Adding role @role to nid @id in group @group and session @session.", - array('@id' => $person_nid, '@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', $person_nid) - ->execute(); + //check if this person is already a member of this studygroup + $group_query = db_query("SELECT * FROM {booking_studygroup_mapping} " . + "WHERE booking_eventid = :eid AND booking_node_id = :nid AND booking_studygroup_id = :gid", + array(':eid' => $event->eid, ':nid' => $person_nid, ':gid' => $group_id)) + ->fetchObject(); + + if (! $group_query) { + //this person doesn't seem to already be in this study group so insert a record + $update_messages[] = t("Adding via insert: role @role to nid @id in group @group and session @session.", + array('@id' => $person_nid, '@group' => $group_id, '@role' => $type_id, '@session' => $session_id)); + db_insert('booking_studygroup_mapping') + ->fields(array( + 'booking_eventid' => $event->eid, + 'booking_node_id' => $person_nid, + 'booking_studygroup_id' => $group_id, + 'booking_session_id' => $session_id, + 'booking_studygroup_role' => $type_id, + )) + ->execute(); + } + else { + //update the role for the new person + $update_messages[] = t("Adding via update: role @role to nid @id in group @group and session @session.", + array('@id' => $person_nid, '@group' => $group_id, '@role' => $type_id, '@session' => $session_id)); + 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', $person_nid) + ->execute(); + } + $counter++; //remove the role from the old person if there was someone else there before if ($previous_value != 0) {