Implementation of travel form
This commit is contained in:
@@ -77,31 +77,38 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0)
|
||||
|
||||
$booking_dietary = '';
|
||||
$booking_medical_conditions = '';
|
||||
$booking_bf_gf = '';
|
||||
$booking_bf_gf_nid = '';
|
||||
|
||||
if (!empty($node))
|
||||
{
|
||||
$data = $node;
|
||||
watchdog('booking', 'Travel form loading data from saved node: @info', array('@info' => var_export($node, TRUE)));
|
||||
//watchdog('booking', 'Travel form loading data from saved node: @info', array('@info' => var_export($node, TRUE)));
|
||||
//check for existing booking_person data to use in the form
|
||||
$person = db_query("SELECT booking_dietary, booking_medical_conditions, booking_bf_gf_nid, booking_partner_id " .
|
||||
"FROM {booking_person} " .
|
||||
"WHERE nid = :nid ",
|
||||
array(':nid' => $data->booking_person_nid))
|
||||
->fetchObject();
|
||||
}
|
||||
else
|
||||
{
|
||||
$data = $form_state['input'];
|
||||
//check for existing booking_person data to use in the form
|
||||
$person = db_query("SELECT booking_dietary, booking_medical_conditions, booking_bf_gf, booking_partner_id " .
|
||||
$person = db_query("SELECT booking_dietary, booking_medical_conditions, booking_bf_gf_nid, booking_partner_id " .
|
||||
"FROM {booking_person} " .
|
||||
"WHERE nid = :nid ",
|
||||
array(':nid' => $nid))
|
||||
->fetchObject();
|
||||
if ($person)
|
||||
{
|
||||
$booking_dietary = $person->booking_dietary;
|
||||
$booking_medical_conditions = $person->booking_medical_conditions;
|
||||
$booking_bf_gf = $person->booking_bf_gf;
|
||||
}
|
||||
->fetchObject();
|
||||
//watchdog('booking', 'Booking registration form loading data from form submission: @info', array('@info' => var_export($form_state, TRUE)));
|
||||
}
|
||||
|
||||
if ($person)
|
||||
{
|
||||
$booking_dietary = $person->booking_dietary;
|
||||
$booking_medical_conditions = $person->booking_medical_conditions;
|
||||
$booking_bf_gf_nid = $person->booking_bf_gf_nid;
|
||||
}
|
||||
|
||||
$transport_type_options = array(
|
||||
'Driving' => 'Driving',
|
||||
//'Train' => 'Train',
|
||||
@@ -123,8 +130,8 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0)
|
||||
'#type' => 'radios',
|
||||
'#title' => t('Transport Type'),
|
||||
'#options' => $transport_type_options,
|
||||
'#default_value' => !empty($data->booking_transport_type) ? $data->booking_transport_type : '0',
|
||||
//'#required' => TRUE,
|
||||
'#default_value' => !empty($data->booking_transport_type) ? $data->booking_transport_type : NULL,
|
||||
'#required' => TRUE,
|
||||
);
|
||||
|
||||
/*
|
||||
@@ -263,12 +270,13 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0)
|
||||
//TODO: Get their registration ID instead of their name
|
||||
if ((variable_get('booking_enable_combined_pricing', 0) == 1) && $person->booking_partner_id == 0)
|
||||
{
|
||||
$form['requirements']['booking_bf_gf'] = array(
|
||||
$form['requirements']['booking_bf_gf_nid'] = array(
|
||||
'#type' => 'textfield',
|
||||
'#title' => t('Boyfriend/Girlfriend that you want to be in the same discussion groups as you.'),
|
||||
'#maxlength' => 180,
|
||||
'#required' => FALSE,
|
||||
'#default_value' => !empty($data->booking_bf_gf) ? $data->booking_bf_gf : $booking_bf_gf,
|
||||
'#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 : $booking_bf_gf_nid,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -282,12 +290,41 @@ function travel_form($node, &$form_state, $inserting = FALSE, $nid = 0)
|
||||
}
|
||||
|
||||
function travel_form_validate($form, &$form_state) {
|
||||
watchdog('booking', 'Travel form: @info', array('@info' => var_export($form_state, TRUE)));
|
||||
//watchdog('booking', "<pre>Travel form:\n@info</pre>", array('@info' => print_r( $form_state, true)));
|
||||
|
||||
//check that a transport choice has been made
|
||||
if (isset($form_state['booking_transport_type']) && $form_state['booking_transport_type'] == 0)
|
||||
/*
|
||||
if ((! isset($form_state['booking_transport_type'])) || $form_state['booking_transport_type'] == NULL)
|
||||
{
|
||||
form_set_error('booking_transport_type', t('You must select a transport type.'));
|
||||
}
|
||||
*/
|
||||
//verify boyfriend/girlfriend id is in the correct format
|
||||
if (isset($form_state['values']['booking_bf_gf_nid']) && $form_state['values']['booking_bf_gf_nid'] != '')
|
||||
{
|
||||
|
||||
if (! is_numeric($form_state['values']['booking_bf_gf_nid'] ))
|
||||
{
|
||||
form_set_error('booking_bf_gf_nid',
|
||||
t('You have entered an invalid registration id for your boyfriend/girlfriend. Please ensure you are using only the registration reference number your boyfriend/girlfriend received via email. If you believe this to be incorrect, please !contact using the details provided.',
|
||||
array('!contact' => l('contact us', 'contact')))
|
||||
);
|
||||
}
|
||||
|
||||
//check that the partner exists
|
||||
$partner = db_query("SELECT person.nid " .
|
||||
"FROM {booking_person} person " .
|
||||
"WHERE nid = :nid",
|
||||
array(':nid' => $form_state['values']['booking_bf_gf_nid']))
|
||||
->fetchObject();
|
||||
if (! $partner)
|
||||
{
|
||||
form_set_error('booking_bf_gf_nid',
|
||||
t('We cannot find a matching registration id for your boyfriend/girlfriend. Please ensure you are using only the number that relates to their registration. If you believe this to be incorrect, please !contact using the details provided.',
|
||||
array('!contact' => l('contact us', 'contact')))
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -340,14 +377,16 @@ function travel_form_submit($form, &$form_state) {
|
||||
//booking_person related fields
|
||||
$node->booking_dietary = $values['booking_dietary'];
|
||||
$node->booking_medical_conditions = $values['booking_medical_conditions'];
|
||||
$node->booking_bf_gf = empty($values['booking_bf_gf']) ? 'N/A' : $values['booking_bf_gf'];
|
||||
$node->booking_bf_gf_nid = empty($values['booking_bf_gf_nid']) ? 0 : $values['booking_bf_gf_nid'];
|
||||
|
||||
watchdog('booking', "<pre>Travel data to save:\n@info</pre>", array('@info' => print_r( $node, true)));
|
||||
|
||||
//store the node
|
||||
$foo = node_submit(&$node);
|
||||
$blah = node_save($foo);
|
||||
|
||||
//send a confirmation email
|
||||
_booking_travelform_confirmation_email($node);
|
||||
_booking_travelform_confirmation_email($values['personid']);
|
||||
|
||||
drupal_set_message("Thanks for submitting your travel details. You should receive a confirmation email shortly.", $type = 'status');
|
||||
$form_state['redirect'] = array('content/travel');
|
||||
@@ -364,7 +403,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'));
|
||||
$query->fields('p', array('booking_dietary','booking_medical_conditions','booking_bf_gf_nid'));
|
||||
$query->condition('tid', array_keys($nodes), 'IN');
|
||||
$result = $query->execute();
|
||||
|
||||
@@ -404,15 +443,19 @@ function travel_insert($node)
|
||||
))
|
||||
->execute();
|
||||
|
||||
watchdog('booking', 'booking_travel table completed.');
|
||||
|
||||
//update the booking_person fields
|
||||
db_update('booking_person')
|
||||
->fields(array(
|
||||
'booking_dietary' => $node->booking_dietary,
|
||||
'booking_medical_conditions' => $node->booking_medical_conditions,
|
||||
'booking_bf_gf' => $node->booking_bf_gf,
|
||||
'booking_bf_gf_nid' => $node->booking_bf_gf_nid,
|
||||
))
|
||||
->condition('nid', $node->booking_person_nid)
|
||||
->execute();
|
||||
|
||||
watchdog('booking', 'booking_person table completed.');
|
||||
}
|
||||
|
||||
function travel_update($node)
|
||||
@@ -444,7 +487,7 @@ function travel_update($node)
|
||||
->fields(array(
|
||||
'booking_dietary' => $node->booking_dietary,
|
||||
'booking_medical_conditions' => $node->booking_medical_conditions,
|
||||
'booking_bf_gf' => $node->booking_bf_gf,
|
||||
'booking_bf_gf_nid' => $node->booking_bf_gf_nid,
|
||||
))
|
||||
->condition('nid', $node->booking_person_nid)
|
||||
->execute();
|
||||
@@ -470,8 +513,19 @@ function travel_view($node, $view_mode) {
|
||||
"left outer join {booking_travel} t on p.nid = t.booking_person_nid " .
|
||||
"where p.nid = :nid",
|
||||
array(':nid' => $node->booking_person_nid))
|
||||
->fetchObject();
|
||||
|
||||
->fetchObject();
|
||||
//and their boyfriend/girlfriend if it is defined
|
||||
if ($person->booking_bf_gf_nid != 0)
|
||||
{
|
||||
$query = db_query("Select booking_firstname, booking_lastname from {booking_person} where nid = :nid",
|
||||
array(':nid' => $node->booking_bf_gf_nid))
|
||||
->fetchObject();
|
||||
$bf_gf = $query->booking_firstname . " " . $query->booking_lastname;
|
||||
}
|
||||
else
|
||||
$bf_gf = "N/A";
|
||||
|
||||
|
||||
$header = array('Attribute', 'Value');
|
||||
$rows = array();
|
||||
|
||||
@@ -488,7 +542,7 @@ function travel_view($node, $view_mode) {
|
||||
//fields from booking_person
|
||||
$rows[] = array(t('Special Dietary Requirements:'), $node->booking_dietary);
|
||||
$rows[] = array(t('Special Medical Conditions:'), $node->booking_medical_conditions);
|
||||
$rows[] = array(t('Boyfriend/Girlfriend:'), $node->booking_bf_gf);
|
||||
$rows[] = array(t('Boyfriend/Girlfriend:'), $bf_gf);
|
||||
|
||||
$node->content['details'] = array(
|
||||
'#markup' => theme('table', array('header' => $header, 'rows' => $rows)),
|
||||
|
Reference in New Issue
Block a user