Files
booking/booking.events.inc
2014-12-01 23:32:00 +11:00

295 lines
9.4 KiB
PHP

<?php
// $Id: booking.events.inc,v 0.1 2012/02/28
/**
* @file
* Admin pages for configuring a registration event
*/
function booking_event_admin()
{
//see http://www.jaypan.com/blog/themeing-drupal-7-forms-tables-checkboxes-or-radios
$form = array ();
$options = array ();
$prefix = t("<p>!link</p>",
array ('!link' => l('Add New Event', 'admin/config/booking/events/create')));
$header = array (
'booking_eventid' => t('Event ID'),
'booking_eventname' => t('Event Name'),
'booking_event_active' => t('Event currently active'),
'booking_event_start' => t('Event Start Date'),
'booking_event_end' => t('Event End Date'),
'booking_register_open' => t('Registrations open'),
'booking_register_close' => t('Registrations close'),
'booking_earlybird_close' => t('Early discounted rate closes'),
'booking_edit' => t('Edit event'),
);
$result = db_query("SELECT * from {booking_event}");
foreach($result as $data)
{
$options[$data->eid] = array
(
'booking_eventid' => $data->eid,
'booking_eventname' => $data->booking_eventname,
'booking_event_active' => $data->booking_event_active == 1 ? 'Yes' : 'No',
'booking_event_start' => date("Y-m-d H:i", $data->booking_event_start),
'booking_event_end' => date("Y-m-d H:i", $data->booking_event_end),
'booking_register_open' => date("Y-m-d H:i", $data->booking_register_open),
'booking_register_close' => date("Y-m-d H:i", $data->booking_register_close),
'booking_earlybird_close' => date("Y-m-d H:i", $data->booking_earlybird_close),
'booking_edit' => l('Edit', t('admin/config/booking/events/!eid/edit', array('!eid' => $data->eid))),
);
}
$form['table'] = array (
'#type' => 'tableselect',
'#header' => $header,
'#options' => $options,
'#multiple' => false,
);
$form['submit_active'] = array
(
'#type' => 'submit',
'#value' => t('Set Active'),
);
//watchdog('booking', 'Setting button form: @info', array ('@info' => var_export($form, TRUE)));
return array (
/*
'first_para' => array (
'#type' => 'markup',
'#markup' => $prefix,
//'#theme' => 'system_settings_form',
),
*/
'form' => $form,
);
}
function booking_event_admin_submit($form, &$form_state) {
$selected_event = $form_state['values']['table']; //$values['booking_price_active'];
//watchdog('booking', 'Formstate when setting event active: @info', array ('@info' => var_export($form_state['values'], TRUE)));
//watchdog('booking', 'Checkboxes when setting event active: @info', array ('@info' => var_export($selected_event, TRUE)));
//First set all other event IDs to not active
db_update('booking_event')
->fields(array (
'booking_event_active' => 0,
))
->condition('eid', $selected_event, '!=')
->execute();
//then set our target event id to be active
db_update('booking_event')
->fields(array (
'booking_event_active' => 1,
))
->condition('eid', $selected_event)
->execute();
//update menus
variable_set('menu_rebuild_needed', TRUE);
menu_router_build(TRUE);
menu_cache_clear_all();
menu_rebuild();
}
function booking_event_form($node, &$form_state, $create, $editid = 0)
{
$form = array ();
$prefix = "<p>Add a new event to the bookings module.</p>";
if ($create == true)
{
$data = $node;
}
else
{
//verify that $editid is a number
if (! preg_match('/^[0-9]+$/', $editid)) {
drupal_set_message("Error: Invalid event ID supplied. Unable to update event information.", 'error', FALSE);
drupal_goto('admin/config/booking/events');
return "";
}
$data = db_query("SELECT * FROM {booking_event} WHERE eid = :eventid",
array(':eventid' => $editid))
->fetchObject();
$prefix = t("<p>Update the !event event details.</p>", array('!event' => $data->booking_eventname));
//add this to the form in a hidden field so we can update the right event
$form['booking_eid'] = array (
'#type' => 'hidden',
'#value' => $editid,
);
}
$form['booking_eventname'] = array (
'#type' => 'textfield',
'#title' => t('The name of this event'),
'#size' => 60,
'#maxlength' => 150,
'#required' => TRUE,
'#default_value' => !empty($data->booking_eventname) ? $data->booking_eventname : '',
);
$form['booking_event_active'] = array(
'#type' => 'checkbox',
'#title' => t('Make this event active'),
'#default_value' => 1
);
$form['booking_event_start'] = array(
'#type' => 'date_select',
'#title' => t('Date that this event will start'),
'#default_value' => empty($data->booking_event_start) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_event_start),
'#date_format' => 'd/m/Y H:i',
'#date_label_position' => 'within',
'#date_year_range' => '0:+5'
);
$form['booking_event_end'] = array(
'#type' => 'date_select',
'#title' => t('Date that this event will conclude'),
'#default_value' => empty($data->booking_event_end) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_event_end),
'#date_format' => 'd/m/Y H:i',
'#date_label_position' => 'within',
'#date_year_range' => '0:+5'
);
$form['booking_register_open'] = array(
'#type' => 'date_select',
'#title' => t('Date that registrations will open for this event'),
'#default_value' => empty($data->booking_register_open) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_register_open),
'#date_format' => 'd/m/Y H:i',
'#date_label_position' => 'within',
'#date_year_range' => '0:+5'
);
$form['booking_earlybird_close'] = array(
'#type' => 'date_select',
'#title' => t('Date that the early discounted rate will close for this event (if not applicable, set to registration close date)'),
'#default_value' => empty($data->booking_earlybird_close) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_earlybird_close),
'#date_format' => 'd/m/Y H:i',
'#date_label_position' => 'within',
'#date_year_range' => '0:+5'
);
$form['booking_register_close'] = array(
'#type' => 'date_select',
'#title' => t('Date that registrations will close for this event'),
'#default_value' => empty($data->booking_register_close) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_register_close),
'#date_format' => 'd/m/Y H:i',
'#date_label_position' => 'within',
'#date_year_range' => '0:+5'
);
if ($create == true)
{
$form['submit'] = array
(
'#type' => 'submit',
'#value' => t('Create'),
);
} else {
$form['Update'] = array
(
'#type' => 'submit',
'#value' => t('Update'),
);
$form['Delete'] = array
(
'#type' => 'submit',
'#value' => t('Delete'),
);
}
return array (
'first_para' => array (
'#type' => 'markup',
'#markup' => $prefix,
),
'form' => $form,
);
}
function booking_event_form_submit($form, &$form_state) {
global $event;
$values = $form_state['input'];
//date_default_timezone_set(date_default_timezone(FALSE));
//$tz = new DateTimeZone(date_default_timezone(FALSE));
//watchdog('booking', 'Checkboxes when setting buttons: @info', array ('@info' => var_export($checkboxes, TRUE)));
//check if this event is active. If it is, all other events should be made inactive
if ($values['booking_event_active'] == 1)
{
db_update('booking_event')
->fields(array (
'booking_event_active' => 0,
))
->execute();
}
if ($form_state['values']['op'] == 'Create')
{
db_insert('booking_event')
->fields(array(
'booking_eventname' => $values['booking_eventname'],
'booking_event_active' => $values['booking_event_active'] == 1 ? 1 : 0,
'booking_register_open' => _datetime_array_to_ts($values['booking_register_open']),
'booking_register_close' => _datetime_array_to_ts($values['booking_register_close']),
'booking_earlybird_close' => _datetime_array_to_ts($values['booking_earlybird_close']),
'booking_event_start' => _datetime_array_to_ts($values['booking_event_start']),
'booking_event_end' => _datetime_array_to_ts($values['booking_event_end']),
))
->execute();
}
elseif ($form_state['values']['op'] == 'Delete')
{
//verify that booking_eid is a number
if (! preg_match('/^[0-9]+$/', $values['booking_eid'])) {
drupal_set_message("Error: Invalid event ID supplied. Unable to delete event entry.", 'error', FALSE);
return "";
}
$num_deleted = db_delete('booking_event')
->condition('eid', $values['booking_eid'])
->execute();
$message = t("Successfully deleted !num row(s), corresponding to event '!event'",
array('!num' => $num_deleted, '!event' => $values['booking_eventname']));
drupal_set_message($message, $type = 'status');
}
else
{
//verify that booking_eid is a number
if (! preg_match('/^[0-9]+$/', $values['booking_eid'])) {
drupal_set_message("Error: Invalid event ID supplied. Unable to update event entry.", 'error', FALSE);
return "";
}
//update the event
db_update('booking_event')
->fields(array (
'booking_eventname' => $values['booking_eventname'],
'booking_event_active' => $values['booking_event_active'] == 1 ? 1 : 0,
'booking_register_open' => _datetime_array_to_ts($values['booking_register_open']),
'booking_register_close' => _datetime_array_to_ts($values['booking_register_close']),
'booking_earlybird_close' => _datetime_array_to_ts($values['booking_earlybird_close']),
'booking_event_start' => _datetime_array_to_ts($values['booking_event_start']),
'booking_event_end' => _datetime_array_to_ts($values['booking_event_end']),
))
->condition('eid', $values['booking_eid'])
->execute();
}
$form_state['redirect'] = array('admin/config/booking/events');
}