Initial project add
This commit is contained in:
293
booking.events.inc
Normal file
293
booking.events.inc
Normal file
@@ -0,0 +1,293 @@
|
||||
<?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
|
||||
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_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_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'
|
||||
);
|
||||
|
||||
$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_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'
|
||||
);
|
||||
|
||||
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('Australia/Sydney');
|
||||
$tz = new DateTimeZone('Australia/Sydney');
|
||||
|
||||
//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');
|
||||
}
|
Reference in New Issue
Block a user