diff --git a/booking.studygroups.inc b/booking.studygroups.inc index 615bf91..ebda724 100644 --- a/booking.studygroups.inc +++ b/booking.studygroups.inc @@ -519,26 +519,23 @@ function booking_studygroups_edit_form_submit($form, &$form_state) { array(':eid' => $event->eid, ':nid' => $nid)); $person_groups = $person_groups_query->fetchAllAssoc('booking_studygroup_id'); - //select all the study groups for this event id - $studygroups_query = db_query("SELECT * FROM {booking_studygroup_list} WHERE booking_eventid = :eid", array(':eid' => $event->eid)); - $studygroups = $studygroups_query->fetchAll(); + //select any readings groups so we know if we need to update colours + $reading_groups_query = db_query("SELECT * FROM {booking_studygroup_list} WHERE booking_eventid = :eid AND booking_is_readinggroup = 'Y'", array(':eid' => $event->eid)); + $reading_groups = $reading_groups_query->fetchAllAssoc('sid'); //loop through array of study group IDs and compare against existing database entries - foreach ($studygroup_ids as $key => $value) - { + foreach ($studygroup_ids as $key => $value) { //watchdog('booking', "
Study Group key:\n@key\nValue\n@value", array('@key' => print_r( $key, true), '@value' => print_r( $value, true))); //check if there is a valid value to process - if ($value > 0 || $value == 'Remove') - { + if ($value > 0 || $value == 'Remove') { //if there was no previous mapping but Remove has been selected anyway, just skip to the next value to look at if (empty($person_groups[$key]) && $value == 'Remove') { continue; } //check to see if we need to remove a study group mapping - if (! empty($person_groups[$key]) && $value == 'Remove') - { + if (! empty($person_groups[$key]) && $value == 'Remove') { watchdog('booking', "Removing an existing Study Group session id: @id from group @group.\n
@info", array('@id' => $value, '@group' => $key, '@info' => print_r( $person_groups[$key], true))); @@ -547,36 +544,32 @@ function booking_studygroups_edit_form_submit($form, &$form_state) { ->execute(); } //check for an existing study group mapping to change - elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id != $value) - { + elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id != $value) { watchdog('booking', "Updating Study Group session from: @key to @value for id @id", array('@key' => $person_groups[$key]->booking_session_id, '@value' => $value, '@id' => $nid)); db_update('booking_studygroup_mapping') ->fields(array( 'booking_session_id' => $value, - //'booking_is_leader' => $person_groups[$key]->booking_is_leader, - //'booking_is_helper' => $person_groups[$key]->booking_is_helper, - //'booking_is_reserveleader' => $person_groups[$key]->booking_is_reserveleader, 'booking_studygroup_role' => $person_groups[$key]->booking_studygroup_role, )) ->condition('sid', $person_groups[$key]->sid) - ->execute(); - - if ($key == 7) - { - booking_studygroups_process_colours(); + ->execute(); + + //check if there is a readings group colour to update + foreach ($reading_groups as $group) { + if ($group->sid == $key) { + booking_studygroups_process_colours(); + } } } //found this entry already, so no change needed - elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id == $value) - { + elseif ((!empty($person_groups[$key])) && $person_groups[$key]->booking_session_id == $value) { watchdog('booking', "Study Group @group session already set to @session.", array('@group' => $key, '@session' => $value)); } //no previously defined value, so add a new entry to the mapping table - else - { + else { watchdog('booking', "Adding Study Group session id: @id for group @group.", array('@id' => $value, '@group' => $key)); db_insert('booking_studygroup_mapping') @@ -585,20 +578,18 @@ function booking_studygroups_edit_form_submit($form, &$form_state) { 'booking_node_id' => $nid, 'booking_studygroup_id' => $key, 'booking_session_id' => $value, - //'booking_is_leader' => 'N', - //'booking_is_helper' => 'N', - //'booking_is_reserveleader' => 'N', 'booking_studygroup_role' => 0, )) ->execute(); - //@todo fix this - should be dynamic not hard coded - if ($key == 7) - { - booking_studygroups_process_colours(); + //check if there is a readings group colour to update + foreach ($reading_groups as $group) { + if ($group->sid == $key) { + booking_studygroups_process_colours(); + } } - } - } - } + } //end new value check + } //end valid data check + } //end checkbox loop }