You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1737 lines
62 KiB
1737 lines
62 KiB
4 years ago
|
<?php
|
||
|
|
||
|
/**
|
||
|
* @file
|
||
|
* Administrative configuration functions for the Room Reservations module.
|
||
|
*
|
||
|
* @author Bob Humphrey, Web and Applications Developer, UNCW Randall Library
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* Confirmation message to display when configuration options have been saved
|
||
|
* successfully.
|
||
|
*/
|
||
|
define('ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG', t('The configuration options have been saved.'));
|
||
|
|
||
|
/**
|
||
|
* Error message to display when configuration options could not be saved.
|
||
|
*/
|
||
|
define('ROOM_RESERVATIONS_SAVE_ERROR_MSG', t('The configuration options could not be saved.'));
|
||
|
|
||
|
/**
|
||
|
* Confirmation message to display when configuration options have been
|
||
|
* successfully reset to their default values.
|
||
|
*/
|
||
|
define('ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG', t('The configuration options have been reset to their default values.'));
|
||
|
|
||
|
/**
|
||
|
* Error message to display when configuration options could not be reset to
|
||
|
* their default values.
|
||
|
*/
|
||
|
define('ROOM_RESERVATIONS_RESET_ERROR_MSG', t('The configuration options could not be reset to their default values.'));
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Settings / General page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings($form, &$form_state) {
|
||
|
$options = array(
|
||
|
'30' => '30',
|
||
|
'60' => '60',
|
||
|
'90' => '90',
|
||
|
'120' => '120',
|
||
|
'150' => '150',
|
||
|
'180' => '180',
|
||
|
'240' => '240',
|
||
|
'360' => '360',
|
||
|
'480' => '480',
|
||
|
'600' => '600',
|
||
|
'720' => '720',
|
||
|
);
|
||
|
$form['room_reservations_title'] = array(
|
||
|
'#title' => t('Application name'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 50,
|
||
|
'#size' => 50,
|
||
|
'#description' => t('The name of the room reservation application displayed on the menu, breadcrumbs, and heading of the reservation
|
||
|
calendar page.'),
|
||
|
'#default_value' => variable_get('room_reservations_title', 'Room Reservations'),
|
||
|
);
|
||
|
$form['room_reservations_advance_standard'] = array(
|
||
|
'#title' => t('Days in advance (standard)'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => array(7 => 7, 14 => 14, 30 => 30, 60 => 60, 90 => 90),
|
||
|
'#description' => t('The number of days in advance that a reservation can be made by a standard user. Default is 14. Maximum is 90.'),
|
||
|
'#default_value' => variable_get('room_reservations_advance_standard', 14),
|
||
|
);
|
||
|
$form['room_reservations_advance_extended'] = array(
|
||
|
'#title' => t('Days in advance (extended)'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => array(30 => 30, 60 => 60, 90 => 90, 180 => 180, 360 => 360),
|
||
|
'#description' => t('The number of days in advance that a reservation can be made by an admin. Default is 180. Maximum is 360.'),
|
||
|
'#default_value' => variable_get('room_reservations_advance_extended', 180),
|
||
|
);
|
||
|
$form['room_reservations_reservations_per_user'] = array(
|
||
|
'#title' => t('Open reservations per user'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 2,
|
||
|
'#size' => 2,
|
||
|
'#description' => t('The maximum number of reservations that one particular user can have open at any time. Default is 4. Enter 0 to indicate
|
||
|
that there is no maximum limit.'),
|
||
|
'#default_value' => variable_get('room_reservations_reservations_per_user', 4),
|
||
|
);
|
||
|
$form['room_reservations_reservations_per_day'] = array(
|
||
|
'#title' => t('Reservations per day'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 2,
|
||
|
'#size' => 2,
|
||
|
'#description' => t('The maximum number of reservations that one particular user can make for a single day. Default is 1. Enter 0 to indicate
|
||
|
that there is no maximum limit.'),
|
||
|
'#default_value' => variable_get('room_reservations_reservations_per_day', 1),
|
||
|
);
|
||
|
$form['room_reservations_max_length_standard'] = array(
|
||
|
'#title' => t('Maximum reservation length (standard)'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => variable_get('room_reservations_max_length_standard', 120),
|
||
|
'#description' => t('The maximum amount of time, in minutes, for which a room can be reserved by a standard user. Default is 120.'),
|
||
|
);
|
||
|
$form['room_reservations_max_length_extended'] = array(
|
||
|
'#title' => t('Maximum reservation length (extended)'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => variable_get('room_reservations_max_length_extended', 120),
|
||
|
'#description' => t('The maximum amount of time, in minutes, for which a room can be reserved by an admin. Default is 120.'),
|
||
|
);
|
||
|
$form['room_reservations_end_early'] = array(
|
||
|
'#title' => t('End reservations 15 minutes before closing time.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => variable_get('room_reservations_end_early', 0),
|
||
|
'#description' => t('All reservations end 15 minutes before closing time.'),
|
||
|
);
|
||
|
$form['room_reservations_before_after_hours'] = array(
|
||
|
'#title' => t('Time to show on calendar before/after open slots'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => array(0 => '0 hours', 1 => t('1 hour'), 2 => t('2 hours'), '3' => t('All day')),
|
||
|
'#default_value' => variable_get('room_reservations_before_after_hours', 3),
|
||
|
'#description' => t('The number of hours before the first and last open slots for the day that are shown on the calendar. The default is to display the entire day.'),
|
||
|
);
|
||
|
$form['room_reservations_calendar_flipped'] = array(
|
||
|
'#title' => t('Flip orientation of calendar display.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => variable_get('room_reservations_calendar_flipped', 0),
|
||
|
'#description' => t('The default orientation of the calendar display has rooms listed along the top and hours along the left side. Selecting this checkbox will
|
||
|
flip this to display hours along the top and the rooms listed along the left side. This can be useful for categories with a very large number of rooms. NOTE:
|
||
|
custom CSS will most likely be required to allow all the hour slots to fit the width of your theme.'),
|
||
|
);
|
||
|
$form['room_reservations_compressed_labels'] = array(
|
||
|
'#title' => t('Use smaller labels on calendar display.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => variable_get('room_reservations_compressed_labels', 0),
|
||
|
'#description' => t('The default display shows the room title and room capacity on both sides of the calendar display. Selecting this option shows only the room title on one side.'),
|
||
|
);
|
||
|
|
||
|
$form['room_reservations_date_displays'] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Date and time display formats'),
|
||
|
'#collapsible' => true,
|
||
|
'#collapsed' => true,
|
||
|
);
|
||
|
$form['room_reservations_date_displays']['room_reservations_picker_format'] = array(
|
||
|
'#type' => 'textfield',
|
||
|
'#title' => t('Date format for the popup date picker to select calendar date.'),
|
||
|
'#description' => t('Enter format in the form "y/m/d", "m/d/y", etc.'),
|
||
|
'#default_value' => variable_get('room_reservations_picker_format', 'y/m/d'),
|
||
|
);
|
||
|
$options = array(0 => '1:00 PM', 1 => '13:00');
|
||
|
$form['room_reservations_date_displays']['room_reservations_hour_format'] = array(
|
||
|
'#type' => 'radios',
|
||
|
'#title' => t('Hour format for the calendar display.'),
|
||
|
'#description' => t('Select either 2:00 PM or 14:00 display format.'),
|
||
|
'#default_value' => variable_get('room_reservations_hour_format', 0),
|
||
|
'#options' => $options,
|
||
|
);
|
||
|
|
||
|
|
||
|
/*
|
||
|
$form['room_reservations_group_size'] = array(
|
||
|
'#title' => t('Include group size.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => variable_get('room_reservations_group_size', 0),
|
||
|
'#description' => t('Show the group size field on the reservation form
|
||
|
and require users to enter this information.'),
|
||
|
'#weight' => -40,
|
||
|
);
|
||
|
*/
|
||
|
|
||
|
return system_settings_form($form);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Settings / General page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
// Open reservations per user.
|
||
|
$data = $form_state['values']['room_reservations_reservations_per_user'];
|
||
|
if (!ctype_digit($data)) {
|
||
|
$field = 'room_reservations_reservations_per_user';
|
||
|
$message = t('Open reservations per user must be numeric.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
// Reservations per day.
|
||
|
$data = $form_state['values']['room_reservations_reservations_per_day'];
|
||
|
if (!ctype_digit($data)) {
|
||
|
$field = 'room_reservations_reservations_per_day';
|
||
|
$message = t('Reservations per day must be numeric.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Settings / Default Email Address config page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_email($form, &$form_state) {
|
||
|
$options = array(
|
||
|
'0' => t('Do not set a default email address.'),
|
||
|
'1' => t('Set the default email address equal to the user ID.'),
|
||
|
'2' => t('Set the default email address equal to the user ID plus the domain name entered below.'),
|
||
|
);
|
||
|
$default_option = _room_reservations_get_variable('default_email_address');
|
||
|
$default_domain = _room_reservations_get_variable('default_email_domain');
|
||
|
$form['options'] = array(
|
||
|
'#title' => t('Options'),
|
||
|
'#type' => 'radios',
|
||
|
'#options' => $options,
|
||
|
'#description' => t('Options for including a default email address
|
||
|
in the Reminders - Email Addresses field on the reservation form.'),
|
||
|
'#default_value' => $default_option,
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$form['domain'] = array(
|
||
|
'#title' => t('Domain Name'),
|
||
|
'#type' => 'textfield',
|
||
|
'#description' => t('The domain name that is added to the user
|
||
|
name to create the default email address on the reservation form.
|
||
|
Required if the third option above is selected.'),
|
||
|
'#default_value' => $default_domain,
|
||
|
'#maxlength' => 80,
|
||
|
'#size' => 80,
|
||
|
'#weight' => -90,
|
||
|
);
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Settings / Default Email Address config page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_email_validate(
|
||
|
$form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$option = $form_state['values']['options'];
|
||
|
$domain = trim($form_state['values']['domain']);
|
||
|
if (($option == 2) && (!$domain)) {
|
||
|
$field = 'domain';
|
||
|
$message = t('A domain name must be entered when this option is selected.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Settings / Default Email Address config page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_email_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$option = $form_state['values']['options'];
|
||
|
$domain = trim($form_state['values']['domain']);
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$option = 0;
|
||
|
$domain = '';
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('default_email_address', $option);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('default_email_domain', $domain);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Settings / Reminders configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_reminders($form, &$form_state) {
|
||
|
$default_send_reminders = _room_reservations_get_variable('send_reminders');
|
||
|
$default_reminder_time = _room_reservations_get_variable('reminder_time');
|
||
|
$default_reminder_cutoff = _room_reservations_get_variable('reminder_cutoff');
|
||
|
$options = array();
|
||
|
$options['1300'] = t('1:00 PM');
|
||
|
$options['1400'] = t('2:00 PM');
|
||
|
$options['1500'] = t('3:00 PM');
|
||
|
$options['1600'] = t('4:00 PM');
|
||
|
$options['1700'] = t('5:00 PM');
|
||
|
$options['1800'] = t('6:00 PM');
|
||
|
$options['1900'] = t('7:00 PM');
|
||
|
$options['2000'] = t('8:00 PM');
|
||
|
$options['2100'] = t('9:00 PM');
|
||
|
$options['2200'] = t('10:00 PM');
|
||
|
$options['2300'] = t('11:00 PM');
|
||
|
$form['send_reminders'] = array(
|
||
|
'#title' => t('Send reminders.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => $default_send_reminders,
|
||
|
'#description' => t('Send reservation reminders.'),
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$form['reminder_time'] = array(
|
||
|
'#title' => t('Send reminders daily at'),
|
||
|
'#type' => 'select',
|
||
|
'#description' => t('The time each day when reminders will be sent
|
||
|
for the next day\'s reservations. Note that a cron job must be
|
||
|
set up to run at this time.'),
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_reminder_time,
|
||
|
'#multiple' => FALSE,
|
||
|
'#weight' => -90,
|
||
|
);
|
||
|
$form['reminder_cutoff'] = array(
|
||
|
'#title' => t('Send reminders for reservations created before'),
|
||
|
'#type' => 'select',
|
||
|
'#description' => t('For reservations created on the same day
|
||
|
that the reminder is sent, only send a reminder if the
|
||
|
reservation was created before this time. This is set so that
|
||
|
patrons are not sent a reminder immediately after creating
|
||
|
a reservation.'),
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_reminder_cutoff,
|
||
|
'#multiple' => FALSE,
|
||
|
'#weight' => -80,
|
||
|
);
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Settings / Reminders configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_reminders_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$send_reminders = $form_state['values']['send_reminders'];
|
||
|
$reminder_time = $form_state['values']['reminder_time'];
|
||
|
$reminder_cutoff = $form_state['values']['reminder_cutoff'];
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$send_reminders = 0;
|
||
|
$reminder_time = 1300;
|
||
|
$reminder_cutoff = 1300;
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('send_reminders', $send_reminders);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_time', $reminder_time);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_cutoff',
|
||
|
$reminder_cutoff);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Settings / Reminders configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_reminders_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$reminder_time = $form_state['values']['reminder_time'];
|
||
|
$reminder_cutoff = $form_state['values']['reminder_cutoff'];
|
||
|
if ($reminder_time < $reminder_cutoff) {
|
||
|
$field = 'reminder_time';
|
||
|
$message = t("'Send reminder daily at' time cannot be earlier than 'Send reminders for reservations created before' time.");
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Hours / Default Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_hours($form, &$form_state) {
|
||
|
$hours = _room_reservations_hours();
|
||
|
// Select box options.
|
||
|
$options = array();
|
||
|
$options['9999'] = t('Select the time');
|
||
|
$options['0000'] = t('Midnight - start of day');
|
||
|
foreach ($hours as $hour) {
|
||
|
$time = $hour['time'];
|
||
|
$display = t($hour['display']);
|
||
|
if ($time != '0000') {
|
||
|
$options[$time] = $display;
|
||
|
}
|
||
|
}
|
||
|
$options['2400'] = t('Midnight - end of day');
|
||
|
// Get saved default hours.
|
||
|
$default_hours
|
||
|
= unserialize(_room_reservations_get_variable('default_hours'));
|
||
|
if (!$default_hours) {
|
||
|
for ($x = 0; $x < 28; $x++) {
|
||
|
$default_hours[$x] = '9999';
|
||
|
}
|
||
|
}
|
||
|
$days = array(
|
||
|
t('Sunday'),
|
||
|
t('Monday'),
|
||
|
t('Tuesday'),
|
||
|
t('Wednesday'),
|
||
|
t('Thursday'),
|
||
|
t('Friday'),
|
||
|
t('Saturday'),
|
||
|
);
|
||
|
$form['#tree'] = TRUE;
|
||
|
for ($day = 0; $day < 7; $day++) {
|
||
|
$day_hours = array();
|
||
|
$day_hours[] = $default_hours[($day * 4)];
|
||
|
$day_hours[] = $default_hours[($day * 4) + 1];
|
||
|
$day_hours[] = $default_hours[($day * 4) + 2];
|
||
|
$day_hours[] = $default_hours[($day * 4) + 3];
|
||
|
$display_hours = _room_reservations_hours_display($day_hours);
|
||
|
$form['day_' . $day] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => $days[$day] . ' (' . $display_hours . ')',
|
||
|
'#collapsible' => TRUE,
|
||
|
'#collapsed' => TRUE,
|
||
|
'#weight' => -90 + ($day * 10),
|
||
|
);
|
||
|
$form['day_' . $day]['first_shift_open_' . $day] = array(
|
||
|
'#title' => t('First shift open'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_hours[($day * 4)],
|
||
|
'#weight' => -90 + ($day * 10) + 1,
|
||
|
);
|
||
|
$form['day_' . $day]['first_shift_close_' . $day] = array(
|
||
|
'#title' => t('First shift close'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_hours[($day * 4) + 1],
|
||
|
'#weight' => -90 + ($day * 10) + 2,
|
||
|
);
|
||
|
$form['day_' . $day]['second_shift_open_' . $day] = array(
|
||
|
'#title' => t('Second shift open'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_hours[($day * 4) + 2],
|
||
|
'#weight' => -90 + ($day * 10) + 3,
|
||
|
);
|
||
|
$form['day_' . $day]['second_shift_close_' . $day] = array(
|
||
|
'#title' => t('Second shift close'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $default_hours[($day * 4) + 3],
|
||
|
'#weight' => -90 + ($day * 10) + 4,
|
||
|
);
|
||
|
}
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Hours / Default Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_hours_validate($form_id, &$form_state) {
|
||
|
$days = array(
|
||
|
t('Sunday'),
|
||
|
t('Monday'),
|
||
|
t('Tuesday'),
|
||
|
t('Wednesday'),
|
||
|
t('Thursday'),
|
||
|
t('Friday'),
|
||
|
t('Saturday'),
|
||
|
);
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
for ($day = 0; $day < 7; $day++) {
|
||
|
$open = TRUE;
|
||
|
$second_shift = FALSE;
|
||
|
$first_shift_open = $form_state['values']['day_' . $day]['first_shift_open_' . $day];
|
||
|
$first_shift_close = $form_state['values']['day_' . $day]['first_shift_close_' . $day];
|
||
|
$second_shift_open = $form_state['values']['day_' . $day]['second_shift_open_' . $day];
|
||
|
$second_shift_close = $form_state['values']['day_' . $day]['second_shift_close_' . $day];
|
||
|
$int_first_shift_open = intval($form_state['values']['day_' . $day]['first_shift_open_' . $day]);
|
||
|
$int_first_shift_close = intval($form_state['values']['day_' . $day]['first_shift_close_' . $day]);
|
||
|
$int_second_shift_open = intval($form_state['values']['day_' . $day]['second_shift_open_' . $day]);
|
||
|
$int_second_shift_close = intval($form_state['values']['day_' . $day]['second_shift_close_' . $day]);
|
||
|
// Closed.
|
||
|
if (($int_first_shift_open == 9999) && ($int_first_shift_close == 9999) && ($int_second_shift_open == 9999) && ($int_second_shift_close == 9999)) {
|
||
|
$open = FALSE;
|
||
|
}
|
||
|
// First shift.
|
||
|
if ($open) {
|
||
|
if ($int_first_shift_open == 9999) {
|
||
|
$field = 'day_' . $day . '][first_shift_open_' . $day;
|
||
|
$message = t('!day - First shift open is required.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_first_shift_close == 9999) {
|
||
|
$field = 'day_' . $day . '][first_shift_close_' . $day;
|
||
|
$message = t('!day - First shift close is required.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_first_shift_open >= $int_first_shift_close) {
|
||
|
$field = 'day_' . $day . '][first_shift_close_' . $day;
|
||
|
$message = t('!day - First shift close must be later than first shift open.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
// Second shift.
|
||
|
if ($open) {
|
||
|
if (($int_second_shift_open != 9999) || ($int_second_shift_close != 9999)) {
|
||
|
$second_shift = TRUE;
|
||
|
}
|
||
|
}
|
||
|
if ($second_shift) {
|
||
|
if (($int_first_shift_open == 9999) && ($int_first_shift_close == 9999)) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Cannot have a second shift without a first shift.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open == 9999) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Second shift open is missing.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_close == 9999) {
|
||
|
$field = 'day_' . $day . '][second_shift_close_' . $day;
|
||
|
$message = t('!day - Second shift close is missing.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open <= $int_first_shift_close) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Second shift open must be later than first shift close.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open >= $int_second_shift_close) {
|
||
|
$field = 'day_' . $day . '][second_shift_close_' . $day;
|
||
|
$message = t('!day - Second shift close must be later than second shift opten.', array('!day' => $days[$day]));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Hours / Default Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_default_hours_submit($form_id, &$form_state) {
|
||
|
$default_hours = array();
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
for ($day = 0; $day < 7; $day++) {
|
||
|
$default_hours[] = $form_state['values']['day_' . $day]['first_shift_open_' . $day];
|
||
|
$default_hours[] = $form_state['values']['day_' . $day]['first_shift_close_' . $day];
|
||
|
$default_hours[] = $form_state['values']['day_' . $day]['second_shift_open_' . $day];
|
||
|
$default_hours[] = $form_state['values']['day_' . $day]['second_shift_close_' . $day];
|
||
|
}
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
if ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
for ($day = 0; $day < 7; $day++) {
|
||
|
$default_hours[] = '9999';
|
||
|
$default_hours[] = '9999';
|
||
|
$default_hours[] = '9999';
|
||
|
$default_hours[] = '9999';
|
||
|
}
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('default_hours', serialize($default_hours));
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
else {
|
||
|
|
||
|
}
|
||
|
// Update monthly hours records.
|
||
|
$sql = "SELECT * FROM {room_reservations_variables} WHERE name LIKE 'monthly_hours_%'";
|
||
|
$results = db_query($sql);
|
||
|
foreach ($results as $data){
|
||
|
$name = $data->name;
|
||
|
$month = intval(drupal_substr($name, 19));
|
||
|
$year = drupal_substr($name, 14, 4);
|
||
|
$mo_hours = unserialize($data->value);
|
||
|
// Days in the month.
|
||
|
$days = date('t', mktime(0, 0, 0, $month, 1, (int) $year));
|
||
|
$upd_mo_hours = array();
|
||
|
for ($day = 0; $day < $days; $day++) {
|
||
|
$default_ind = $mo_hours[($day * 5)];
|
||
|
if ($default_ind == 'D') {
|
||
|
// Update monthly hours with default day of week hours.
|
||
|
// Day of the week.
|
||
|
$dow = date('w', mktime(0, 0, 0, $month, $day + 1, (int) $year));
|
||
|
$upd_mo_hours[($day * 5)] = 'D';
|
||
|
$upd_mo_hours[($day * 5) + 1] = $default_hours[($dow * 4)];
|
||
|
$upd_mo_hours[($day * 5) + 2] = $default_hours[($dow * 4) + 1];
|
||
|
$upd_mo_hours[($day * 5) + 3] = $default_hours[($dow * 4) + 2];
|
||
|
$upd_mo_hours[($day * 5) + 4] = $default_hours[($dow * 4) + 3];
|
||
|
}
|
||
|
elseif ($default_ind == 'O') {
|
||
|
// Leave monthly hours unchanged.
|
||
|
$upd_mo_hours[($day * 5)] = 'O';
|
||
|
$upd_mo_hours[($day * 5) + 1] = $mo_hours[($day * 5) + 1];
|
||
|
$upd_mo_hours[($day * 5) + 2] = $mo_hours[($day * 5) + 2];
|
||
|
$upd_mo_hours[($day * 5) + 3] = $mo_hours[($day * 5) + 3];
|
||
|
$upd_mo_hours[($day * 5) + 4] = $mo_hours[($day * 5) + 4];
|
||
|
}
|
||
|
}
|
||
|
$result2 = _room_reservations_set_variable($name,
|
||
|
serialize($upd_mo_hours));
|
||
|
if (!$result2) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Hours / Daily Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_daily_hours($form, &$form_state, $selected_month = NULL) {
|
||
|
$cur_months = _room_reservations_current_months();
|
||
|
|
||
|
if (!$selected_month) {
|
||
|
$selected_month = date('Y_m');
|
||
|
}
|
||
|
$selected_month = isset($form_state['input']['month']) ? $form_state['input']['month'] : $selected_month;
|
||
|
|
||
|
// create a form to pick a month.
|
||
|
$month_options = array();
|
||
|
$first = current($cur_months);
|
||
|
foreach ($cur_months as $cur_month) {
|
||
|
$yyyy_mm = $cur_month['YYYY_MM'];
|
||
|
$display = t($cur_month['display']);
|
||
|
$month_options[$yyyy_mm] = t($cur_month['display']);
|
||
|
}
|
||
|
|
||
|
// Form.
|
||
|
$form['select_month'] = array(
|
||
|
'#type' => 'container',
|
||
|
'#weight' => -2000,
|
||
|
);
|
||
|
$form['select_month']['month'] = array(
|
||
|
'#title' => t('Month'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $month_options,
|
||
|
'#default_value' => $selected_month ? $selected_month : $first['YYYY_MM'],
|
||
|
);
|
||
|
$form['select_month']['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Select a month'),
|
||
|
);
|
||
|
|
||
|
// and if no month has been selected; just return this form
|
||
|
if (!$selected_month) {
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
// If the month has been selected, return a form to update the hours for each day of that month.
|
||
|
$hours = _room_reservations_hours();
|
||
|
// Select box options.
|
||
|
$options = array();
|
||
|
$options['9999'] = t('Select the time');
|
||
|
$options['0000'] = t('Midnight - start of day');
|
||
|
foreach ($hours as $hour) {
|
||
|
$time = $hour['time'];
|
||
|
$display = t($hour['display']);
|
||
|
if ($time != '0000') {
|
||
|
$options[$time] = $display;
|
||
|
}
|
||
|
}
|
||
|
$options['2400'] = t('Midnight - end of day');
|
||
|
|
||
|
$yyyy_mm = $selected_month;
|
||
|
$month = intval(drupal_substr($yyyy_mm, 5));
|
||
|
$year = drupal_substr($yyyy_mm, 0, 4);
|
||
|
$month_display = date('F Y', mktime(0, 0, 0, $month, 1, $year));
|
||
|
// Days in the month.
|
||
|
$days = date('t', mktime(0, 0, 0, $month, 1, $year));
|
||
|
if (!$mo_hours = unserialize(_room_reservations_get_variable('monthly_hours_' . $yyyy_mm))) {
|
||
|
$mo_hours = _room_reservations_create_mo_hours($year, $month, $yyyy_mm, true);
|
||
|
}
|
||
|
// Form.
|
||
|
$form['#tree'] = TRUE;
|
||
|
$form['month_display'] = array(
|
||
|
'#prefix' => '<b>',
|
||
|
'#suffix' => '</b><br />',
|
||
|
'#markup' => $month_display,
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$form['note'] = array(
|
||
|
'#markup' => t('Asterisk (*) indicates that the hours have been changed from the default'),
|
||
|
'#weight' => -99,
|
||
|
);
|
||
|
for ($day = 0; $day < $days; $day++) {
|
||
|
// Day of week.
|
||
|
$dow = date('l', mktime(0, 0, 0, $month, $day + 1, $year));
|
||
|
$changed_hours = ($mo_hours[($day * 5)] == 'O') ? '*' : '';
|
||
|
$day_hours = array();
|
||
|
$day_hours[] = $mo_hours[($day * 5) + 1];
|
||
|
$day_hours[] = $mo_hours[($day * 5) + 2];
|
||
|
$day_hours[] = $mo_hours[($day * 5) + 3];
|
||
|
$day_hours[] = $mo_hours[($day * 5) + 4];
|
||
|
$display_hours = _room_reservations_hours_display($day_hours);
|
||
|
$title = ($day + 1) . ' ' . $dow . ' (' . $display_hours . ') ' . $changed_hours;
|
||
|
$form['day_' . $day] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => $title,
|
||
|
'#collapsible' => TRUE,
|
||
|
'#collapsed' => TRUE,
|
||
|
'#weight' => -9 + ($day * 2),
|
||
|
);
|
||
|
$form['day_' . $day]['first_shift_open_' . $day] = array(
|
||
|
'#title' => t('First shift open'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $mo_hours[($day * 5) + 1],
|
||
|
//'#weight' => -9 + ($day * 2) + 1,
|
||
|
);
|
||
|
$form['day_' . $day]['first_shift_close_' . $day] = array(
|
||
|
'#title' => t('First shift close'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $mo_hours[($day * 5) + 2],
|
||
|
//'#weight' => -9 + ($day * 10) + 2,
|
||
|
);
|
||
|
$form['day_' . $day]['second_shift_open_' . $day] = array(
|
||
|
'#title' => t('Second shift open'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $mo_hours[($day * 5) + 3],
|
||
|
//'#weight' => -90 + ($day * 10) + 3,
|
||
|
);
|
||
|
$form['day_' . $day]['second_shift_close_' . $day] = array(
|
||
|
'#title' => t('Second shift close'),
|
||
|
'#type' => 'select',
|
||
|
'#options' => $options,
|
||
|
'#default_value' => $mo_hours[($day * 5) + 4],
|
||
|
//'#weight' => -90 + ($day * 10) + 4,
|
||
|
);
|
||
|
}
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 400,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 401,
|
||
|
);
|
||
|
$form['month'] = array(
|
||
|
'#type' => 'value',
|
||
|
'#value' => $selected_month,
|
||
|
);
|
||
|
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Hours / Daily Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_daily_hours_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$month_value = $form_state['values']['month'];
|
||
|
$month = intval(drupal_substr($month_value, 5));
|
||
|
$year = drupal_substr($month_value, 0, 4);
|
||
|
// Days in the month.
|
||
|
$days = date('t', mktime(0, 0, 0, $month, 1, $year));
|
||
|
for ($day = 0; $day < $days; $day++) {
|
||
|
// Day of the week.
|
||
|
$dow = date('l', mktime(0, 0, 0, $month, $day + 1, $year));
|
||
|
// Day of month.
|
||
|
$dom = $day + 1;
|
||
|
$open = TRUE;
|
||
|
$second_shift = FALSE;
|
||
|
$first_shift_open = $form_state['values']['day_' . $day]['first_shift_open_' . $day];
|
||
|
$first_shift_close = $form_state['values']['day_' . $day]['first_shift_close_' . $day];
|
||
|
$second_shift_open = $form_state['values']['day_' . $day]['second_shift_open_' . $day];
|
||
|
$second_shift_close = $form_state['values']['day_' . $day]['second_shift_close_' . $day];
|
||
|
$int_first_shift_open = intval($form_state['values']['day_' . $day]['first_shift_open_' . $day]);
|
||
|
$int_first_shift_close = intval($form_state['values']['day_' . $day]['first_shift_close_' . $day]);
|
||
|
$int_second_shift_open = intval($form_state['values']['day_' . $day]['second_shift_open_' . $day]);
|
||
|
$int_second_shift_close = intval($form_state['values']['day_' . $day]['second_shift_close_' . $day]);
|
||
|
// Closed.
|
||
|
if (($int_first_shift_open == 9999) && ($int_first_shift_close == 9999) && ($int_second_shift_open == 9999) && ($int_second_shift_close == 9999)) {
|
||
|
$open = FALSE;
|
||
|
}
|
||
|
// First shift.
|
||
|
if ($open) {
|
||
|
if ($int_first_shift_open == 9999) {
|
||
|
$field = 'day_' . $day . '][first_shift_open_' . $day;
|
||
|
$message = t('!day - First shift open is required.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_first_shift_close == 9999) {
|
||
|
$field = 'day_' . $day . '][first_shift_close_' . $day;
|
||
|
$message = t('!day - First shift close is required.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_first_shift_open >= $int_first_shift_close) {
|
||
|
$field = 'day_' . $day . '][first_shift_close_' . $day;
|
||
|
$message = t('!day - First shift close must be later than first shift open.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
// Second shift.
|
||
|
if ($open) {
|
||
|
if (($int_second_shift_open != 9999) || ($int_second_shift_close != 9999)) {
|
||
|
$second_shift = TRUE;
|
||
|
}
|
||
|
}
|
||
|
if ($second_shift) {
|
||
|
if (($int_first_shift_open == 9999) && ($int_first_shift_close == 9999)) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Cannot have a second shift without a first shift.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open == 9999) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Second shift open is missing.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_close == 9999) {
|
||
|
$field = 'day_' . $day . '][second_shift_close_' . $day;
|
||
|
$message = t('!day - Second shift close is missing.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open <= $int_first_shift_close) {
|
||
|
$field = 'day_' . $day . '][second_shift_open_' . $day;
|
||
|
$message = t('!day - Second shift open must be later than first shift close.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
elseif ($int_second_shift_open >= $int_second_shift_close) {
|
||
|
$field = 'day_' . $day . '][second_shift_close_' . $day;
|
||
|
$message = t('!day - Second shift close must be later than second shift opten.', array('!day' => $dom . ' ' . $dow));
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Hours / Daily Hours configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_daily_hours_submit($form_id, &$form_state) {
|
||
|
// Select month.
|
||
|
if ($form_state['clicked_button']['#value'] == t('Select a month')) {
|
||
|
$month = $form_state['input']['select_month']['month'] ? $form_state['input']['select_month']['month'] : $form_state['values']['month'];
|
||
|
$form_state['redirect'] = 'admin/config/system/room_reservations/hours/daily_hours/' . $month;
|
||
|
}
|
||
|
// Process the daily hours for the selected month.
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
$month_value = $form_state['values']['month'];
|
||
|
$month = intval(drupal_substr($month_value, 5));
|
||
|
$year = drupal_substr($month_value, 0, 4);
|
||
|
// Days in the month.
|
||
|
$days = date('t', mktime(0, 0, 0, $month, 1, $year));
|
||
|
$mo_hours = unserialize(_room_reservations_get_variable('monthly_hours_' . $month_value));
|
||
|
$updated_mo_hours = array();
|
||
|
$default_hours = unserialize(_room_reservations_get_variable('default_hours'));
|
||
|
for ($day = 0; $day < $days; $day++) {
|
||
|
// User entered hours for a single day.
|
||
|
$day_first_open = $form_state['values']['day_' . $day]['first_shift_open_' . $day];
|
||
|
$day_first_close = $form_state['values']['day_' . $day]['first_shift_close_' . $day];
|
||
|
$day_second_open = $form_state['values']['day_' . $day]['second_shift_open_' . $day];
|
||
|
$day_second_close = $form_state['values']['day_' . $day]['second_shift_close_' . $day];
|
||
|
// Default hours for the day of the week.
|
||
|
// Day of week.
|
||
|
$dow = date('w', mktime(0, 0, 0, $month, $day + 1, $year));
|
||
|
$default_first_open = $default_hours[($dow * 4) + 0];
|
||
|
$default_first_close = $default_hours[($dow * 4) + 1];
|
||
|
$default_second_open = $default_hours[($dow * 4) + 2];
|
||
|
$default_second_close = $default_hours[($dow * 4) + 3];
|
||
|
// Compare user entered hours to default for the day of the week.
|
||
|
if (($day_first_open == $default_first_open) &&
|
||
|
($day_first_close == $default_first_close) &&
|
||
|
($day_second_open == $default_second_open) &&
|
||
|
($day_second_close == $default_second_close)) {
|
||
|
$day_is_default = TRUE;
|
||
|
}
|
||
|
else {
|
||
|
$day_is_default = FALSE;
|
||
|
}
|
||
|
// Update the monthly hours record.
|
||
|
$updated_mo_hours[($day * 5)] = ($day_is_default) ? 'D' : 'O';
|
||
|
$updated_mo_hours[($day * 5) + 1] = $day_first_open;
|
||
|
$updated_mo_hours[($day * 5) + 2] = $day_first_close;
|
||
|
$updated_mo_hours[($day * 5) + 3] = $day_second_open;
|
||
|
$updated_mo_hours[($day * 5) + 4] = $day_second_close;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('monthly_hours_' . $month_value, serialize($updated_mo_hours));
|
||
|
if ($result) {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
}
|
||
|
// Reset the month to the default hours.
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
$month_value = $form_state['values']['month'];
|
||
|
$month = intval(drupal_substr($month_value, 5));
|
||
|
$year = drupal_substr($month_value, 0, 4);
|
||
|
$result = _room_reservations_create_mo_hours($year, $month, $month_value);
|
||
|
if ($result) {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Display Text configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_page($form, &$form_state) {
|
||
|
$default_calendar_text = _room_reservations_get_variable('calendar_text');
|
||
|
$default_reserve_room_instructions_text
|
||
|
= _room_reservations_get_variable('reserve_instructions');
|
||
|
$default_reserve_form_instructions_text
|
||
|
= _room_reservations_get_variable('reserve_form_instructions');
|
||
|
$default_policies = _room_reservations_get_variable('policies');
|
||
|
$form['calendar_text'] = array(
|
||
|
'#title' => t('Calendar page text'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 5,
|
||
|
'#description' => t('Text displayed at the top of the reservation
|
||
|
calendar page.'),
|
||
|
'#default_value' => $default_calendar_text,
|
||
|
'#weight' => -90,
|
||
|
);
|
||
|
$form['reserve_instructions_text'] = array(
|
||
|
'#title' => t('Reserve a room instructions text'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 2,
|
||
|
'#description' => t('Text displayed just above the words Reservation
|
||
|
Calendar on the reservation calendar page.'),
|
||
|
'#default_value' => $default_reserve_room_instructions_text,
|
||
|
'#weight' => -80,
|
||
|
);
|
||
|
$form['form_instructions_text'] = array(
|
||
|
'#title' => t('Reservation form instructions text'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 2,
|
||
|
'#description' => t('Text displayed at the top of the reservation form.'),
|
||
|
'#default_value' => $default_reserve_form_instructions_text,
|
||
|
'#weight' => -70,
|
||
|
);
|
||
|
$form['policies'] = array(
|
||
|
'#title' => t('Policies'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 10,
|
||
|
'#description' => t('Policies displayed on the reservation policies page.'),
|
||
|
'#default_value' => $default_policies,
|
||
|
'#weight' => -60,
|
||
|
);
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Display Text configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_page_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$calendar_text = $form_state['values']['calendar_text'];
|
||
|
$reserve_room_instructions_text
|
||
|
= $form_state['values']['reserve_instructions_text'];
|
||
|
$reserve_form_instructions_text
|
||
|
= $form_state['values']['form_instructions_text'];
|
||
|
$policies = $form_state['values']['policies'];
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$calendar_text = '';
|
||
|
$reserve_room_instructions_text = '';
|
||
|
$reserve_form_instructions_text = '';
|
||
|
$policies = '';
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('calendar_text', $calendar_text);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reserve_instructions',
|
||
|
$reserve_room_instructions_text);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reserve_form_instructions',
|
||
|
$reserve_form_instructions_text);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('policies', $policies);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the SMS / Wireless Carriers configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms($form, &$form_state) {
|
||
|
$default_sms_option = _room_reservations_get_variable('sms_option');
|
||
|
$form['#tree'] = TRUE;
|
||
|
$form['sms_option'] = array(
|
||
|
'#title' => t('SMS option'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => $default_sms_option,
|
||
|
'#description' => t('Give users the option of receiving confirmation
|
||
|
messages and reminders as SMS text messages.'),
|
||
|
'#weight' => -110,
|
||
|
);
|
||
|
$form['carriers'] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Wireless carriers'),
|
||
|
'#collapsible' => TRUE,
|
||
|
'#collapsed' => FALSE,
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$sql = "
|
||
|
SELECT id, value
|
||
|
FROM {room_reservations_variables}
|
||
|
WHERE name = '%s'
|
||
|
ORDER BY value
|
||
|
";
|
||
|
$result = db_query($sql, 'carrier');
|
||
|
if ($result) {
|
||
|
$options = array();
|
||
|
$form['carriers']['list_0'] = array(
|
||
|
'#value' => '<table><tr><th>' . t('Wireless carrier') . '</th><th>' .
|
||
|
t('Domain name') . '</th></tr>',
|
||
|
'#weight' => -99,
|
||
|
);
|
||
|
$x = 0;
|
||
|
while ($data = db_fetch_object($result)) {
|
||
|
$x++;
|
||
|
$id = $data->id;
|
||
|
$values = explode('~', $data->value);
|
||
|
$options[strval($id)] = $values[0];
|
||
|
$form['carriers']['list_' . $x] = array(
|
||
|
'#value' => '<tr><td>' . check_plain($values[0]) . '</td><td>' .
|
||
|
check_plain($values[1]) . '</td></tr>',
|
||
|
'#weight' => -99 + $x,
|
||
|
);
|
||
|
$x++;
|
||
|
}
|
||
|
$form['carriers']['list_' . $x] = array(
|
||
|
'#value' => '</table>',
|
||
|
'#weight' => -99 + $x,
|
||
|
);
|
||
|
}
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the SMS / Wireless Carriers configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$sms_option = $form_state['values']['sms_option'];
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
if ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$sms_option = 0;
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('sms_option', $sms_option);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the SMS / Add Carrier configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_add($form, &$form_state) {
|
||
|
$form['carrier'] = array(
|
||
|
'#title' => t('Wireless carrier'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 50,
|
||
|
'#size' => 50,
|
||
|
'#description' => t('The name of the wireless carrier, such as !att or
|
||
|
!verizon.', array(
|
||
|
'!att' => 'AT&T',
|
||
|
'!verizon' => 'Verizon',
|
||
|
)),
|
||
|
'#weight' => -20,
|
||
|
);
|
||
|
$form['domain'] = array(
|
||
|
'#title' => t('Domain name'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 50,
|
||
|
'#size' => 50,
|
||
|
'#description' => t('The domain name of the wireless carrier, such as
|
||
|
!att or !verizon.', array(
|
||
|
'!att' => '@txt.att.net',
|
||
|
'!verizon' => '@vtext.com',
|
||
|
)),
|
||
|
'#weight' => -10,
|
||
|
);
|
||
|
$form['add_carrier']['add'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Add'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the SMS / Add Carrier configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_add_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Add')) {
|
||
|
$carrier = $form_state['values']['carrier'];
|
||
|
$domain = $form_state['values']['domain'];
|
||
|
if (!$carrier) {
|
||
|
$field = 'add_carrier][carrier';
|
||
|
$message = t('Wireless carrier is required.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
if (!$domain) {
|
||
|
$field = 'add_carrier][domain';
|
||
|
$message = t('Domain name is required.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
else {
|
||
|
if (drupal_substr($domain, 0, 1) != '@') {
|
||
|
$field = 'add_carrier][domain';
|
||
|
$message = t('Domain name must begin with @.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
if (($carrier) && ($domain)) {
|
||
|
$sql = "
|
||
|
SELECT value
|
||
|
FROM {room_reservations_variables}
|
||
|
WHERE name = '%s'
|
||
|
";
|
||
|
$result = db_query($sql, 'carrier');
|
||
|
if ($result) {
|
||
|
while ($data = db_fetch_object($result)) {
|
||
|
$values = explode('~', $data->value);
|
||
|
if ($values[0] == $carrier) {
|
||
|
$field = 'add_carrier][carrier';
|
||
|
$message = t('There is already a record for this wireless
|
||
|
carrier.');
|
||
|
form_set_error($field, $message);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the SMS / Add Carrier configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_add_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Add')) {
|
||
|
$carrier = $form_state['values']['carrier'];
|
||
|
$domain = $form_state['values']['domain'];
|
||
|
$sql = "
|
||
|
INSERT INTO {room_reservations_variables}
|
||
|
(name, value)
|
||
|
VALUES ('%s', '%s')
|
||
|
";
|
||
|
$result = db_query($sql, 'carrier', $carrier . '~' . $domain);
|
||
|
if (!$result) {
|
||
|
drupal_set_message(t('The wireless carrier could not be added.'),
|
||
|
'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message(t('The wireless carrier has been added.'));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the SMS / Delete Network configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_delete($form, &$form_state) {
|
||
|
$sql = "
|
||
|
SELECT id, value
|
||
|
FROM {room_reservations_variables}
|
||
|
WHERE name = '%s'
|
||
|
ORDER BY value
|
||
|
";
|
||
|
$result = db_query($sql, 'carrier');
|
||
|
if ($result) {
|
||
|
$options = array();
|
||
|
$options[strval(0)] = t('Select a wireless carrier');
|
||
|
$x = 0;
|
||
|
while ($data = db_fetch_object($result)) {
|
||
|
$x++;
|
||
|
$id = $data->id;
|
||
|
$values = explode('~', $data->value);
|
||
|
$options[strval($id)] = $values[0];
|
||
|
$x++;
|
||
|
}
|
||
|
}
|
||
|
if ($options) {
|
||
|
$form['carrier'] = array(
|
||
|
'#type' => 'select',
|
||
|
'#title' => t('Wireless carrier'),
|
||
|
'#options' => $options,
|
||
|
'#weight' => 25,
|
||
|
);
|
||
|
$form['delete'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Delete'),
|
||
|
'#weight' => 30,
|
||
|
);
|
||
|
}
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the SMS / Delete Network configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_delete_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Delete')) {
|
||
|
$carrier = $form_state['values']['carrier'];
|
||
|
if (!$carrier) {
|
||
|
$field = 'delete_carrier][carrier';
|
||
|
$message = t('Wireless carrier is required.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the SMS / Delete Network configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_sms_delete_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Delete')) {
|
||
|
$carrier = $form_state['values']['carrier'];
|
||
|
$sql = "
|
||
|
DELETE FROM {room_reservations_variables}
|
||
|
WHERE ID = %d
|
||
|
";
|
||
|
$result = db_query($sql, $carrier);
|
||
|
if (!$result) {
|
||
|
drupal_set_message(t('The wireless carrier could not be deleted.'),
|
||
|
'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message(t('The wireless carrier has been deleted.'));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Messages / Email Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_email($form, &$form_state) {
|
||
|
$default_from_address
|
||
|
= _room_reservations_get_variable('from_address');
|
||
|
$default_confirmation_header_text
|
||
|
= _room_reservations_get_variable('confirmation_header_text');
|
||
|
$default_confirmation_owner_text
|
||
|
= _room_reservations_get_variable('confirmation_owner_text');
|
||
|
$default_confirmation_group_text
|
||
|
= _room_reservations_get_variable('confirmation_group_text');
|
||
|
$default_reminder_header_text
|
||
|
= _room_reservations_get_variable('reminder_header_text');
|
||
|
$default_reminder_owner_text
|
||
|
= _room_reservations_get_variable('reminder_owner_text');
|
||
|
$default_reminder_group_text
|
||
|
= _room_reservations_get_variable('reminder_group_text');
|
||
|
$tokens = array(
|
||
|
'%reservation_name' => t('The name given to the reservation to identify it
|
||
|
on the reservation calendar.'),
|
||
|
'%room' => t('The room that has been reserved.'),
|
||
|
'%month' => t('The full name of the month of the reservation date.'),
|
||
|
'%month_number' => t('The month number of the reservation date.'),
|
||
|
'%day' => t('The numeric day of the month of the reservation date.'),
|
||
|
'%day_of_the_week' => t('The full name of the day of the week of the
|
||
|
reservation date.'),
|
||
|
'%time' => t('The time of the reservation.'),
|
||
|
'%minutes' => t('The length of the reservation in minutes.'),
|
||
|
);
|
||
|
$token_display = '<p>' .
|
||
|
t('The following tokens will be replaced with dynamic values in any of the
|
||
|
fields below.') . '</p><ul>';
|
||
|
foreach ($tokens as $key => $value) {
|
||
|
$token_display .= '<li>' . $key . ' - ' . $value . '</li>';
|
||
|
}
|
||
|
$token_display .= '</ul>';
|
||
|
$form['from_address'] = array(
|
||
|
'#title' => t('From address'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The from address on all email messages.'),
|
||
|
'#default_value' => $default_from_address,
|
||
|
'#weight' => -110,
|
||
|
);
|
||
|
$form['tokens'] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Token values'),
|
||
|
'#collapsible' => TRUE,
|
||
|
'#collapsed' => TRUE,
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$form['tokens']['values'] = array(
|
||
|
'#value' => $token_display,
|
||
|
);
|
||
|
$form['confirmation_header'] = array(
|
||
|
'#title' => t('Confirmation heading'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The heading for all confirmation messages.'),
|
||
|
'#default_value' => $default_confirmation_header_text,
|
||
|
'#weight' => -97,
|
||
|
);
|
||
|
$form['confirmation_owner'] = array(
|
||
|
'#title' => t('Confirmation body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Confirmation message sent to the person who has made a
|
||
|
reservation.'),
|
||
|
'#default_value' => $default_confirmation_owner_text,
|
||
|
'#weight' => -95,
|
||
|
);
|
||
|
$form['confirmation_group'] = array(
|
||
|
'#title' => t('Confirmation to group members body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Confirmation message sent to all members of the group
|
||
|
except for the person who made the reservation.'),
|
||
|
'#default_value' => $default_confirmation_group_text,
|
||
|
'#weight' => -90,
|
||
|
);
|
||
|
$form['reminder_header'] = array(
|
||
|
'#title' => t('Reminder heading'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The heading for all reminder messages.'),
|
||
|
'#default_value' => $default_reminder_header_text,
|
||
|
'#weight' => -85,
|
||
|
);
|
||
|
$form['reminder_owner'] = array(
|
||
|
'#title' => t('Reminder body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Reminder message sent to the person who has made a
|
||
|
reservation.'),
|
||
|
'#default_value' => $default_reminder_owner_text,
|
||
|
'#weight' => -80,
|
||
|
);
|
||
|
$form['reminder_group'] = array(
|
||
|
'#title' => t('Reminder to group members body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Reminder message sent to all members of the group
|
||
|
except for the person who made the reservation.'),
|
||
|
'#default_value' => $default_reminder_group_text,
|
||
|
'#weight' => -75,
|
||
|
);
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validation for the Messages / Email Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_email_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$from_address = $form_state['values']['from_address'];
|
||
|
if (valid_email_address($from_address)) {
|
||
|
// Valid.
|
||
|
}
|
||
|
else {
|
||
|
$field = 'from_address';
|
||
|
$message = t('Invalid email address.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Messages / Email Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_email_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$from_address = $form_state['values']['from_address'];
|
||
|
$confirmation_header = $form_state['values']['confirmation_header'];
|
||
|
$confirmation_owner = $form_state['values']['confirmation_owner'];
|
||
|
$confirmation_group = $form_state['values']['confirmation_group'];
|
||
|
$reminder_header = $form_state['values']['reminder_header'];
|
||
|
$reminder_owner = $form_state['values']['reminder_owner'];
|
||
|
$reminder_group = $form_state['values']['reminder_group'];
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$confirmation_header = '';
|
||
|
$confirmation_owner = '';
|
||
|
$confirmation_group = '';
|
||
|
$reminder_header = '';
|
||
|
$reminder_owner = '';
|
||
|
$reminder_group = '';
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('from_address', $from_address);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('confirmation_header_text',
|
||
|
$confirmation_header);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('confirmation_owner_text',
|
||
|
$confirmation_owner);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('confirmation_group_text',
|
||
|
$confirmation_group);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_header_text',
|
||
|
$reminder_header);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_owner_text',
|
||
|
$reminder_owner);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_group_text',
|
||
|
$reminder_group);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form constructor for the Messages / SMS Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_text($form, &$form_state) {
|
||
|
$default_enable_text
|
||
|
= _room_reservations_get_variable('enable_text');
|
||
|
$default_from_address
|
||
|
= _room_reservations_get_variable('from_address_sms');
|
||
|
$default_confirmation_header_text
|
||
|
= _room_reservations_get_variable('confirmation_header_text_sms');
|
||
|
$default_confirmation_owner_text
|
||
|
= _room_reservations_get_variable('confirmation_owner_text_sms');
|
||
|
$default_reminder_header_text
|
||
|
= _room_reservations_get_variable('reminder_header_text_sms');
|
||
|
$default_reminder_owner_text
|
||
|
= _room_reservations_get_variable('reminder_owner_text_sms');
|
||
|
$tokens = array(
|
||
|
'%reservation_name' => t('The name given to the reservation to identify it
|
||
|
on the reservation calendar.'),
|
||
|
'%room' => t('The room that has been reserved.'),
|
||
|
'%month' => t('The full name of the month of the reservation date.'),
|
||
|
'%month_number' => t('The month number of the reservation date.'),
|
||
|
'%day' => t('The numeric day of the month of the reservation date.'),
|
||
|
'%day_of_the_week' => t('The full name of the day of the week of the
|
||
|
reservation date.'),
|
||
|
'%time' => t('The time of the reservation.'),
|
||
|
'%minutes' => t('The length of the reservation in minutes.'),
|
||
|
);
|
||
|
$token_display = '<p>' .
|
||
|
t('The following tokens will be replaced with dynamic values in any of the
|
||
|
fields below.') . '</p><ul>';
|
||
|
foreach ($tokens as $key => $value) {
|
||
|
$token_display .= '<li>' . $key . ' - ' . $value . '</li>';
|
||
|
}
|
||
|
$token_display .= '</ul>';
|
||
|
$form['enable_text'] = array(
|
||
|
'#title' => t('Enable SMS text messages.'),
|
||
|
'#type' => 'checkbox',
|
||
|
'#return_value' => 1,
|
||
|
'#default_value' => $default_enable_text,
|
||
|
'#description' => t('Enable the ability of users to receive reservation
|
||
|
confirmations and reminders by text message.'),
|
||
|
'#weight' => -120,
|
||
|
);
|
||
|
$form['from_address'] = array(
|
||
|
'#title' => t('From address'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The from address on all text messages.'),
|
||
|
'#default_value' => $default_from_address,
|
||
|
'#weight' => -110,
|
||
|
);
|
||
|
$form['tokens'] = array(
|
||
|
'#type' => 'fieldset',
|
||
|
'#title' => t('Token values'),
|
||
|
'#collapsible' => TRUE,
|
||
|
'#collapsed' => TRUE,
|
||
|
'#weight' => -100,
|
||
|
);
|
||
|
$form['tokens']['values'] = array(
|
||
|
'#value' => $token_display,
|
||
|
);
|
||
|
$form['confirmation_header'] = array(
|
||
|
'#title' => t('Confirmation heading'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The heading for confirmation text messages.'),
|
||
|
'#default_value' => $default_confirmation_header_text,
|
||
|
'#weight' => -97,
|
||
|
);
|
||
|
$form['confirmation_owner'] = array(
|
||
|
'#title' => t('Confirmation body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Confirmation text message body.'),
|
||
|
'#default_value' => $default_confirmation_owner_text,
|
||
|
'#weight' => -95,
|
||
|
);
|
||
|
$form['reminder_header'] = array(
|
||
|
'#title' => t('Reminder heading'),
|
||
|
'#type' => 'textfield',
|
||
|
'#maxlength' => 100,
|
||
|
'#size' => 100,
|
||
|
'#description' => t('The heading for reminder text messages.'),
|
||
|
'#default_value' => $default_reminder_header_text,
|
||
|
'#weight' => -85,
|
||
|
);
|
||
|
$form['reminder_owner'] = array(
|
||
|
'#title' => t('Reminder body'),
|
||
|
'#type' => 'textarea',
|
||
|
'#rows' => 8,
|
||
|
'#description' => t('Reminder text message body.'),
|
||
|
'#default_value' => $default_reminder_owner_text,
|
||
|
'#weight' => -80,
|
||
|
);
|
||
|
$form['save'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Save configuration'),
|
||
|
'#weight' => 100,
|
||
|
);
|
||
|
$form['reset'] = array(
|
||
|
'#type' => 'submit',
|
||
|
'#value' => t('Reset to defaults'),
|
||
|
'#weight' => 101,
|
||
|
);
|
||
|
return $form;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form validatiion for the Messages / SMS Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_text_validate($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$from_address = $form_state['values']['from_address'];
|
||
|
if (valid_email_address($from_address)) {
|
||
|
// Valid.
|
||
|
}
|
||
|
else {
|
||
|
$field = 'from_address';
|
||
|
$message = t('Invalid email address.');
|
||
|
form_set_error($field, $message);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Form submission for the Messages / SMS Messages configuration page.
|
||
|
*/
|
||
|
function room_reservations_admin_settings_text_submit($form_id, &$form_state) {
|
||
|
if ($form_state['clicked_button']['#value'] == t('Save configuration')) {
|
||
|
$enable_text = $form_state['values']['enable_text'];
|
||
|
$from_address = $form_state['values']['from_address'];
|
||
|
$confirmation_header = $form_state['values']['confirmation_header'];
|
||
|
$confirmation_owner = $form_state['values']['confirmation_owner'];
|
||
|
$reminder_header = $form_state['values']['reminder_header'];
|
||
|
$reminder_owner = $form_state['values']['reminder_owner'];
|
||
|
$confirmation = ROOM_RESERVATIONS_SAVE_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_SAVE_ERROR_MSG;
|
||
|
}
|
||
|
elseif ($form_state['clicked_button']['#value'] == t('Reset to defaults')) {
|
||
|
$enable_text = 0;
|
||
|
$confirmation_header = '';
|
||
|
$confirmation_owner = '';
|
||
|
$reminder_header = '';
|
||
|
$reminder_owner = '';
|
||
|
$confirmation = ROOM_RESERVATIONS_RESET_CONFIRMATION_MSG;
|
||
|
$error = ROOM_RESERVATIONS_RESET_ERROR_MSG;
|
||
|
}
|
||
|
$errors = FALSE;
|
||
|
$result = _room_reservations_set_variable('enable_text', $enable_text);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('from_address_sms', $from_address);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('confirmation_header_text_sms',
|
||
|
$confirmation_header);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('confirmation_owner_text_sms',
|
||
|
$confirmation_owner);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_header_text_sms',
|
||
|
$reminder_header);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
$result = _room_reservations_set_variable('reminder_owner_text_sms',
|
||
|
$reminder_owner);
|
||
|
if (!$result) {
|
||
|
$errors = TRUE;
|
||
|
}
|
||
|
if ($errors) {
|
||
|
drupal_set_message($error, 'error');
|
||
|
}
|
||
|
else {
|
||
|
drupal_set_message($confirmation);
|
||
|
}
|
||
|
}
|