array ( '#type' => 'markup', '#markup' => "

Add Room

", ), ); $form['booking_room_location_id'] = array( '#type' => 'select', '#title' => t('Choose room location'), '#options' => _booking_room_location_lookup(), ); $form['booking_room_number'] = array ( '#type' => 'textfield', '#title' => t('Specify room number'), '#size' => 5, '#maxlength' => 10, '#default_value' => !empty($data->booking_room_number) ? $data->booking_room_number : '', ); $form['booking_room_singlebeds'] = array ( '#type' => 'select', '#title' => t('Specify number of single beds'), '#options' => $bedcount_options, '#default_value' => !empty($data->booking_room_singlebeds) ? $data->booking_room_singlebeds : '', ); $form['booking_room_doublebeds'] = array ( '#type' => 'select', '#title' => t('Specify number of double beds'), '#options' => $bedcount_options, '#default_value' => !empty($data->booking_room_doublebeds) ? $data->booking_room_doublebeds : '', ); $form['booking_room_queenbeds'] = array ( '#type' => 'select', '#title' => t('Specify number of queen beds'), '#options' => $bedcount_options, '#default_value' => !empty($data->booking_room_queenbeds) ? $data->booking_room_queenbeds : '', ); $form['booking_room_ensuite'] = array( '#type' => 'checkbox', '#title' => t('Tick if this room has an ensuite'), '#default_value' => (!empty($data->booking_room_ensuite) && $data->booking_room_ensuite == 'Y') ? 1 : 0, ); $form['submit'] = array ( '#type' => 'submit', '#value' => t('Add Room'), ); //display the existing room definitions $form[] = array ( 'first_heading' => array ( '#type' => 'markup', '#markup' => "

Room Definitions

", ), ); $header = array ( 'booking_room_location_description' => t('Room Location'), 'booking_room_number' => t('Room Number'), 'booking_room_singlebeds' => t('Number Single Beds'), 'booking_room_doublebeds' => t('Number Double Beds'), 'booking_room_queenbeds' => t('Number Queen Beds'), 'booking_room_ensuite' => t('Ensuite?'), ); $result = db_query("SELECT * from {booking_room_definition}"); foreach($result as $data) { $options[$data->rid] = array ( 'booking_room_location_description' => _booking_room_location_lookup($data->booking_room_location_id), 'booking_room_number' => $data->booking_room_number, 'booking_room_singlebeds' => $data->booking_room_singlebeds, 'booking_room_doublebeds' => $data->booking_room_doublebeds, 'booking_room_queenbeds' => $data->booking_room_queenbeds, 'booking_room_ensuite' => $data->booking_room_ensuite == 'Y' ? 'Yes' : 'No', ); } $form['table'] = array ( '#type' => 'tableselect', '#header' => $header, '#options' => $options, '#multiple' => false, ); /* $form['Delete'] = array ( '#type' => 'submit', '#value' => t('Delete'), ); */ return array ( 'form' => $form, ); } /** * Process the form for adding room definitions */ function booking_rooms_define_form_submit($form, &$form_state) { global $event; $values = $form_state['input']; if ($form_state['values']['op'] == 'Add Room') { db_insert('booking_room_definition') ->fields(array( 'booking_room_location_id' => $values['booking_room_location_id'], 'booking_room_number' => $values['booking_room_number'], 'booking_room_singlebeds' => $values['booking_room_singlebeds'], 'booking_room_doublebeds' => $values['booking_room_doublebeds'], 'booking_room_queenbeds' => $values['booking_room_queenbeds'], 'booking_room_ensuite' => $values['booking_room_ensuite'] == 1 ? 'Y' : 'N', )) ->execute(); } } /** * Function for allocating rooms */ function booking_rooms_allocate_form() { global $event; $form = array(); $attendee_select = array(); $options = array(); $counter = 0; //make a list of all attendees $attendee_select[] = ''; $query = db_query("SELECT nid, booking_firstname, booking_lastname FROM {booking_person} " . "where booking_event_id = :eid and booking_status=1 order by booking_lastname, booking_firstname", array(':eid' => $event->eid)); foreach($query as $row) $attendee_select[$row->nid] = $row->booking_firstname . ' ' . $row->booking_lastname; //query for room definitions $room_query = db_query("SELECT * FROM {booking_room_definition}"); //attach the custom css $form['#attached']['css'] = array( drupal_get_path('module', 'booking') . '/booking.css', ); //define the header $header = array ( 'booking_room_location' => array('data' => t('Room Location'), 'field' => 'booking_room_location_id'), 'booking_room_number' => array('data' => t('Room Number')), 'booking_room_singlebed' => array('data' => t('Single Bed')), 'booking_room_doublebed_p1' => array('data' => t('Double Bed Person 1')), 'booking_room_doublebed_p2' => array('data' => t('Double Bed Person 2')), 'booking_room_queenbed_p1' => array('data' => t('Queen Bed Person 1')), 'booking_room_queenbed_p2' => array('data' => t('Queen Bed Person 2')), ); foreach ($room_query as $data) { /* $row = array ( 'data' => array( _booking_room_location_lookup($data->booking_room_location_id), $data->booking_room_number, ) ); */ //create a row that contains just the room location and number $row = array(); $row['booking_room_location'] = _booking_room_location_lookup($data->booking_room_location_id); $row['booking_room_number'] = $data->booking_room_number; $row['booking_room_singlebed'] = ""; $row['booking_room_doublebed_p1'] = ""; $row['booking_room_doublebed_p2'] = ""; $row['booking_room_queenbed_p1'] = ""; $row['booking_room_queenbed_p2'] = ""; $row['#attributes'] = array('id' => array("new-group-row")); $options[$counter++] = $row; //create an additional row for each single bed for ($i = 1; $i <= $data->booking_room_singlebeds; $i++) { $row = array(); $row['booking_room_location'] = ""; $row['booking_room_number'] = ""; $row['booking_room_singlebed'] = array('data' => array( '#type' => 'select', '#options' => $attendee_select, '#name' => 'booking_room_singlebed[' . $data->rid . '][' . $i . ']', )); $row['booking_room_doublebed_p1'] = ""; $row['booking_room_doublebed_p2'] = ""; $row['booking_room_queenbed_p1'] = ""; $row['booking_room_queenbed_p2'] = ""; $options[$counter++] = $row; } //create an additional row for each double bed for ($i = 1; $i <= $data->booking_room_doublebeds; $i++) { $row = array(); $row['booking_room_location'] = ""; $row['booking_room_number'] = ""; $row['booking_room_singlebed'] = ""; $row['booking_room_doublebed_p1'] = array('data' => array( '#type' => 'select', '#options' => $attendee_select, '#name' => 'booking_room_doublebed_p1[' . $data->rid . '][' . $i . ']', )); $row['booking_room_doublebed_p2'] = array('data' => array( '#type' => 'select', '#options' => $attendee_select, '#name' => 'booking_room_doublebed_p2[' . $data->rid . '][' . $i . ']', )); $row['booking_room_queenbed_p1'] = ""; $row['booking_room_queenbed_p2'] = ""; $options[$counter++] = $row; } //create an additional row for each queen bed for ($i = 1; $i <= $data->booking_room_queenbeds; $i++) { $row = array(); $row['booking_room_location'] = ""; $row['booking_room_number'] = ""; $row['booking_room_singlebed'] = ""; $row['booking_room_doublebed_p1'] = ""; $row['booking_room_doublebed_p2'] = ""; $row['booking_room_queenbed_p1'] = array('data' => array( '#type' => 'select', '#options' => $attendee_select, '#name' => 'booking_room_queenbed_p1[' . $data->rid . '][' . $i . ']', )); $row['booking_room_queenbed_p2'] = array('data' => array( '#type' => 'select', '#options' => $attendee_select, '#name' => 'booking_room_queenbed_p2[' . $data->rid . '][' . $i . ']', )); $options[$counter++] = $row; } } $form['table'] = array ( '#type' => 'tableselect', '#header' => $header, '#options' => $options, '#empty' => t('No attendees found.'), ); //so we can access the dropdown elements $form['booking_room_singlebeds'] = array( '#type' => 'value', ); $form['booking_room_doublebeds'] = array( '#type' => 'value', ); $form['submit'] = array ( '#type' => 'submit', '#value' => t('Submit'), ); return array ( 'form' => $form, ); }