diff --git a/booking.register.inc b/booking.register.inc index 5173e8a..4ff0b96 100644 --- a/booking.register.inc +++ b/booking.register.inc @@ -224,12 +224,12 @@ function booking_form($node, &$form_state, $inserting = FALSE) { ), ), '#default_value' => !empty($data->booking_partner_name) ? $data->booking_partner_name : '' - ); + ); } else { //add the empty element first - $partner_options[0] = ''; + $partner_options[] = ''; //get a list of possible partners $partners = db_query("SELECT nid, booking_firstname, booking_lastname, booking_partner_id FROM {booking_person} " . @@ -245,7 +245,17 @@ function booking_form($node, &$form_state, $inserting = FALSE) { '#title' => t('Choose Spouse'), '#default_value' => $data->booking_partner_id, '#options' => $partner_options, - ); + ); + + //add the boyfriend/girlfriend field in here too + $form['your-details']['booking_bf_gf_nid'] = array( + '#type' => 'textfield', + '#title' => t('Registration ID of Boyfriend/Girlfriend to be placed in the same discussion groups as you.'), + '#maxlength' => 15, + '#size' => 4, + '#required' => FALSE, + '#default_value' => !empty($data->booking_bf_gf_nid) ? $data->booking_bf_gf_nid : '', + ); } @@ -1078,7 +1088,7 @@ function _booking_insert($node) { 'booking_married' => $node->booking_married, 'booking_partner_name' => $node->booking_partner_name, 'booking_partner_id' => $node->booking_partner_id, - 'booking_bf_gf_nid' => $node->booking_bf_gf_nid, + 'booking_bf_gf_nid' => $node->booking_bf_gf_nid == '' ? 0 : $node->booking_bf_gf_nid, 'booking_room_mate1' => $node->booking_room_mate1, 'booking_room_mate2' => $node->booking_room_mate2, 'booking_shirt_size' => empty($node->booking_shirt_size) ? 'N/A' : $node->booking_shirt_size, @@ -1159,7 +1169,7 @@ function _booking_update($node) { 'booking_married' => ($node->booking_married == 1 ? 'Y' : 'N'), 'booking_partner_name' => $node->booking_partner_name, 'booking_partner_id' => $node->booking_partner_id, - 'booking_bf_gf_nid' => $node->booking_bf_gf_nid, + 'booking_bf_gf_nid' => $node->booking_bf_gf_nid == '' ? 0 : $node->booking_bf_gf_nid, 'booking_room_mate1' => $node->booking_room_mate1, 'booking_room_mate2' => $node->booking_room_mate2, 'booking_shirt_size' => $node->booking_shirt_size, diff --git a/booking.studygroups.inc b/booking.studygroups.inc index 396eda3..360b4ee 100644 --- a/booking.studygroups.inc +++ b/booking.studygroups.inc @@ -611,8 +611,10 @@ function booking_studygroups_calculate() { array('!id' => $it->key(), '!session' => $i, '!num' => $session_count[$i]['total'], '!gender' => $gender, '!age' => $age_type ) )); - booking_assign_attendee_group($it->key(), $i, $gender, $age, $working_list, $session_count); $partner_id = $current->booking_partner_id; + $bf_gf_id = $current->booking_bf_gf_nid; + + booking_assign_attendee_group($it->key(), $i, $gender, $age, $working_list, $session_count); //check if the attendee was married if ($partner_id > 0) @@ -621,9 +623,20 @@ function booking_studygroups_calculate() { drupal_set_message(t('Assigning spouse (id !spouse) of id !id to session !session (currently with !num people).', array('!id' => $it->key(), '!session' => $i, '!spouse' => $current->booking_partner_id, '!num' => $session_count[$i]['total']))); - booking_assign_attendee_group($partner_id, $i, $gender, $age, $working_list, $session_count); - + booking_assign_attendee_group($partner_id, $i, $working_list[$partner_id]->booking_gender == 'M' ? 'male' : 'female', + _booking_get_age_years($working_list[$partner_id]->booking_dob), $working_list, $session_count); } + + //Check for boyfriend/girlfriend + if ($bf_gf_id> 0) + { + //add the spouse to the same session and mark as processed in the temporary attendee list + drupal_set_message(t('Assigning bf/gf (id !spouse) of id !id to session !session (currently with !num people).', + array('!id' => $it->key(), '!session' => $i, '!spouse' => $current->booking_bf_gf_nid, '!num' => $session_count[$i]['total']))); + + booking_assign_attendee_group($partner_id, $i, $working_list[$bf_gf_id]->booking_gender == 'M' ? 'male' : 'female', + _booking_get_age_years($working_list[$bf_gf_id]->booking_dob), $working_list, $session_count); + } } //move to the next unprocessed attendee in the list diff --git a/booking.travel.inc b/booking.travel.inc index dfab097..d1189ee 100644 --- a/booking.travel.inc +++ b/booking.travel.inc @@ -78,13 +78,7 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0) $booking_dietary = ''; $booking_medical_conditions = ''; $booking_bf_gf_nid = ''; - $booking_roommate = ''; - - $person = db_query("SELECT booking_dietary, booking_medical_conditions, booking_bf_gf_nid, booking_partner_id, booking_room_mate1 " . - "FROM {booking_person} " . - "WHERE nid = :nid ", - array(':nid' => $nid <> 0 ? $nid : $data->booking_person_nid)) - ->fetchObject(); + $booking_roommate = ''; if (!empty($node)) { @@ -100,6 +94,12 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0) //watchdog('booking', 'Booking registration form loading data from form submission: @info', array('@info' => var_export($form_state, TRUE))); } + $person = db_query("SELECT booking_dietary, booking_medical_conditions, booking_bf_gf_nid, booking_partner_id, booking_room_mate1 " . + "FROM {booking_person} " . + "WHERE nid = :nid ", + array(':nid' => $nid <> 0 ? $nid : $data->booking_person_nid)) + ->fetchObject(); + if ($person) { $booking_dietary = $person->booking_dietary; @@ -254,7 +254,7 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0) '#title' => 'Special Requirements', ); //only show the dietary field if we're allowed to - if (variable_get('booking_enable_dietary', 0) == 1) + if (variable_get('booking_enable_dietary', 0) == 1 || $inserting == FALSE) { $form['requirements']['booking_dietary'] = array( '#type' => 'textfield', @@ -271,7 +271,7 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0) '#default_value' => !empty($data->booking_medical_conditions) ? $data->booking_medical_conditions : $booking_medical_conditions, ); //only show the room mate field if we're allowed to - if (variable_get('booking_enable_roommate', 0) == 1) + if (variable_get('booking_enable_roommate', 0) == 1 || $inserting == FALSE) { $form['requirements']['booking_room_mate1'] = array( '#type' => 'textfield', @@ -420,7 +420,7 @@ function travel_load($nodes) { $query->distinct(); $query->join('booking_person','p','p.nid = t.booking_person_nid'); $query->fields('t'); - $query->fields('p', array('booking_dietary','booking_medical_conditions','booking_bf_gf_nid')); + $query->fields('p', array('booking_dietary','booking_medical_conditions','booking_bf_gf_nid', 'booking_room_mate1')); $query->condition('tid', array_keys($nodes), 'IN'); $result = $query->execute(); @@ -471,6 +471,17 @@ function travel_insert($node) )) ->condition('nid', $node->booking_person_nid) ->execute(); + + //set the boyfriend/girlfriend to point to this person + if ($node->booking_bf_gf_nid <> 0) + { + db_update('booking_person') + ->fields(array( + 'booking_bf_gf_nid' => $node->booking_person_nid, + )) + ->condition('nid', $node->booking_bf_gf_nid) + ->execute(); + } } function travel_update($node) @@ -502,11 +513,22 @@ function travel_update($node) ->fields(array( 'booking_dietary' => $node->booking_dietary, 'booking_medical_conditions' => $node->booking_medical_conditions, - 'booking_bf_gf_nid' => $node->booking_bf_gf_nid, + 'booking_bf_gf_nid' => $node->booking_bf_gf_nid == '' ? 0 : $node->booking_bf_gf_nid, 'booking_room_mate1' => $node->booking_room_mate1, )) ->condition('nid', $node->booking_person_nid) ->execute(); + + //set the boyfriend/girlfriend to point to this person + if ($node->booking_bf_gf_nid <> 0) + { + db_update('booking_person') + ->fields(array( + 'booking_bf_gf_nid' => $node->booking_person_nid, + )) + ->condition('nid', $node->booking_bf_gf_nid) + ->execute(); + } } function travel_delete($node)