<?php
/*=====================================================================*\
|| ###################################################################
|| # Kalens [#]version[#]
|| # Copyright ©2002-[#]year[#] Iris Studios, Inc.
|| #
|| # This program is free software; you can redistribute it and/or modify
|| # it under the terms of the GNU General Public License as published by
|| # the Free Software Foundation; version [#]gpl[#] of the License.
|| #
|| # This program is distributed in the hope that it will be useful, but
|| # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|| # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|| # more details.
|| #
|| # You should have received a copy of the GNU General Public License along
|| # with this program; if not, write to the Free Software Foundation, Inc.,
|| # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|| ###################################################################
\*=====================================================================*/
// ######################### REQUIRE BACKEND #########################
define('SVN', '$Id$');
$apptemplates = array(
'editor_dropdown_year',
'editor_dropdown_month',
'editor_dropdown_time',
'editor_checkbox_days',
'event'
);
require_once('./global.php');
require_once('./includes/date.php');
require_once('./includes/event.php');
$Event_Store = new Event_Store_Handler();
// ######################## START MAIN SCRIPT ########################
if (!$kalens->userinfo['userid'] AND !$kalens->options['guestcanedit'])
{
print_no_permission();
}
// ######################### ADD EVENT ACTION ########################
if ($_POST['do'] == 'insert')
{
$kalens->input_clean_array(array(
'calendarid' => TYPE_UINT,
'st_time' => TYPE_FLOAT,
'en_time' => TYPE_FLOAT,
'st_min' => TYPE_UINT,
'en_min' => TYPE_UINT,
'st_month' => TYPE_UINT,
'st_day' => TYPE_UINT,
'st_year' => TYPE_UINT,
'en_month' => TYPE_UINT,
'en_day' => TYPE_UINT,
'en_year' => TYPE_UINT,
'recur_type' => TYPE_INT,
'daily_xdays' => TYPE_INT,
'weekly_xweeks' => TYPE_INT,
'monthly_xmonths' => TYPE_INT,
'allday' => TYPE_BOOL
));
if (!$kalens->in['allday'])
{
$kalens->in['allday'] = 0;
}
// So people can't submit malicious code
if (!verify_calendar_permissions($kalens->in['calendarid'], 0))
{
print_no_permission();
}
// ###################################################################
// Get the user's date and time for this event, no formatting
// Just POST parsing
// The hours in seconds
$hourbits['start'] = $kalens->in['st_time'] * SECONDS_IN_HOUR;
$hourbits['end'] = $kalens->in['en_time'] * SECONDS_IN_HOUR;
if ($hourbits['end'] == 0 AND $hourbits['start'] > $hourbits['end'])
{
$hourbits['end'] = SECONDS_IN_DAY;
$kalens->in['en_day'] = $kalens->in['st_day'] + 1;
}
// Minutes in seconds
$minbits['start'] = $kalens->in['st_min'] * SECONDS_IN_MIN;
$minbits['end'] = $kalens->in['en_min'] * SECONDS_IN_MIN;
$timebits['start'] = ($kalens->in['st_time'] ? $hourbits['start'] + $minbits['start'] : 0);
$timebits['end'] = ($kalens->in['en_time'] ? $hourbits['end'] + $minbits['end'] : ($kalens->in['en_time'] == 0 ? $hourbits['end'] + $minbits['end'] : 0));
// Compute the date UNIX timestamp
$start_date = gmmktime(00, 00, 00, $kalens->in['st_month'], $kalens->in['st_day'], $kalens->in['st_year']);
$end_date = ($kalens->in['en_day'] ? gmmktime(00, 00, 00, $kalens->in['en_month'], $kalens->in['en_day'], $kalens->in['en_year']) : $start_date);
// Process the final stamps
$datebits['start'] = process_gmt_date($start_date, $timebits['start']);
$datebits['end'] = process_gmt_date($end_date, $timebits['end']);
$type_int = $system['events']['type'][ $kalens->in['type'] ];
switch ($kalens->in['type'])
{
// ###################################################################
// Single day event
case $system['events']['type'][0]:
// Set the recurrance pattern to none
$pattern['pattern'] = '';
$pattern['type'] = $system['events']['recurring']['none'];
// Error handling
if (empty($kalens->in['st_day']))
{
$error[] = $lang->string('The date(s) you specified is/are not valid.');
}
if ($timebits['start'] > $timebits['end'])
{
$error[] = $lang->string('The times you specified are not valid.');
}
break;
// ###################################################################
// Ranged event
case $system['events']['type'][1]:
// Set the recurrance pattern to single-day recurring pattern
$pattern['pattern'] = '1|';
$pattern['type'] = $system['events']['recurring']['daily'];
$kalens->in['allday'] = 1;
break;
// ###################################################################
// Recurring event
case $system['events']['type'][2]:
// Start the date creation
$start_date = convert_date_to_gmt(gmmktime($hourbits['start'], $kalens->in['st_min'], 00, $kalens->in['st_month'], $kalens->in['st_day'], $kalens->in['st_year']));
$end_date = convert_date_to_gmt(gmmktime($hourbits['end'], $kalens->in['en_min'], 00, $kalens->in['en_month'], $kalens->in['en_day'], $kalens->in['en_year']));
// -------------------------------------------------------------------
// Daily recurrence
if ($kalens->in['recur_type'] == $system['events']['recurring']['daily'])
{
$pattern['pattern'] = $kalens->in['daily_xdays'] . '|';
$pattern['type'] = $system['events']['recurring']['daily'];
if (empty($kalens->in['daily_xdays']))
{
$error[] = $lang->string('You have not specified the number of days for which to repeat.');
}
}
// -------------------------------------------------------------------
// Weekly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['weekly'])
{
$pattern['type'] = $system['events']['recurring']['weekly'];
// Run through the selected days to get the pattern data
foreach ($system['days'] AS $key => $value)
{
if (!is_int($_value) AND $_POST["$value"])
{
$selected_days[] = $system['days']["$value"];
}
}
if (is_array($selected_days))
{
foreach ($selected_days AS $value)
{
$day_bitfield_value = $day_bitfield_value + $value;
}
}
if ($day_bitfield_value == 0)
{
$error[] = $lang->string('You have not specified any days to repeat this event on.');
}
if (empty($kalens->in['weekly_xweeks']))
{
$error[] = $lang->string('You have not set the number of weeks for which this event to recur.');
}
// Now that we have the selected days, go ahead and create the pattern
$pattern['pattern'] = $kalens->in['weekly_xweeks'] . "|$day_bitfield_value";
}
// -------------------------------------------------------------------
// Monthly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['monthly'])
{
$pattern['pattern'] = '|' . $kalens->in['monthly_xmonths'];
$pattern['type'] = $system['events']['recurring']['monthly'];
if ($kalens->in['monthly_xmonths'] == 0)
{
$error[] = $lang->string('You have not specified a valid recurring pattern.');
}
}
// -------------------------------------------------------------------
// Yearly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['yearly'])
{
$pattern['pattern'] = '';
$pattern['type'] = $system['events']['recurring']['yearly'];
}
break;
}
if (empty($kalens->in['title']))
{
$error[] = $lang->string('You have not specified a title for this event.');
}
if ($end_date <= $start_date AND $kalens->in['type'] != $system['events']['type'][0])
{
$error[] = $lang->string('The times you specified are not valid.');
}
if ((empty($kalens->in['st_day']) OR empty($kalens->in['en_day'])) AND $kalens->in['type'] != $system['events']['type'][0])
{
$error[] = $lang->string('The date(s) you specified is/are not valid.');
}
if ($kalens->in['st_min'] > 60 OR $kalens->in['en_min'] > 60)
{
$error[] = $lang->string('The minutes you entered are invalid, they must be under <em>60</em>.');
}
// Process all of the errors
$errorblock = print_process_errors($error);
if (!$page_has_errors)
{
// Finally insert the event into the database
// #*# Consider putting this in the event handler class
$db->query("
INSERT INTO " . TABLE_PREFIX . "event
(
userid,
calendarid,
type,
title,
description,
startline,
endline,
recur,
recurpattern,
stime,
etime,
allday
)
VALUES
(
" . $kalens->userinfo['userid'] . ",
" . $kalens->in['calendarid'] . ",
$type_int,
'" . $kalens->in['title'] . "',
'" . $kalens->in['description'] . "',
" . $datebits['start']['date'] . ",
" . $datebits['end']['date'] . ",
$pattern[type],
'$pattern[pattern]',
" . $datebits['start']['time'] . ",
" . $datebits['end']['time'] . ",
" . $kalens->in['allday'] . "
)"
);
$Event_Store->type = 'insert';
$Event_Store->insert_event($type_int, $datebits, $pattern, $kalens->in['title'], $db->insert_id(), $kalens->in['allday'], $kalens->in['calendarid']);
print_redirect(sprintf($lang->string('%1$s successfully created. Please wait while you are redirected.'), $lang->string('Event')), "showcalendar.php?id=" . $kalens->in['calendarid'] . "&month=" . $kalens->in['st_month'] . "&year=" . $kalens->in['st_year']);
}
}
// ############################ ADD EVENT ############################
if ($_REQUEST['do'] == 'add' AND empty($_POST['do']))
{
$kalens->input_clean('id', TYPE_UINT);
store_date_args();
if (!empty($_REQUEST['id']))
{
if (!verify_calendar_permissions($kalens->in['id'], 0))
{
print_no_permission();
}
if ($eventinfo['allday'])
{
$checked['allday'] = ' ' . CHECKED;
$show['times'] = ' style="display:none"';
}
$eventinfo['calendarid'] = $kalens->in['id'];
$eventinfo['dateargs'] = unstore_date_args('arr');
// List of years
$eventinfo['st_yearlist'] = construct_year_list(($eventinfo['dateargs']['year'] ? $eventinfo['dateargs']['year'] : pcdate('Y', TIMENOW)));
$eventinfo['en_yearlist'] = construct_year_list(($eventinfo['dateargs']['year'] ? $eventinfo['dateargs']['year'] : pcdate('Y', TIMENOW)));
// List of months
$eventinfo['st_monthlist'] = construct_month_list(($eventinfo['dateargs']['month'] ? $eventinfo['dateargs']['month'] : pcdate('m', TIMENOW)), $system['months']);
$eventinfo['en_monthlist'] = construct_month_list(($eventinfo['dateargs']['month'] ? $eventinfo['dateargs']['month'] : pcdate('m', TIMENOW)), $system['months']);
// Time lists
$eventinfo['st_time'] = construct_time_list(pcdate('G', TIMENOW));
$eventinfo['en_time'] = construct_time_list(pcdate('G', TIMENOW) + 1);
// Today and tomorrow
$eventinfo['today'] = ($eventinfo['dateargs']['day'] ? $eventinfo['dateargs']['day'] : pcdate('j', TIMENOW));
$eventinfo['tomorrow'] = (($eventinfo['today'] + 1) <= 31 ? $eventinfo['today'] + 1 : 1);
// Date checkboxes for recurring events
foreach ($system['days'] AS $_key => $_value)
{
if (!is_int($_value))
{
$daylist['index'] = $_key;
$daylist['name'] = $_value;
eval('$eventinfo[daylist] .= "' . $template->fetch('editor_checkbox_days') . '";');
}
}
$eventinfo['my_monthlist'] = construct_month_list(($page_has_errors ? $yearly_xmonth : pcdate('m', TIMENOW)), $system['months']);
$calendarinfo = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "calendar WHERE calendarid = $eventinfo[calendarid]");
$eventinfo['formaction'] = 'insert';
// Finally print out the editor template
$display['times'] = 'block';
$display['end_date'] = 'none';
$display['sing'] = 'block';
$display['recur'] = 'none';
$display['recur_1'] = 'block';
$display['recur_2'] = 'none';
$display['recur_3'] = 'none';
$display['recur_4'] = 'none';
$display['type_selected_sing'] = CHECKED;
$display['type_selected_range'] = '';
$display['type_selected_recur'] = '';
$eventinfo['st_day'] = $eventinfo['today'];
$eventinfo['en_day'] = $eventinfo['tomorrow'];
$eventinfo['st_min'] = '00';
$eventinfo['en_min'] = '00';
$eventinfo['recur_type_1_selected'] = _SELECTED;
$eventinfo['daily_type_xdays_selected'] = _CHECKED;
$eventinfo['daily_xdays_value'] = '1';
$eventinfo['weekly_xweeks_value'] = '1';
$eventinfo['monthly_xdays'] = '1';
$eventinfo['monthly_xmonths'] = '1';
$eventinfo['yearly_xday'] = '1';
$navbits = construct_navbar(array($calendarinfo['title'] => "showcalendar.php?id=$calendarinfo[calendarid]", sprintf($lang->string('Add %1$s'), $lang->string('Event'))));
eval('$navbar = "' . $template->fetch('navbar') . '";');
eval('$template->flush("' . $template->fetch('event') . '");');
}
else
{
print_no_permission();
}
}
// ######################## EDIT EVENT ACTION ########################
if ($_POST['do'] == 'update')
{
$kalens->input_clean_array(array(
'eventid' => TYPE_UINT,
'st_time' => TYPE_FLOAT,
'en_time' => TYPE_FLOAT,
'st_min' => TYPE_UINT,
'en_min' => TYPE_UINT,
'st_month' => TYPE_UINT,
'st_day' => TYPE_UINT,
'st_year' => TYPE_UINT,
'en_month' => TYPE_UINT,
'en_day' => TYPE_UINT,
'en_year' => TYPE_UINT,
'recur_type' => TYPE_INT,
'daily_xdays' => TYPE_INT,
'weekly_xweeks' => TYPE_INT,
'monthly_xmonths' => TYPE_INT,
'allday' => TYPE_BOOL
));
if (!$kalens->in['allday'])
{
$kalens->in['allday'] = 0;
}
// Prevent malicious database injections
if (!verify_calendar_permissions(0, $kalens->in['eventid']))
{
print_no_permission();
}
$eventinfo = $db->query_first("
SELECT event.*, calendar.*
FROM " . TABLE_PREFIX . "event AS event, " . TABLE_PREFIX . "calendar AS calendar
WHERE event.calendarid = calendar.calendarid
AND event.eventid = " . $kalens->in['eventid']
);
// ###################################################################
// Process POST'd data and that's all :-)
// Hours go into seconds
$hourbits['start'] = $kalens->in['st_time'] * SECONDS_IN_HOUR;
$hourbits['end'] = $kalens->in['en_time'] * SECONDS_IN_HOUR;
if ($hourbits['end'] == 0 AND $hourbits['start'] > $hourbits['end'])
{
$hourbits['end'] = SECONDS_IN_DAY;
$kalens->in['en_day'] = $kalens->in['st_day'] + 1;
}
// Minutes go into seconds
$minbits['start'] = $kalens->in['st_min'] * SECONDS_IN_MIN;
$minbits['end'] = $kalens->in['en_min'] * SECONDS_IN_MIN;
$timebits['start'] = ($kalens->in['st_time'] ? $hourbits['start'] + $minbits['start'] : 0);
$timebits['end'] = ($kalens->in['en_time'] ? $hourbits['end'] + $minbits['end'] : ($kalens->in['en_time'] == 0 ? $hourbits['end'] + $minbits['end'] : 0));
// Compute the UNIX timetsamp
$start_date = gmmktime(00, 00, 00, $kalens->in['st_month'], $kalens->in['st_day'], $kalens->in['st_year']);
$end_date = ($kalens->in['en_day'] ? gmmktime(00, 00, 00, $kalens->in['en_month'], $kalens->in['en_day'], $kalens->in['en_year'], $kalens->in['start_date']) : 0);
// Process the final stamps
$datebits['start'] = process_gmt_date($start_date, $timebits['start']);
$datebits['end'] = process_gmt_date($end_date, $timebits['end']);
$type_int = $system['events']['type'][ $kalens->in['type'] ];
switch ($kalens->in['type'])
{
// ###################################################################
// Single-day event
case $system['events']['type'][0]:
// Set the recurrance pattern to none
$pattern['pattern'] = '';
$pattern['type'] = $system['events']['recurring']['none'];
// Error handling
if (empty($kalens->in['st_day']))
{
$error[] = $lang->string('The date(s) you specified is/are not valid.');
}
if ($timebits['start'] > $timebits['end'])
{
$error[] = $lang->string('The times you specified are not valid.');
}
break;
// ###################################################################
// Ranged event
case $system['events']['type'][1]:
// Set the recurrance pattern to single-day recurring pattern
$pattern['pattern'] = '1|';
$pattern['type'] = $system['events']['recurring']['daily'];
$kalens->in['allday'] = 1;
break;
// ###################################################################
// Recurring event
case $system['events']['type'][2]:
// Start the date creation
$start_date = convert_date_to_gmt(gmmktime($hourbits['start'], $kalens->in['st_min'], 00, $kalens->in['st_month'], $kalens->in['st_day'], $kalens->in['st_year']));
$end_date = convert_date_to_gmt(gmmktime($hourbits['end'], $kalens->in['en_min'], 00, $kalens->in['en_month'], $kalens->in['en_day'], $kalens->in['en_year']));
// -------------------------------------------------------------------
// Daily recurrence
if ($kalens->in['recur_type'] == $system['events']['recurring']['daily'])
{
$pattern['pattern'] = $kalens->in['daily_xdays'] . '|';
$pattern['type'] = $system['events']['recurring']['daily'];
if (empty($kalens->in['daily_xdays']))
{
$error[] = $lang->string('You have not specified the number of days for which to repeat.');
}
}
// -------------------------------------------------------------------
// Weekly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['weekly'])
{
$pattern['type'] = $system['events']['recurring']['weekly'];
// Run through the selected days to get the pattern data
foreach ($system['days'] AS $key => $value)
{
if (!is_int($value) AND $_POST["$value"])
{
$selected_days[] = $system['days']["$value"];
}
}
if (is_array($selected_days))
{
foreach ($selected_days AS $value)
{
$day_bitfield_value = $day_bitfield_value + $value;
}
}
if ($day_bitfield_value == 0)
{
$error[] = $lang->string('You have not specified any days to repeat this event on.');
}
if (empty($kalens->in['weekly_xweeks']))
{
$error[] = $lang->string('You have not set the number of weeks for which this event to recur.');
}
// Now that we have the selected days, go ahead and create the pattern
$pattern['pattern'] = $kalens->in['weekly_xweeks'] . "|$day_bitfield_value";
}
// -------------------------------------------------------------------
// Monthly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['monthly'])
{
$pattern['pattern'] = '|' . $kalens->in['monthly_xmonths'];
$pattern['type'] = $system['events']['recurring']['monthly'];
if ($kalens->in['monthly_xmonths'] == 0)
{
$error[] = $lang->string('You have not specified a valid recurring pattern.');
}
}
// -------------------------------------------------------------------
// Yearly recurrence
else if ($kalens->in['recur_type'] == $system['events']['recurring']['yearly'])
{
$pattern['pattern'] = '';
$pattern['type'] = $system['events']['recurring']['yearly'];
}
break;
}
if (empty($kalens->in['title']))
{
$error[] = $lang->string('You have not specified a title for this event.');
}
if ($end_date <= $start_date AND $kalens->in['type'] != $system['events']['type'][0])
{
$error[] = $lang->string('The times you specified are not valid.');
}
if ((empty($kalens->in['st_day']) OR empty($kalens->in['en_day'])) AND $kalens->in['type'] != $system['events']['type'][0])
{
$error[] = $lang->string('The date(s) you specified is/are not valid.');
}
if ($kalens->in['st_min'] > 60 OR $kalens->in['en_min'] > 60)
{
$error[] = $lang->string('The minutes you entered are invalid, they must be under <em>60</em>.');
}
// Process all of the errors
$errorblock = print_process_errors($error);
if (!$page_has_errors)
{
// Send the final SQL query over
$db->query("
UPDATE " . TABLE_PREFIX . "event
SET
type = $type_int,
title = '" . $kalens->in['title'] . "',
description = '" . $kalens->in['description'] . "',
startline = " . $datebits['start']['date'] . ",
endline = " . $datebits['end']['date'] . ",
stime = " . $datebits['start']['time'] . ",
etime = " . $datebits['end']['time'] . ",
recur = $pattern[type],
recurpattern = '$pattern[pattern]',
allday = " . $kalens->in['allday'] . "
WHERE eventid = " . $kalens->in['eventid']
);
$Event_Store->type = 'update';
$Event_Store->insert_event($type_int, $datebits, $pattern, $kalens->in['title'], $kalens->in['eventid'], $kalens->in['allday'], $eventinfo['calendarid']);
print_redirect(sprintf($lang->string('%1$s has been updated. Please wait for a redirect to occur.'), $lang->string('Event')), "showcalendar.php?id=$eventinfo[calendarid]&month=" . $kalens->in['st_month'] . "&year=" . $kalens->in['st_year']);
}
}
// ############################ EDIT EVENT ###########################
if (($_REQUEST['do'] == 'edit' AND empty($_POST['do'])))
{
$show['edit'] = true;
$kalens->input_clean('id', TYPE_UINT);
if (!empty($_REQUEST['id']))
{
if (!verify_calendar_permissions(0, $kalens->in['id']))
{
print_no_permission();
}
$eventinfo = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "event WHERE eventid = " . $kalens->in['id']);
$eventinfo['type'] = $system['events']['type']["$eventinfo[type]"];
$eventinfo['startstamp'] = process_user_date($eventinfo['startline'], $eventinfo['stime']);
$eventinfo['endstamp'] = process_user_date($eventinfo['endline'], $eventinfo['etime']);
$eventinfo['st_day'] = pcdate('j', $eventinfo['startstamp']);
$eventinfo['en_day'] = pcdate('j', $eventinfo['endstamp']);
// List of years
$eventinfo['st_yearlist'] = construct_year_list(pcdate('Y', $eventinfo['startstamp']));
$eventinfo['en_yearlist'] = construct_year_list(pcdate('Y', $eventinfo['endstamp']));
// List of months
$eventinfo['st_monthlist'] = construct_month_list(pcdate('m', $eventinfo['startstamp']), $system['months']);
$eventinfo['en_monthlist'] = construct_month_list(pcdate('m', $eventinfo['endstamp']), $system['months']);
// Print out a list of times
$eventinfo['st_time'] = construct_time_list(pcdate('G', $eventinfo['startstamp']));
$eventinfo['en_time'] = construct_time_list(pcdate('G', $eventinfo['endstamp']));
// List of minutes
$eventinfo['st_min'] = pcdate('i', $eventinfo['startstamp']);
$eventinfo['en_min'] = pcdate('i', $eventinfo['endstamp']);
if ($eventinfo['allday'])
{
$checked['allday'] = ' ' . CHECKED;
$show['times'] = ' style="display:none"';
}
$eventinfo['st_suffix'] = $eventinfo['st_suffixlist'];
$eventinfo['en_suffix'] = $eventinfo['en_suffixlist'];
// Populate the defaults, overwrite these with the DB values
$eventinfo['daily_xdays_value'] = '2';
$eventinfo['weekly_xweeks_value'] = '1';
$eventinfo['monthly_xdays'] = '1';
$eventinfo['monthly_xmonths'] = '2';
$eventinfo['yearly_xday'] = '2';
foreach ($system['days'] AS $_key => $_value)
{
$daylist['name'] = $_value;
$daylist['index'] = $_key;
if (!is_int($_value))
{
eval('$eventinfo[daylist] .= "' . $template->fetch('editor_checkbox_days') . '";');
}
}
$eventinfo['my_monthlist'] = construct_month_list(pcdate('m', TIMENOW), $system['months']);
$calendarinfo = $db->query_first("SELECT * FROM " . TABLE_PREFIX . "calendar WHERE calendarid = $eventinfo[calendarid]");
$navbits = construct_navbar(array($calendarinfo['title'] => "showcalendar.php?id=$calendarinfo[calendarid]", sprintf($lang->string('Edit %1$s'), $lang->string('Event')) => "event.php?do=edit&id=$eventinfo[eventid]", $eventinfo['title']));
eval('$navbar = "' . $template->fetch('navbar') . '";');
$eventinfo['formaction'] = 'update';
// Finally print out the editor template
$display['recur_1'] = 'block';
$display['recur_2'] = 'none';
$display['recur_3'] = 'none';
$display['recur_4'] = 'none';
switch ($eventinfo['type'])
{
// ###################################################################
// Single-day event
case $system['events']['type'][0]:
$display['type_selected_sing'] = CHECKED;
$display['end_date'] = 'none';
$display['times'] = ($eventinfo['allday'] ? 'none' : 'block');
$display['allday_box'] = 'block';
$display['allday'] = ($eventinfo['allday'] ? CHECKED : '');
$display['recur'] = 'none';
break;
// ###################################################################
// Ranged event
case $system['events']['type'][1]:
$display['type_selected_range'] = CHECKED;
$display['end_date'] = 'block';
$display['times'] = 'none';
$display['allday_box'] = 'none';
$display['allday'] = CHECKED;
$display['recur'] = 'none';
break;
// ###################################################################
// Recurring event
case $system['events']['type'][2]:
$display['type_selected_recur'] = CHECKED;
$display['end_date'] = 'block';
$display['times'] = ($eventinfo['allday'] ? 'none' : 'block');
$display['allday_box'] = 'block';
$display['allday'] = ($eventinfo['allday'] ? CHECKED : '');
$display['recur'] = 'block';
$display['recur_1'] = 'none';
// -------------------------------------------------------------------
// Daily recurrence
if ($eventinfo['recur'] == $system['events']['recurring']['daily'])
{
$display['recur_type_1'] = SELECTED;
$display['recur_1'] = 'block';
// Weekdays
if ($eventinfo['recurpattern'] == "1|{$system[patterns][weekday]}")
{
$eventinfo['daily_type_weekdays_selected'] = CHECKED;
}
else
{
$pattern = explode('|', $eventinfo['recurpattern']);
$eventinfo['daily_xdays_value'] = $pattern[0];
$eventinfo['daily_type_xdays_selected'] = CHECKED;
}
}
// -------------------------------------------------------------------
// Weekly recurrence
else if ($eventinfo['recur'] == $system['events']['recurring']['weekly'])
{
$pattern = explode('|', $eventinfo['recurpattern']);
$eventinfo['weekly_xweeks_value'] = reset($pattern);
$display['recur_type_2'] = SELECTED;
$display['recur_2'] = 'block';
// Remove the default day list and then recreate it
$eventinfo['daylist'] = '';
foreach ($system['days'] AS $_key => $_value)
{
$daylist['name'] = $_value;
$daylist['index'] = $_key;
if (!is_int($_value))
{
if (($_key & end($pattern)) != 0)
{
$daylist['selected'] = CHECKED;
}
else
{
$daylist['selected'] = '';
}
eval('$eventinfo[daylist] .= "' . $template->fetch('editor_checkbox_days') . '";');
}
}
}
// -------------------------------------------------------------------
// Monthly recurrence
else if ($eventinfo['recur'] == $system['events']['recurring']['monthly'])
{
$pattern = explode('|', $eventinfo['recurpattern']);
$display['recur_type_3'] = SELECTED;
$display['recur_3'] = 'block';
$eventinfo['monthly_xmonths'] = end($pattern);
$display['end_day'] = ' style="display:none"';
}
// -------------------------------------------------------------------
// Yearly recurrence
else if ($eventinfo['recur'] == $system['events']['recurring']['yearly'])
{
$pattern = explode('|', $eventinfo['recurpattern']);
$display['recur_type_4'] = SELECTED;
$display['recur_4'] = 'block';
$display['end_day'] = ' style="display:none"';
$display['end_month'] = ' style="display:none"';
}
else
{
}
break;
}
eval('$template->flush("' . $template->fetch('event') . '");');
}
}
// ########################### DELETE EVENT ##########################
if ($_REQUEST['do'] == 'delete')
{
$kalens->input_clean('id', TYPE_UINT);
if (!empty($kalens->in['id']))
{
if (!verify_calendar_permissions(0, $kalens->in['id']))
{
print_no_permission();
}
$get_cal_id = $db->query_first("SELECT " . TABLE_PREFIX . "calendarid FROM event WHERE eventid = " . $kalens->in['id']);
$db->query("DELETE FROM " . TABLE_PREFIX . "event WHERE eventid = " . $kalens->in['id']);
$db->query("DELETE FROM " . TABLE_PREFIX . "eventstore WHERE groupid = " . $kalens->in['id']);
print_redirect(sprintf($lang->string('%1$s has been deleted successfully.'), $lang->string('Event')), "showcalendar.php?id=$get_cal_id[calendarid]");
}
}
/*=====================================================================*\
|| ###################################################################
|| # $HeadURL$
|| # $Id$
|| ###################################################################
\*=====================================================================*/
?>