diff --git a/booking.variety_form.inc b/booking.variety_form.inc index b20460a..3ec4256 100644 --- a/booking.variety_form.inc +++ b/booking.variety_form.inc @@ -12,7 +12,6 @@ function booking_variety_regn_form($node, &$form_state) global $event; $form = array (); $data = $node; - $timeslot_count = 0; $query = db_query("SELECT * FROM {booking_variety_times} WHERE booking_eventid = :eid AND booking_variety_status = 1", array(':eid' => $event->eid)); @@ -58,29 +57,47 @@ function booking_variety_regn_form($node, &$form_state) } //create the form element for this timeslot - $form['select-variety-' . $timeslot_count] = array( + $form['select-variety-' . $timeslot->tid] = array( '#type' => 'select', '#title' => t('Variety Session: ' . $timeslot->booking_variety_time_descrip), '#required' => TRUE, '#default_value' => '', - '#options' => $options, + '#options' => _booking_get_variety_timeslot_options($timeslot->tid), ); - - $timeslot_count++; } - $form['submit'] = array - ( + $form['submit'] = array( '#type' => 'submit', '#value' => t('Submit'), ); return array ( 'form' => $form, - ); - + ); } +/** + * Function to calculate available variety sessions for ajax enabled form booking_variety_regn_form() + * @param $timeslot_id - the timeslot ID to query + * @return array containing the variety sessions for specified timeslot that still have capacity + */ +function _booking_get_variety_timeslot_options($timeslot_id) { + $session_options = array(); + $session_options[] = "--"; + + $session_query = db_query("SELECT * FROM {booking_variety_options} WHERE booking_variety_timeslot_id = :tid AND booking_variety_status = 1", + array(':tid' => $timeslot_id)); + + // Only add sessions that aren't full to the return result + foreach($session_query as $session) { + if ($session->booking_variety_regncount < $session->booking_variety_maxsize) { + $session_options[$session->vid] = $session->booking_variety_descrip; + } + } + watchdog('booking_debug', "
Variety Session Options:\n@info
", array('@info' => print_r( $session_options, true))); + + return $session_options; +} /** * Callback function to verify if barcode was valid