295 lines
9.4 KiB
PHP
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');
|
|
} |