2000-08-18 05:24:22 +02:00
< ? php
/************************************************************************** \
* phpGroupWare - Calendar *
* http :// www . phpgroupware . org *
* Based on Webcalendar by Craig Knudsen < cknudsen @ radix . net > *
* http :// www . radix . net /~ cknudsen *
2001-01-17 13:35:43 +01:00
* Modified by Mark Peters < skeeter @ phpgroupware . org > *
2000-08-18 05:24:22 +02:00
* -------------------------------------------- *
* 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 ; either version 2 of the License , or ( at your *
* option ) any later version . *
\ **************************************************************************/
/* $Id$ */
2001-02-18 23:33:10 +01:00
$phpgw_flags = Array (
'currentapp' => 'calendar' ,
'noheader' => True ,
'nonavbar' => True ,
'enable_nextmatchs_class' => True ,
'noappheader' => True ,
'noappfooter' => True
);
$phpgw_info [ 'flags' ] = $phpgw_flags ;
include ( '../header.inc.php' );
$cal_info = CreateObject ( 'calendar.calendar_item' );
2001-03-10 05:48:19 +01:00
function validate ( $event )
2001-02-18 23:33:10 +01:00
{
2001-03-04 05:13:04 +01:00
global $phpgw ;
2001-02-18 23:33:10 +01:00
$error = 0 ;
// do a little form verifying
2001-03-10 05:48:19 +01:00
if ( $event -> title == '' )
2001-02-18 23:33:10 +01:00
{
$error = 40 ;
}
2001-03-10 05:48:19 +01:00
elseif (( $phpgw -> calendar -> time_valid ( $event -> start -> hour , $event -> start -> min , 0 ) == False ) || ( $phpgw -> calendar -> time_valid ( $event -> end -> hour , $event -> end -> min , 0 ) == False ))
2001-02-18 23:33:10 +01:00
{
$error = 41 ;
}
2001-03-10 05:48:19 +01:00
elseif (( $phpgw -> calendar -> date_valid ( $event -> start -> year , $event -> start -> month , $event -> start -> mday ) == False ) || ( $phpgw -> calendar -> date_valid ( $event -> end -> year , $event -> end -> month , $event -> end -> mday ) == False ) || ( $phpgw -> calendar -> date_compare ( $event -> start -> year , $event -> start -> month , $event -> start -> mday , $event -> end -> year , $event -> end -> month , $event -> end -> mday ) == - 1 ))
2001-02-18 23:33:10 +01:00
{
$error = 42 ;
}
2001-03-10 05:48:19 +01:00
elseif ( $phpgw -> calendar -> date_compare ( $event -> start -> year , $event -> start -> month , $event -> start -> mday , $event -> end -> year , $event -> end -> month , $event -> end -> mday ) == 0 )
2001-02-18 23:33:10 +01:00
{
2001-03-10 05:48:19 +01:00
if ( $phpgw -> calendar -> time_compare ( $event -> start -> hour , $event -> start -> min , 0 , $event -> end -> hour , $event -> end -> min , 0 ) == 1 )
2001-02-18 23:33:10 +01:00
{
$error = 42 ;
}
}
return $error ;
}
if ( ! isset ( $readsess ))
{
2001-03-10 05:48:19 +01:00
if ( $phpgw_info [ 'user' ][ 'preferences' ][ 'common' ][ 'timeformat' ] == '12' )
{
if ( $start [ ampm ] == 'pm' )
{
if ( $start [ hour ] <> 12 )
{
$start [ hour ] += 12 ;
}
}
elseif ( $start [ ampm ] == 'am' )
{
if ( $start [ hour ] == 12 )
{
$start [ hour ] -= 12 ;
}
}
2001-03-22 02:36:47 +01:00
if ( $start [ hour ] > 24 )
{
$start [ hour ] -= 12 ;
}
2001-03-10 05:48:19 +01:00
if ( $end [ ampm ] == 'pm' )
{
if ( $end [ hour ] <> 12 )
{
$end [ hour ] += 12 ;
}
}
elseif ( $end [ ampm ] == 'am' )
{
if ( $end [ hour ] == 12 )
{
$end [ hour ] -= 12 ;
}
}
2001-03-22 02:36:47 +01:00
if ( $end [ hour ] > 24 )
{
$end [ hour ] -= 12 ;
}
2001-03-10 05:48:19 +01:00
}
2001-03-15 03:46:04 +01:00
if ( ! isset ( $private ))
{
$private = 'public' ;
}
2001-03-10 05:48:19 +01:00
$cal_stream = $phpgw -> calendar -> open ( 'INBOX' , intval ( $owner ), '' );
$phpgw -> calendar -> event_init ( $cal_stream );
$phpgw -> calendar -> event_set_category ( $cal_stream , '' );
$phpgw -> calendar -> event_set_title ( $cal_stream , $title );
$phpgw -> calendar -> event_set_description ( $cal_stream , $description );
$phpgw -> calendar -> event_set_start ( $cal_stream , $start [ year ], $start [ month ], $start [ mday ], $start [ hour ], $start [ min ], 0 );
$phpgw -> calendar -> event_set_end ( $cal_stream , $end [ year ], $end [ month ], $end [ mday ], $end [ hour ], $end [ min ], 0 );
2001-03-15 03:46:04 +01:00
$phpgw -> calendar -> event_set_class ( $cal_stream ,( $private == 'public' ));
2001-03-10 05:48:19 +01:00
if ( $id != 0 )
2001-02-18 23:33:10 +01:00
{
2001-03-10 05:48:19 +01:00
$phpgw -> calendar -> event -> id = $id ;
2001-02-18 23:33:10 +01:00
}
2001-03-10 05:48:19 +01:00
switch ( $recur_type )
{
case RECUR_NONE :
$phpgw -> calendar -> event_set_recur_none ( $cal_stream );
break ;
case RECUR_DAILY :
$phpgw -> calendar -> event_set_recur_daily ( $cal_stream , $recur_enddate [ year ], $recur_enddate [ month ], $recur_enddate [ mday ], $recur_interval );
break ;
case RECUR_WEEKLY :
$phpgw -> calendar -> event_set_recur_weekly ( $cal_stream , $recur_enddate [ year ], $recur_enddate [ month ], $recur_enddate [ mday ], $recur_interval , $recur_data );
break ;
case RECUR_MONTHLY_MDAY :
$phpgw -> calendar -> event_set_recur_mday ( $cal_stream , $recur_enddate [ year ], $recur_enddate [ month ], $recur_enddate [ mday ], $recur_interval );
break ;
case RECUR_MONTHLY_WDAY :
$phpgw -> calendar -> event_set_recur_wday ( $cal_stream , $recur_enddate [ year ], $recur_enddate [ month ], $recur_enddate [ mday ], $recur_interval );
break ;
case RECUR_YEARLY :
$phpgw -> calendar -> event_set_recur_yearly ( $cal_stream , $recur_enddate [ year ], $recur_enddate [ month ], $recur_enddate [ mday ], $recur_interval );
break ;
}
2001-02-19 00:29:12 +01:00
2001-03-10 05:48:19 +01:00
$parts = $participants ;
2001-02-19 00:29:12 +01:00
$part = Array ();
for ( $i = 0 ; $i < count ( $parts ); $i ++ )
{
$acct_type = $phpgw -> accounts -> get_type ( intval ( $parts [ $i ]));
if ( $acct_type == 'u' )
{
$part [ $parts [ $i ]] = 1 ;
}
elseif ( $acct_type == 'g' )
{
$acct = CreateObject ( 'phpgwapi.accounts' , intval ( $parts [ $i ]));
$members = $acct -> members ( intval ( $parts [ $i ]));
unset ( $acct );
if ( $members == False )
{
continue ;
}
while ( $member = each ( $members ))
{
$part [ $member [ 1 ][ 'account_id' ]] = 1 ;
}
}
}
2001-03-10 05:48:19 +01:00
$participants = Array ();
2001-02-19 00:29:12 +01:00
while ( $parts = each ( $part ))
{
2001-03-10 05:48:19 +01:00
$participants [] = $parts [ 0 ];
2001-02-19 00:29:12 +01:00
}
2001-03-04 05:13:04 +01:00
2001-03-10 05:48:19 +01:00
$phpgw -> calendar -> event_set_participants ( $cal_stream , $participants );
2001-03-04 05:13:04 +01:00
2001-03-16 04:02:03 +01:00
$phpgw -> calendar -> event -> priority = intval ( $priority );
2001-03-10 05:48:19 +01:00
$event = $phpgw -> calendar -> event ;
2001-02-18 23:33:10 +01:00
2001-03-10 05:48:19 +01:00
$phpgw -> session -> appsession ( 'entry' , 'calendar' , $event );
2001-02-18 23:33:10 +01:00
2001-03-10 05:48:19 +01:00
$datetime_check = validate ( $event );
2001-02-18 23:33:10 +01:00
2001-03-10 05:48:19 +01:00
$tz_offset = (( 60 * 60 ) * intval ( $phpgw_info [ 'user' ][ 'preferences' ][ 'common' ][ 'tz_offset' ]));
$start = mktime ( $event -> start -> hour , $event -> start -> min , $event -> start -> sec , $event -> start -> month , $event -> start -> mday , $event -> start -> year ) - $tz_offset ;
$end = mktime ( $event -> end -> hour , $event -> end -> min , $event -> end -> sec , $event -> end -> month , $event -> end -> mday , $event -> end -> year ) - $tz_offset ;
$overlapping_events = $phpgw -> calendar -> overlap ( $start , $end , $event -> participants , $event -> owner , $event -> id );
2001-02-18 23:33:10 +01:00
}
else
{
2001-03-10 05:48:19 +01:00
$event = $phpgw -> session -> appsession ( 'entry' , 'calendar' );
2001-03-18 19:32:54 +01:00
$phpgw -> calendar -> event = $event ;
2001-02-18 23:33:10 +01:00
}
if ( $datetime_check )
{
2001-03-09 13:23:12 +01:00
Header ( 'Location: ' . $phpgw -> link ( '/' . $phpgw_info [ 'flags' ][ 'currentapp' ] . '/edit_entry.php' , 'readsess=' . $cal_info -> id . '&cd=' . $datetime_check ));
2001-02-18 23:33:10 +01:00
$phpgw -> common -> phpgw_exit ();
}
elseif ( $overlapping_events )
{
$phpgw -> common -> phpgw_header ();
echo parse_navbar ();
$p = CreateObject ( 'phpgwapi.Template' , $phpgw -> common -> get_tpl_dir ( 'calendar' ));
$templates = Array (
'overlap' => 'overlap.tpl' ,
'form_button' => 'form_button_script.tpl'
);
$p -> set_file ( $templates );
$p -> set_var ( 'color' , $phpgw_info [ 'theme' ][ 'bg_text' ]);
2001-03-14 13:21:52 +01:00
$cal_stream = $phpgw -> calendar -> open ( 'INBOX' , intval ( $owner ), '' );
2001-02-18 23:33:10 +01:00
$overlap = '' ;
2001-03-10 05:48:19 +01:00
for ( $i = 0 ; $i < count ( $overlapping_events ); $i ++ )
2001-02-18 23:33:10 +01:00
{
2001-03-14 13:21:52 +01:00
$over = $phpgw -> calendar -> fetch_event ( $cal_stream , $overlapping_events [ $i ]);
2001-03-10 05:48:19 +01:00
$overlap .= '<li>' ;
2001-03-16 04:02:03 +01:00
$private = $phpgw -> calendar -> is_private ( $over , $over -> owner , 'title' );
2001-03-10 05:48:19 +01:00
if ( strtoupper ( $private ) == 'PRIVATE' )
2001-02-18 23:33:10 +01:00
{
2001-03-10 05:48:19 +01:00
$overlap .= '(PRIVATE)' ;
}
else
{
$overlap .= $phpgw -> calendar -> link_to_entry ( $over -> id , 'circle.gif' , $over -> description ) . $over -> title ;
2001-02-18 23:33:10 +01:00
}
2001-03-10 05:48:19 +01:00
$over_start = mktime ( $over -> start -> hour , $over -> start -> min , $over -> start -> sec , $over -> start -> month , $over -> start -> mday , $over -> start -> year );
$over_end = mktime ( $over -> end -> hour , $over -> end -> min , $over -> end -> sec , $over -> end -> month , $over -> end -> mday , $over -> end -> year );
$overlap .= ' (' . $phpgw -> common -> show_date ( $over_start ) . ' - ' . $phpgw -> common -> show_date ( $over_end ) . ')<br>' ;
2001-02-18 23:33:10 +01:00
}
2001-03-10 05:48:19 +01:00
if ( strlen ( $overlap ) > 0 )
2001-02-18 23:33:10 +01:00
{
$var = Array (
2001-03-10 05:48:19 +01:00
'overlap_text' => lang ( 'Your suggested time of <B> x - x </B> conflicts with the following existing calendar entries:' , $phpgw -> common -> show_date ( $start ), $phpgw -> common -> show_date ( $end )),
2001-02-18 23:33:10 +01:00
'overlap_list' => $overlap
);
}
else
{
$var = Array (
'overlap_text' => '' ,
'overlap_list' => ''
);
}
$p -> set_var ( $var );
2001-03-10 05:48:19 +01:00
$phpgw -> calendar -> event = $event ;
2001-02-18 23:33:10 +01:00
$var = Array (
2001-03-10 05:48:19 +01:00
'action_url_button' => $phpgw -> link ( '/' . $phpgw_info [ 'flags' ][ 'currentapp' ] . '/edit_entry_handler.php' , 'readsess=' . $event -> id . '&year=' . $event -> year . '&month=' . $event -> month . '&day=' . $event -> mday ),
2001-02-18 23:33:10 +01:00
'action_text_button' => lang ( 'Ignore Conflict' ),
'action_confirm_button' => ''
);
$p -> set_var ( $var );
$p -> parse ( 'resubmit_button' , 'form_button' );
$var = Array (
2001-03-10 05:48:19 +01:00
'action_url_button' => $phpgw -> link ( '/' . $phpgw_info [ 'flags' ][ 'currentapp' ] . '/edit_entry.php' , 'readsess=' . $event -> id . '&year=' . $event -> start -> year . '&month=' . $event -> start -> month . '&day=' . $event -> start -> day ),
2001-02-18 23:33:10 +01:00
'action_text_button' => lang ( 'Re-Edit Event' ),
'action_confirm_button' => ''
);
$p -> set_var ( $var );
$p -> parse ( 'reedit_button' , 'form_button' );
$p -> pparse ( 'out' , 'overlap' );
}
else
{
2001-03-10 05:48:19 +01:00
$cal_stream = $phpgw -> calendar -> open ( 'INBOX' , intval ( $owner ), '' );
2001-03-04 05:13:04 +01:00
$phpgw -> calendar -> store_event ( $cal_stream );
2001-03-10 05:48:19 +01:00
Header ( 'Location: ' . $phpgw -> link ( '/' . $phpgw_info [ 'flags' ][ 'currentapp' ] . '/index.php' , 'year=' . $event -> start -> year . '&month=' . $event -> start -> month . '&day=' . $event -> start -> mday . '&cd=14&owner=' . $owner ));
2001-02-18 23:33:10 +01:00
}
$phpgw -> common -> phpgw_footer ();
2000-10-09 21:09:44 +02:00
?>