227 lines
6.7 KiB
PHP
227 lines
6.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @file
|
|
* Admin pages for configuring a variety session
|
|
*/
|
|
|
|
function booking_variety_admin()
|
|
{
|
|
//see http://www.jaypan.com/blog/themeing-drupal-7-forms-tables-checkboxes-or-radios
|
|
// tableselect with text fields http://drupal.stackexchange.com/questions/75950/tableselect-with-textfields/82763#82763
|
|
// inline edit buttons http://drupal.stackexchange.com/questions/31942/how-do-i-add-an-edit-button-on-each-row-of-a-tableselect-form-element
|
|
// tabledrag example http://dropbucket.org/node/204
|
|
$form = array ();
|
|
$options = array ();
|
|
$prefix = t("<p>!link</p>",
|
|
array ('!link' => l('Add New Event', 'admin/config/booking/variety/create')));
|
|
|
|
$header = array (
|
|
'tid' => t('Event ID'),
|
|
'booking_variety_time_descrip' => t('Description'),
|
|
'booking_variety_status' => t('Status'),
|
|
'booking_variety_start' => t('Session Start'),
|
|
'booking_variety_end' => t('Session End'),
|
|
'booking_edit' => t('Edit event'),
|
|
);
|
|
|
|
$result = db_query("SELECT * from {booking_variety_times}");
|
|
|
|
foreach($result as $data)
|
|
{
|
|
$options[$data->tid] = array
|
|
(
|
|
'tid' => $data->tid,
|
|
'booking_variety_time_descrip' => $data->booking_variety_time_descrip,
|
|
'booking_variety_status' => $data->booking_variety_status,
|
|
'booking_variety_start' => date("Y-m-d H:i", $data->booking_variety_start),
|
|
'booking_variety_end' => date("Y-m-d H:i", $data->booking_variety_end),
|
|
'booking_edit' => l('Edit', t('admin/config/booking/variety/!tid/edit', array('!tid' => $data->tid))),
|
|
);
|
|
}
|
|
|
|
$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_variety_admin_submit($form, &$form_state)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
function booking_variety_form($node, &$form_state, $create, $editid = 0)
|
|
{
|
|
global $event;
|
|
$form = array ();
|
|
$prefix = "<p>Add a new variety session timeslot for 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 variety ID supplied. Unable to update variety session information.", 'error', FALSE);
|
|
drupal_goto('admin/config/booking/variety');
|
|
return "";
|
|
}
|
|
|
|
$data = db_select ('booking_variety_times', 'v')
|
|
->condition('v.tid', $editid, '=')
|
|
->fields('v')
|
|
->execute()
|
|
->fetchObject();
|
|
|
|
$prefix = t("<p>Update the !event variety session details.</p>", array('!event' => $event->booking_eventname));
|
|
//add this to the form in a hidden field so we can update the right event
|
|
$form['tid'] = array (
|
|
'#type' => 'hidden',
|
|
'#value' => $editid,
|
|
);
|
|
}
|
|
|
|
$form['booking_variety_time_descrip'] = array (
|
|
'#type' => 'textfield',
|
|
'#title' => t('The name of this variety session'),
|
|
'#size' => 60,
|
|
'#maxlength' => 150,
|
|
'#required' => TRUE,
|
|
'#default_value' => !empty($data->booking_variety_time_descrip) ? $data->booking_variety_time_descrip : '',
|
|
);
|
|
|
|
$form['booking_variety_status'] = array(
|
|
'#type' => 'checkbox',
|
|
'#title' => t('Make this variety session timeslot active'),
|
|
'#default_value' => !empty($data->booking_variety_status) ? $data->booking_variety_status : '',
|
|
);
|
|
|
|
$form['booking_variety_start'] = array(
|
|
'#type' => 'date_select',
|
|
'#title' => t('When will this variety session start'),
|
|
'#default_value' => empty($data->booking_variety_start) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_variety_start),
|
|
'#date_format' => 'd/m/Y H:i',
|
|
'#date_label_position' => 'within',
|
|
'#date_year_range' => '0:+5'
|
|
);
|
|
|
|
$form['booking_variety_end'] = array(
|
|
'#type' => 'date_select',
|
|
'#title' => t('When will this variety session end?'),
|
|
'#default_value' => empty($data->booking_variety_end) ? date("Y-m-d H:i:s") : date("Y-m-d H:i:s", $data->booking_variety_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_variety_form_submit($form, &$form_state) {
|
|
global $event;
|
|
$values = $form_state['input'];
|
|
|
|
if ($form_state['values']['op'] == 'Create')
|
|
{
|
|
db_insert('booking_variety_times')
|
|
->fields(array(
|
|
'booking_eventid' => $event->eid,
|
|
'booking_variety_status' => $values['booking_variety_status'] == 1 ? 1 : 0,
|
|
'booking_variety_time_descrip' => $values['booking_variety_time_descrip'],
|
|
'booking_variety_start' => _datetime_array_to_ts($values['booking_variety_start']),
|
|
'booking_variety_end' => _datetime_array_to_ts($values['booking_variety_end']),
|
|
))
|
|
->execute();
|
|
}
|
|
elseif ($form_state['values']['op'] == 'Delete')
|
|
{
|
|
//verify that tid is a number
|
|
if (! preg_match('/^[0-9]+$/', $values['tid'])) {
|
|
drupal_set_message("Error: Invalid variety timeslot ID supplied. Unable to delete entry.", 'error', FALSE);
|
|
return "";
|
|
}
|
|
|
|
$num_deleted = db_delete('booking_variety_times')
|
|
->condition('tid', $values['tid'])
|
|
->execute();
|
|
|
|
$message = t("Successfully deleted !num row(s), corresponding to variety session timeslot '!desc'",
|
|
array('!num' => $num_deleted, '!desc' => $values['booking_variety_time_descrip']));
|
|
drupal_set_message($message, $type = 'status');
|
|
}
|
|
else
|
|
{
|
|
//verify that booking_eid is a number
|
|
if (! preg_match('/^[0-9]+$/', $values['tid'])) {
|
|
drupal_set_message("Error: Invalid variety session timeslot ID supplied. Unable to update entry.", 'error', FALSE);
|
|
return "";
|
|
}
|
|
|
|
//update the event
|
|
db_update('booking_variety_times')
|
|
->fields(array (
|
|
'booking_eventid' => $event->eid,
|
|
'booking_variety_time_descrip' => $values['booking_variety_time_descrip'],
|
|
'booking_variety_status' => $values['booking_variety_status'] == 1 ? 1 : 0,
|
|
'booking_variety_start' => _datetime_array_to_ts($values['booking_variety_start']),
|
|
'booking_variety_end' => _datetime_array_to_ts($values['booking_variety_end']),
|
|
))
|
|
->condition('tid', $values['tid'])
|
|
->execute();
|
|
}
|
|
|
|
$form_state['redirect'] = array('admin/config/booking/variety');
|
|
} |