2001-07-16 13:38:40 +02:00
< ? php
/************************************************************************** \
* phpGroupWare - Calendar *
* http :// www . phpgroupware . org *
* Based on Webcalendar by Craig Knudsen < cknudsen @ radix . net > *
* http :// www . radix . net /~ cknudsen *
* Modified by Mark Peters < skeeter @ phpgroupware . org > *
* -------------------------------------------- *
* 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$ */
class uicalendar
{
var $template ;
var $template_dir ;
var $bo ;
var $cat ;
var $holidays ;
var $holiday_color ;
var $debug = False ;
2002-04-13 05:20:53 +02:00
// var $debug = True;
2001-07-16 13:38:40 +02:00
var $cat_id ;
2001-08-13 16:11:07 +02:00
var $theme ;
2002-06-25 01:24:24 +02:00
var $link_tpl ;
2001-07-16 13:38:40 +02:00
2002-09-17 04:25:40 +02:00
// planner related variables
var $planner_html ;
var $planner_header ;
var $planner_rows ;
var $planner_group_members ;
var $planner_firstday ;
var $planner_lastday ;
var $planner_days ;
var $planner_end_month ;
var $planner_end_year ;
2002-11-23 15:19:56 +01:00
var $planner_days_in_end_month ;
var $planner_intervals = array ( // conversation hour and interval depending on intervals_per_day
// 1 1 1 1 1 1 1 1 1 1 2 2 2 2
// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
'1' => array ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ), // 0=0-23h
'2' => array ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 0 , 0 , 0 , 0 , 0 ), // 0=0-12h, 1=12-23h
'3' => array ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 ), // 0=0-12h, 2=12-18h, 3=18-23h
'4' => array ( 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 3 , 3 , 3 , 3 , 3 , 3 ) // 0=0-7, 7-12h, 3=12-18h, 4=18-23h
);
2002-09-17 04:25:40 +02:00
2001-07-16 13:38:40 +02:00
var $public_functions = array (
'mini_calendar' => True ,
'index' => True ,
'month' => True ,
2001-11-05 04:48:14 +01:00
'get_month' => True ,
2001-07-16 13:38:40 +02:00
'week' => True ,
2002-08-22 05:07:54 +02:00
'get_week' => True ,
2001-07-16 13:38:40 +02:00
'year' => True ,
'view' => True ,
'edit' => True ,
2001-08-29 21:18:32 +02:00
'export' => True ,
2001-11-05 03:08:31 +01:00
'reinstate_list' => True ,
'reinstate' => True ,
2001-07-28 15:17:30 +02:00
'add' => True ,
2001-07-18 19:32:10 +02:00
'delete' => True ,
'preferences' => True ,
2001-07-22 01:35:22 +02:00
'day' => True ,
'edit_status' => True ,
'set_action' => True ,
2001-07-28 15:17:30 +02:00
'planner' => True ,
'matrixselect' => True ,
'viewmatrix' => True ,
'search' => True ,
2001-07-22 01:35:22 +02:00
'header' => True ,
2001-08-28 05:41:16 +02:00
'footer' => True ,
'css' => True
2001-07-16 13:38:40 +02:00
);
function uicalendar ()
{
2001-08-26 14:31:28 +02:00
$GLOBALS [ 'phpgw' ] -> nextmatchs = CreateObject ( 'phpgwapi.nextmatchs' );
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> browser = CreateObject ( 'phpgwapi.browser' );
2001-08-26 14:31:28 +02:00
2001-08-13 16:11:07 +02:00
$this -> theme = $GLOBALS [ 'phpgw_info' ][ 'theme' ];
2001-07-16 13:38:40 +02:00
2001-07-18 19:32:10 +02:00
$this -> bo = CreateObject ( 'calendar.bocalendar' , 1 );
2001-07-16 13:38:40 +02:00
2002-09-21 23:50:30 +02:00
print_debug ( 'BO Owner' , $this -> bo -> owner );
2001-07-22 01:35:22 +02:00
2001-08-12 16:47:23 +02:00
$this -> template = $GLOBALS [ 'phpgw' ] -> template ;
$this -> template_dir = $GLOBALS [ 'phpgw' ] -> common -> get_tpl_dir ( 'calendar' );
2001-07-16 13:38:40 +02:00
$this -> cat = CreateObject ( 'phpgwapi.categories' );
2001-08-28 05:41:16 +02:00
$this -> holiday_color = ( substr ( $this -> theme [ 'bg06' ], 0 , 1 ) == '#' ? '' : '#' ) . $this -> theme [ 'bg06' ];
2001-07-16 13:38:40 +02:00
$this -> cat_id = $this -> bo -> cat_id ;
2002-06-25 01:24:24 +02:00
$this -> link_tpl = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$this -> link_tpl -> set_unknowns ( 'remove' );
$this -> link_tpl -> set_file (
Array (
'link_picture' => 'link_pict.tpl'
)
);
$this -> link_tpl -> set_block ( 'link_picture' , 'link_pict' , 'link_pict' );
$this -> link_tpl -> set_block ( 'link_picture' , 'pict' , 'pict' );
$this -> link_tpl -> set_block ( 'link_picture' , 'link_open' , 'link_open' );
$this -> link_tpl -> set_block ( 'link_picture' , 'link_close' , 'link_close' );
$this -> link_tpl -> set_block ( 'link_picture' , 'link_text' , 'link_text' );
2001-07-18 19:32:10 +02:00
if ( $this -> bo -> use_session )
{
2002-11-23 15:19:56 +01:00
// save return-fkt for add, view, ...
list (,, $fkt ) = explode ( '.' , $GLOBALS [ 'HTTP_GET_VARS' ][ 'menuaction' ]);
if ( $fkt == 'day' || $fkt == 'week' || $fkt == 'month' || $fkt == 'year' || $fkt == 'planner' )
{
$this -> bo -> return_to = $GLOBALS [ 'HTTP_GET_VARS' ][ 'menuaction' ] .
sprintf ( '&date=%04d%02d%02d' , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day );
}
$this -> bo -> save_sessiondata ();
2001-07-18 19:32:10 +02:00
}
2002-09-21 23:50:30 +02:00
print_debug ( 'UI' , $this -> _debug_sqsof ());
2001-07-16 13:38:40 +02:00
}
2003-04-21 13:00:53 +02:00
/*!
@ function error_exit
@ abstract shows $msg centered on the screen and exit
@ syntax error_exit ( $msg )
@ param $msg lang () ' ed msg - text or one of the predefined messages ( see below )
*/
function error_exit ( $msg )
{
switch ( $msg )
{
case 'invalid_id' :
$msg = lang ( 'Invalid entry id.' );
break ;
case 'no_read_perm' :
$msg = lang ( 'You do not have permission to read this record!' );
break ;
case 'not_exist' :
$msg = lang ( 'Sorry, this event does not exist' );
break ;
}
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , '<div style="text-align: center">' . $msg . " </div> \n " );
exit ;
}
2001-07-16 13:38:40 +02:00
/* Public functions */
2001-08-13 06:49:19 +02:00
function mini_calendar ( $params )
2001-07-16 13:38:40 +02:00
{
2002-09-19 04:14:41 +02:00
static $mini_cal_tpl ;
2001-08-13 06:49:19 +02:00
if ( ! is_array ( $params ))
{
return ;
}
2001-12-24 04:07:24 +01:00
if ( $params [ 'month' ] == 0 )
{
$params [ 'month' ] = 12 ;
$params [ 'year' ] = $params [ 'year' ] - 1 ;
}
elseif ( $params [ 'month' ] == 13 )
{
$params [ 'month' ] = 1 ;
$params [ 'year' ] = $params [ 'year' ] + 1 ;
}
2001-08-28 05:41:16 +02:00
$this -> bo -> store_to_cache (
Array (
'smonth' => $params [ 'month' ],
'sday' => 1 ,
'syear' => $params [ 'year' ]
)
);
2001-08-25 05:22:01 +02:00
$params [ 'link' ] = ( ! isset ( $params [ 'link' ]) ? '' : $params [ 'link' ]);
$params [ 'buttons' ] = ( ! isset ( $params [ 'buttons' ]) ? 'none' : $params [ 'buttons' ]);
$params [ 'outside_month' ] = ( ! isset ( $params [ 'outside_month' ]) ? True : $params [ 'outside_month' ]);
2001-08-13 06:49:19 +02:00
2001-12-24 04:07:24 +01:00
$this -> bo -> read_holidays ( $params [ 'year' ]);
2001-07-16 13:38:40 +02:00
2002-06-25 01:24:24 +02:00
$date = $GLOBALS [ 'phpgw' ] -> datetime -> makegmttime ( 0 , 0 , 0 , $params [ 'month' ], $params [ 'day' ], $params [ 'year' ]);
2001-08-13 06:49:19 +02:00
$month_ago = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $params [ 'month' ] - 1 , $params [ 'day' ], $params [ 'year' ])));
$month_ahead = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $params [ 'month' ] + 1 , $params [ 'day' ], $params [ 'year' ])));
$monthstart = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $params [ 'month' ], 1 , $params [ 'year' ])));
$monthend = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $params [ 'month' ] + 1 , 0 , $params [ 'year' ])));
2001-07-16 13:38:40 +02:00
2002-06-25 01:24:24 +02:00
$weekstarttime = $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $params [ 'year' ], $params [ 'month' ], 1 );
2002-04-16 18:52:36 +02:00
2002-09-19 04:14:41 +02:00
print_debug ( 'mini_calendar:monthstart' , $monthstart );
print_debug ( 'mini_calendar:weekstarttime' , date ( 'Ymd H:i:s' , $weekstarttime ));
2001-07-16 13:38:40 +02:00
2002-09-19 04:14:41 +02:00
if ( ! is_object ( $mini_cal_tpl ))
{
$mini_cal_tpl = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$mini_cal_tpl -> set_unknowns ( 'remove' );
2001-07-16 13:38:40 +02:00
2002-09-19 04:14:41 +02:00
$mini_cal_tpl -> set_file (
Array (
'mini_calendar' => 'mini_cal.tpl'
)
);
$mini_cal_tpl -> set_block ( 'mini_calendar' , 'mini_cal' , 'mini_cal' );
$mini_cal_tpl -> set_block ( 'mini_calendar' , 'mini_week' , 'mini_week' );
$mini_cal_tpl -> set_block ( 'mini_calendar' , 'mini_day' , 'mini_day' );
}
2001-07-16 13:38:40 +02:00
2001-07-18 19:32:10 +02:00
if ( $this -> bo -> printer_friendly == False )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
$month = '<a href="' . $this -> page ( 'month' , '&month=' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'm' ) . '&year=' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'Y' )) . '" class="minicalendar">' . lang ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'F' )) . ' ' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'Y' ) . '</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-12 16:47:23 +02:00
$month = lang ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'F' )) . ' ' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'Y' );
2001-07-16 13:38:40 +02:00
}
$var = Array (
2002-09-19 04:14:41 +02:00
'cal_img_root' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'mini-calendar-bar' ),
2001-08-13 16:11:07 +02:00
'bgcolor' => $this -> theme [ 'bg_color' ],
'bgcolor1' => $this -> theme [ 'bg_color' ],
2001-07-16 13:38:40 +02:00
'month' => $month ,
2001-08-13 16:11:07 +02:00
'bgcolor2' => $this -> theme [ 'cal_dayview' ],
2001-07-16 13:38:40 +02:00
'holiday_color' => $this -> holiday_color
);
2002-09-19 04:14:41 +02:00
$mini_cal_tpl -> set_var ( $var );
2001-07-16 13:38:40 +02:00
2001-08-13 06:49:19 +02:00
switch ( strtolower ( $params [ 'buttons' ]))
2001-07-16 13:38:40 +02:00
{
case 'right' :
$var = Array (
2002-09-19 04:14:41 +02:00
'nextmonth' => '<a href="' . $this -> page ( 'month' , '&date=' . $month_ahead ) . '"><img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'phpgwapi' , 'right' ) . '" border="0"></a>'
2001-07-16 13:38:40 +02:00
);
break ;
case 'left' :
$var = Array (
2002-09-19 04:14:41 +02:00
'prevmonth' => '<a href="' . $this -> page ( 'month' , '&date=' . $month_ago ) . '"><img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'phpgwapi' , 'left' ) . '" border="0"></a>'
2001-07-16 13:38:40 +02:00
);
break ;
case 'both' :
$var = Array (
2002-09-19 04:14:41 +02:00
'prevmonth' => '<a href="' . $this -> page ( 'month' , '&date=' . $month_ago ) . '"><img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'phpgwapi' , 'left' ) . '" border="0"></a>' ,
'nextmonth' => '<a href="' . $this -> page ( 'month' , '&date=' . $month_ahead ) . '"><img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'phpgwapi' , 'right' ) . '" border="0"></a>'
2001-07-16 13:38:40 +02:00
);
break ;
case 'none' :
default :
$var = Array (
'prevmonth' => '' ,
'nextmonth' => ''
);
break ;
}
2002-09-19 04:14:41 +02:00
$mini_cal_tpl -> set_var ( $var );
2001-07-16 13:38:40 +02:00
2002-09-19 04:14:41 +02:00
if ( ! $mini_cal_tpl -> get_var ( 'daynames' ))
2001-07-16 13:38:40 +02:00
{
2002-09-19 04:14:41 +02:00
for ( $i = 0 ; $i < 7 ; $i ++ )
{
$var = Array (
'dayname' => '<b>' . substr ( lang ( $GLOBALS [ 'phpgw' ] -> datetime -> days [ $i ][ 'name' ]), 0 , 2 ) . '</b>' ,
'day_image' => ''
);
2002-09-22 14:24:45 +02:00
$this -> output_template_array ( $mini_cal_tpl , 'daynames' , 'mini_day' , $var );
2002-09-19 04:14:41 +02:00
}
2001-07-16 13:38:40 +02:00
}
2002-08-25 06:07:21 +02:00
$today = date ( 'Ymd' , $GLOBALS [ 'phpgw' ] -> datetime -> users_localtime );
2001-07-16 13:38:40 +02:00
unset ( $date );
2002-08-25 06:07:21 +02:00
for ( $i = $weekstarttime + $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ; date ( 'Ymd' , $i ) <= $monthend ; $i += ( 24 * 3600 * 7 ))
2001-07-16 13:38:40 +02:00
{
unset ( $var );
2002-08-25 06:07:21 +02:00
$daily = $this -> set_week_array ( $i - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset , $cellcolor , $weekly );
2001-07-16 13:38:40 +02:00
@ reset ( $daily );
while ( list ( $date , $day_params ) = each ( $daily ))
{
2002-09-19 04:14:41 +02:00
print_debug ( 'Mini-Cal Date' , $date );
2001-07-16 13:38:40 +02:00
$year = intval ( substr ( $date , 0 , 4 ));
$month = intval ( substr ( $date , 4 , 2 ));
$day = intval ( substr ( $date , 6 , 2 ));
$str = '' ;
2001-08-13 06:49:19 +02:00
if (( $date >= $monthstart && $date <= $monthend ) || $params [ 'outside_month' ] == True )
2001-07-16 13:38:40 +02:00
{
2001-08-13 06:49:19 +02:00
if ( ! $this -> bo -> printer_friendly && $params [ 'link' ])
2001-07-16 13:38:40 +02:00
{
2001-08-13 06:49:19 +02:00
$str = '<a href="' . $this -> page ( $params [ 'link' ], '&date=' . $date ) . '" class="' . $day_params [ 'class' ] . '">' . $day . '</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
$str = $day ;
}
}
2002-03-14 01:10:50 +01:00
else
{
$day_params [ 'day_image' ] = '' ;
}
2001-07-16 13:38:40 +02:00
$var [] = Array (
'day_image' => $day_params [ 'day_image' ],
'dayname' => $str
);
}
for ( $l = 0 ; $l < count ( $var ); $l ++ )
{
2002-09-19 04:14:41 +02:00
$this -> output_template_array ( $mini_cal_tpl , 'monthweek_day' , 'mini_day' , $var [ $l ]);
2001-07-16 13:38:40 +02:00
}
2002-09-19 04:14:41 +02:00
$mini_cal_tpl -> parse ( 'display_monthweek' , 'mini_week' , True );
$mini_cal_tpl -> set_var ( 'dayname' , '' );
$mini_cal_tpl -> set_var ( 'monthweek_day' , '' );
2001-07-16 13:38:40 +02:00
}
2002-09-19 04:14:41 +02:00
$return_value = $mini_cal_tpl -> fp ( 'out' , 'mini_cal' );
$mini_cal_tpl -> set_var ( 'display_monthweek' , '' );
2001-07-16 13:38:40 +02:00
return $return_value ;
}
2001-07-28 15:17:30 +02:00
function index ( $params = '' )
2001-07-16 13:38:40 +02:00
{
2001-07-28 15:17:30 +02:00
Header ( 'Location: ' . $this -> page ( '' , $params ));
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-07-16 13:38:40 +02:00
}
2002-11-23 21:48:42 +01:00
/*!
@ function cal_header
@ abstract call common :: phpgw_header and shows the application - header
2003-04-21 13:00:53 +02:00
@ syntax cal_header ( $func_header , $big_header )
@ param $func_header function name to display beside calendar - title
@ param $always_show_header or only for selected templates
2002-11-23 21:48:42 +01:00
*/
2003-04-21 13:00:53 +02:00
function cal_header ( $func_header = '' , $always_show_header = False )
2002-11-23 21:48:42 +01:00
{
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ]);
2003-04-21 13:00:53 +02:00
if ( ! empty ( $func_header ) && ( $always_show_header || $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'template' ] == 'idots' ))
{
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] .
' - ' . $func_header ;
}
2002-11-23 21:48:42 +01:00
function add_col ( & $tpl , $str )
{
$tpl -> set_var ( 'str' , $str );
$tpl -> parse ( 'header_column' , 'head_col' , True );
}
function add_image_ahref ( $link , $image , $alt )
{
return '<a href="' . $link . '"><img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , $image ) . '" alt="' . $alt . '" title="' . $alt . '" border="0"></a>' ;
}
list (,, $referrer ) = explode ( '.' , MENUACTION );
$templates = Array (
'head_tpl' => 'head.tpl' ,
'form_button_dropdown' => 'form_button_dropdown.tpl' ,
'form_button_script' => 'form_button_script.tpl'
);
$tpl = & $GLOBALS [ 'phpgw' ] -> template ;
$tpl -> set_file ( $templates );
$tpl -> set_block ( 'head_tpl' , 'head' , 'head' );
$tpl -> set_block ( 'head_tpl' , 'head_table' , 'head_table' );
$tpl -> set_block ( 'head_tpl' , 'head_col' , 'head_col' );
$tpl -> set_block ( 'form_button_script' , 'form_button' );
if ( floor ( phpversion ()) >= 4 )
{
$tpl -> set_var ( 'cols' , 8 );
}
else
{
$tpl -> set_var ( 'cols' , 7 );
}
$today = date ( 'Ymd' , $GLOBALS [ 'phpgw' ] -> datetime -> users_localtime );
$col_width = 12 ;
add_col ( $tpl , ' <td width="2%"> </td>' );
add_col ( $tpl , ' <td width="2%">' . add_image_ahref ( $this -> page ( 'day' , '&date=' . $today ), 'today' , lang ( 'Today' )) . '</td>' );
add_col ( $tpl , ' <td width="2%" align="left">' . add_image_ahref ( $this -> page ( 'week' , '&date=' . $today ), 'week' , lang ( 'This week' )) . '</td>' );
add_col ( $tpl , ' <td width="2%" align="left">' . add_image_ahref ( $this -> page ( 'month' , '&date=' . $today ), 'month' , lang ( 'This month' )) . '</td>' );
add_col ( $tpl , ' <td width="2%" align="left">' . add_image_ahref ( $this -> page ( 'year' , '&date=' . $today ), 'year' , lang ( 'This Year' )) . '</td>' );
if ( floor ( phpversion ()) >= 4 )
{
add_col ( $tpl , ' <td width="2%" align="left">' . add_image_ahref ( $this -> page ( 'planner' , '&date=' . $today ), 'planner' , lang ( 'Planner' )) . '</td>' );
$col_width += 2 ;
}
add_col ( $tpl , ' <td width="2%" align="left">' . add_image_ahref ( $this -> page ( 'matrixselect' ), 'view' , lang ( 'Daily Matrix View' )) . '</td>' );
add_col ( $tpl , ' <td width="' . ( 100 - $col_width ) . '%" align="left"' . ( floor ( phpversion ()) < 4 ? ' colspan="2"' : '' ) . '> </td>' );
$tpl -> parse ( 'phpgw_body' , 'head_table' , True );
$tpl -> set_var ( 'header_column' , '' );
$tpl -> set_var ( 'cols' , $cols );
if ( $referrer != 'view' )
{
$remainder = 72 ;
$cal_id = get_var ( 'cal_id' , Array ( 'GET' , 'DEFAULT' ), 0 );
$keywords = get_var ( 'keywords' , Array ( 'POST' , 'DEFAULT' ), '' );
$matrixtype = get_var ( 'matrixtype' , Array ( 'POST' , 'DEFAULT' ), '' );
$participants = get_var ( 'participants' , Array ( 'POST' ));
$date = get_var ( 'date' , Array ( 'GET' , 'POST' ));
$year = $this -> bo -> year ;
$month = $this -> bo -> month ;
$day = $this -> bo -> day ;
$var_list = Array (
'cal_id' ,
'keywords' ,
'matrixtype' ,
'date' ,
'year' ,
'month' ,
'day'
);
$base_hidden_vars = '<input type="hidden" name="from" value="' . MENUACTION . '">' . " \n " ;
for ( $i = 0 ; $i < count ( $var_list ); $i ++ )
{
if ( $$var_list [ $i ])
{
$base_hidden_vars .= ' <input type="hidden" name="' . $var_list [ $i ] . '" value="' . $$var_list [ $i ] . '">' . " \n " ;
}
}
$hidden_vars = '' ;
if ( $participants )
{
for ( $i = 0 ; $i < count ( $participants ); $i ++ )
{
$hidden_vars .= ' <input type="hidden" name="participants[]" value="' . $participants [ $i ] . '">' . " \n " ;
}
}
$var = Array (
'form_width' => '28' ,
'form_link' => $this -> page ( $referrer ),
'form_name' => 'cat_id' ,
'title' => lang ( 'Category' ),
'hidden_vars' => $base_hidden_vars . $hidden_vars ,
'form_options' => '<option value="0">All</option>' . $this -> cat -> formatted_list ( 'select' , 'all' , $this -> bo -> cat_id , 'True' ),
'button_value' => lang ( 'Go!' )
);
$tpl -> set_var ( $var );
$tpl -> set_var ( 'str' , $tpl -> fp ( 'out' , 'form_button_dropdown' ));
$tpl -> parse ( 'header_column' , 'head_col' , True );
if ( MENUACTION == 'calendar.uicalendar.planner' )
{
$remainder -= 28 ;
print_debug ( 'Sort By' , $this -> bo -> sortby );
$form_options = '<option value="user"' . ( $this -> bo -> sortby == 'user' ? ' selected' : '' ) . '>' . lang ( 'User' ) . '</option>' . " \n " ;
$form_options .= ' <option value="category"' . (( ! isset ( $this -> bo -> sortby ) || ! $this -> bo -> sortby ) || $this -> bo -> sortby == 'category' ? ' selected' : '' ) . '>' . lang ( 'Category' ) . '</option>' . " \n " ;
$var = Array (
'form_width' => '28' ,
'form_link' => $this -> page ( $referrer ),
'form_name' => 'sortby' ,
'title' => lang ( 'Sort By' ),
'hidden_vars' => $base_hidden_vars ,
'form_options' => $form_options ,
'button_value' => lang ( 'Go!' )
);
$tpl -> set_var ( $var );
$tpl -> set_var ( 'str' , $tpl -> fp ( 'out' , 'form_button_dropdown' ));
$tpl -> parse ( 'header_column' , 'head_col' , True );
}
if ( $this -> bo -> check_perms ( PHPGW_ACL_PRIVATE ))
{
$remainder -= 28 ;
$hidden_vars = '' ;
if ( $participants )
{
for ( $i = 0 ; $i < count ( $participants ); $i ++ )
{
$hidden_vars .= ' <input type="hidden" name="participants[]" value="' . $participants [ $i ] . '">' . " \n " ;
}
}
$form_options = '<option value=" all "' . ( $this -> bo -> filter == ' all ' ? ' selected' : '' ) . '>' . lang ( 'All' ) . '</option>' . " \n " ;
$form_options .= ' <option value=" private "' . (( ! isset ( $this -> bo -> filter ) || ! $this -> bo -> filter ) || $this -> bo -> filter == ' private ' ? ' selected' : '' ) . '>' . lang ( 'Private Only' ) . '</option>' . " \n " ;
$var = Array (
'form_width' => '28' ,
'form_link' => $this -> page ( $referrer ),
'form_name' => 'filter' ,
'title' => lang ( 'Filter' ),
'hidden_vars' => $base_hidden_vars . $hidden_vars ,
'form_options' => $form_options ,
'button_value' => lang ( 'Go!' )
);
$tpl -> set_var ( $var );
$tpl -> set_var ( 'str' , $tpl -> fp ( 'out' , 'form_button_dropdown' ));
$tpl -> parse ( 'header_column' , 'head_col' , True );
}
if (( ! isset ( $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ]) || ! $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ]) && count ( $this -> bo -> grants ) > 0 )
{
$form_options = '' ;
reset ( $this -> bo -> grants );
while ( list ( $grantor , $temp_rights ) = each ( $this -> bo -> grants ))
{
$GLOBALS [ 'phpgw' ] -> accounts -> get_account_name ( $grantor , $lid , $fname , $lname );
$drop_down [ $lname . ' ' . $fname ] = Array (
'grantor' => $grantor ,
'value' => ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $grantor ) == 'g' ? 'g_' : '' ) . $grantor ,
'name' => $GLOBALS [ 'phpgw' ] -> common -> display_fullname ( $lid , $fname , $lname )
);
}
$memberships = $GLOBALS [ 'phpgw' ] -> accounts -> membership ( $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'account_id' ]);
while ( $memberships != False && list ( $key , $group_info ) = each ( $memberships ))
{
$GLOBALS [ 'phpgw' ] -> accounts -> get_account_name ( $group_info [ 'account_id' ], $lid , $fname , $lname );
$drop_down [ $lname . ' ' . $fname ] = Array (
'grantor' => $group_info [ 'account_id' ],
'value' => ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $group_info [ 'account_id' ]) == 'g' ? 'g_' : '' ) . $group_info [ 'account_id' ],
'name' => $GLOBALS [ 'phpgw' ] -> common -> display_fullname ( $lid , $fname , $lname )
);
$account_perms = $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( $group_info [ 'account_id' ], PHPGW_ACL_READ , 'calendar' );
while ( $account_perms && list ( $key , $group_id ) = each ( $account_perms ))
{
$GLOBALS [ 'phpgw' ] -> accounts -> get_account_name ( $group_id , $lid , $fname , $lname );
$drop_down [ $lname . ' ' . $fname ] = Array (
'grantor' => $group_id ,
'value' => ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $group_id ) == 'g' ? 'g_' : '' ) . $group_id ,
'name' => $GLOBALS [ 'phpgw' ] -> common -> display_fullname ( $lid , $fname , $lname )
);
}
}
@ reset ( $drop_down );
@ ksort ( $drop_down );
while ( list ( $key , $grant ) = each ( $drop_down ))
{
$form_options .= ' <option value="' . $grant [ 'value' ] . '"' . ( $grant [ 'grantor' ] == $this -> bo -> owner ? ' selected' : '' ) . '>' . $grant [ 'name' ] . '</option>' . " \n " ;
}
reset ( $this -> bo -> grants );
$var = Array (
'form_width' => $remainder ,
'form_link' => $this -> page ( $referrer ),
'form_name' => 'owner' ,
'title' => lang ( 'User' ),
'hidden_vars' => $base_hidden_vars ,
'form_options' => $form_options ,
'button_value' => lang ( 'Go!' )
);
$tpl -> set_var ( $var );
$tpl -> set_var ( 'str' , $tpl -> fp ( 'out' , 'form_button_dropdown' ));
$tpl -> parse ( 'header_column' , 'head_col' , True );
}
}
$hidden_vars = ' <input type="hidden" name="from" value="' . MENUACTION . '">' . " \n " ;
$date = get_var ( 'date' , Array ( 'GET' ));
if ( $date )
{
$hidden_vars .= ' <input type="hidden" name="date" value="' . $date . '">' . " \n " ;
}
$hidden_vars .= ' <input type="hidden" name="month" value="' . $this -> bo -> month . '">' . " \n " ;
$hidden_vars .= ' <input type="hidden" name="day" value="' . $this -> bo -> day . '">' . " \n " ;
$hidden_vars .= ' <input type="hidden" name="year" value="' . $this -> bo -> year . '">' . " \n " ;
if ( isset ( $this -> bo -> filter ) && $this -> bo -> filter )
{
$hidden_vars .= ' <input type="hidden" name="filter" value="' . $this -> bo -> filter . '">' . " \n " ;
}
if ( isset ( $this -> bo -> sortby ) && $this -> bo -> sortby )
{
$hidden_vars .= ' <input type="hidden" name="sortby" value="' . $this -> bo -> sortby . '">' . " \n " ;
}
if ( isset ( $this -> bo -> num_months ) && $this -> bo -> num_months )
{
$hidden_vars .= ' <input type="hidden" name="num_months" value="' . $this -> bo -> num_months . '">' . " \n " ;
}
$hidden_vars .= ' <input name="keywords"' . ( $keywords ? ' value="' . $keywords . '"' : '' ) . '>' ;
$var = Array (
'action_url_button' => $this -> page ( 'search' ),
'action_text_button' => lang ( 'Search' ),
'action_confirm_button' => '' ,
'action_extra_field' => $hidden_vars
);
$tpl -> set_var ( $var );
$button = $tpl -> fp ( 'out' , 'form_button' );
$tpl -> set_var ( 'str' , '<td align="right" valign="bottom">' . $button . '</td>' );
$tpl -> parse ( 'header_column' , 'head_col' , True );
$tpl -> parse ( 'phpgw_body' , 'head_table' , True );
}
2003-04-21 13:00:53 +02:00
function printer_friendly ( $body , $func_header = '' )
2002-03-14 01:10:50 +01:00
{
if ( $this -> bo -> printer_friendly )
{
2003-04-21 13:38:58 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'headonly' ] = True ;
2002-03-14 01:10:50 +01:00
}
else
2001-11-05 04:48:14 +01:00
{
2003-04-21 13:00:53 +02:00
$this -> cal_header ( $func_header && $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'template' ] == 'idots' ? $func_header : '' );
2001-11-05 04:48:14 +01:00
}
2003-04-21 13:38:58 +02:00
return $this -> bo -> debug_string . $body ;
2002-04-07 16:12:53 +02:00
}
function month ()
{
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , $this -> printer_friendly ( $this -> get_month (), lang ( 'Monthview' )));
2001-11-05 04:48:14 +01:00
}
function get_month ()
2001-07-16 13:38:40 +02:00
{
$m = mktime ( 0 , 0 , 0 , $this -> bo -> month , 1 , $this -> bo -> year );
2001-11-05 03:08:31 +01:00
if ( ! $this -> bo -> printer_friendly || ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'display_minicals' ]))
2001-08-13 06:49:19 +02:00
{
$minical_prev = $this -> mini_calendar (
Array (
'day' => 1 ,
'month' => $this -> bo -> month - 1 ,
'year' => $this -> bo -> year ,
'link' => 'day'
)
);
2001-12-24 04:07:24 +01:00
2001-08-13 06:49:19 +02:00
$minical_next = $this -> mini_calendar (
Array (
'day' => 1 ,
'month' => $this -> bo -> month + 1 ,
'year' => $this -> bo -> year ,
'link' => 'day'
)
);
}
else
{
$minical_prev = '' ;
$minical_next = '' ;
}
2001-07-18 19:32:10 +02:00
if ( ! $this -> bo -> printer_friendly )
2001-07-16 13:38:40 +02:00
{
$printer = '' ;
2001-07-18 19:32:10 +02:00
$param = '&year=' . $this -> bo -> year . '&month=' . $this -> bo -> month . '&friendly=1' ;
2001-07-16 13:38:40 +02:00
$print = '<a href="' . $this -> page ( 'month' . $param ) . " \" TARGET= \" cal_printer_friendly \" onMouseOver= \" window.status = ' " . lang ( 'Generate printer-friendly version' ) . " ' \" >[ " . lang ( 'Printer Friendly' ) . ']</a>' ;
}
else
{
$printer = '<body bgcolor="' . $phpgw_info [ 'theme' ][ 'bg_color' ] . '">' ;
$print = '' ;
2001-10-01 04:34:45 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nofooter' ] = True ;
2001-07-16 13:38:40 +02:00
}
2001-12-24 04:07:24 +01:00
$this -> bo -> read_holidays ();
2001-07-16 13:38:40 +02:00
$var = Array (
'printer_friendly' => $printer ,
2001-08-13 16:11:07 +02:00
'bg_text' => $this -> theme [ 'bg_text' ],
2001-07-16 13:38:40 +02:00
'small_calendar_prev' => $minical_prev ,
2001-07-28 15:17:30 +02:00
'month_identifier' => lang ( strftime ( " %B " , $m )) . ' ' . $this -> bo -> year ,
2001-08-12 16:47:23 +02:00
'username' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ),
2001-07-16 13:38:40 +02:00
'small_calendar_next' => $minical_next ,
2001-07-18 19:32:10 +02:00
'large_month' => $this -> display_month ( $this -> bo -> month , $this -> bo -> year , True , $this -> bo -> owner ),
2001-07-16 13:38:40 +02:00
'print' => $print
);
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_unknowns ( 'remove' );
2001-08-06 04:41:36 +02:00
$p -> set_file (
Array (
'index_t' => 'index.tpl'
)
2001-07-28 15:17:30 +02:00
);
2001-07-18 19:32:10 +02:00
$p -> set_var ( $var );
2001-11-05 04:48:14 +01:00
return $p -> fp ( 'out' , 'index_t' );
2001-07-16 13:38:40 +02:00
}
function week ()
2001-11-05 04:48:14 +01:00
{
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , $this -> printer_friendly ( $this -> get_week (), lang ( 'Weekview' )));
2001-11-05 04:48:14 +01:00
}
function get_week ()
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$this -> bo -> read_holidays ();
2002-06-25 01:24:24 +02:00
$next = $GLOBALS [ 'phpgw' ] -> datetime -> makegmttime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day + 7 , $this -> bo -> year );
$prev = $GLOBALS [ 'phpgw' ] -> datetime -> makegmttime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day - 7 , $this -> bo -> year );
2001-07-16 13:38:40 +02:00
2001-09-29 03:40:47 +02:00
if ( ! $this -> bo -> printer_friendly || ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'display_minicals' ]))
2001-08-13 06:49:19 +02:00
{
$minical_this = $this -> mini_calendar (
Array (
'day' => $this -> bo -> day ,
'month' => $this -> bo -> month ,
'year' => $this -> bo -> year ,
'link' => 'day' ,
'butons' => 'none' ,
'outside_month' => False
)
);
$minical_prev = $this -> mini_calendar (
Array (
'day' => $this -> bo -> day ,
'month' => $this -> bo -> month - 1 ,
'year' => $this -> bo -> year ,
'link' => 'day' ,
'butons' => 'left' ,
'outside_month' => False
)
);
$minical_next = $this -> mini_calendar (
Array (
'day' => $this -> bo -> day ,
'month' => $this -> bo -> month + 1 ,
'year' => $this -> bo -> year ,
'link' => 'day' ,
'butons' => 'right' ,
'outside_month' => False
)
);
}
else
{
$minical_this = '' ;
$minical_prev = '' ;
$minical_next = '' ;
}
2001-07-18 19:32:10 +02:00
if ( ! $this -> bo -> printer_friendly )
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$printer = '' ;
2001-07-28 15:17:30 +02:00
$prev_week_link = '<a href="' . $this -> page ( 'week' , '&date=' . $prev [ 'full' ]) . '"><<</a>' ;
$next_week_link = '<a href="' . $this -> page ( 'week' , '&date=' . $next [ 'full' ]) . '">>></a>' ;
2003-02-26 19:58:01 +01:00
$print = '<a href="' . $this -> page ( 'week' , '&friendly=1&date=' . sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day )) . " \" TARGET= \" cal_printer_friendly \" onMouseOver= \" window.status = ' " . lang ( 'Generate printer-friendly version' ) . " ' \" >[ " . lang ( 'Printer Friendly' ) . ']</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-13 16:11:07 +02:00
$printer = '<body bgcolor="' . $this -> theme [ 'bg_color' ] . '">' ;
2003-02-26 19:58:01 +01:00
$prev_week_link = '' ;
$next_week_link = '' ;
2001-07-18 19:32:10 +02:00
$print = '' ;
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nofooter' ] = True ;
2001-07-16 13:38:40 +02:00
}
$var = Array (
2002-05-05 19:47:15 +02:00
'printer_friendly' => $printer ,
'bg_text' => $this -> theme [ 'bg_text' ],
'small_calendar_prev' => $minical_prev ,
'prev_week_link' => $prev_week_link ,
'small_calendar_this' => $minical_this ,
'week_identifier' => $this -> bo -> get_week_label (),
'next_week_link' => $next_week_link ,
'username' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ),
'small_calendar_next' => $minical_next ,
'week_display' => $this -> display_weekly (
2001-08-13 06:49:19 +02:00
Array (
'date' => sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ),
'showyear' => true ,
2002-05-05 19:47:15 +02:00
'owners' => $this -> bo -> owner
2001-08-13 06:49:19 +02:00
)
),
2002-05-05 19:47:15 +02:00
'print' => $print
2001-07-16 13:38:40 +02:00
);
2001-07-28 15:17:30 +02:00
$p = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
2001-08-06 04:41:36 +02:00
$p -> set_file (
Array (
'week_t' => 'week.tpl'
)
2001-07-28 15:17:30 +02:00
);
2001-07-16 13:38:40 +02:00
$p -> set_var ( $var );
2001-11-05 04:48:14 +01:00
return $p -> fp ( 'out' , 'week_t' );
2002-02-17 04:56:58 +01:00
/*
$this -> bo -> read_holidays ();
if ( ! $this -> bo -> printer_friendly || ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'display_minicals' ]))
{
$minical = $this -> mini_calendar (
Array (
'day' => $this -> bo -> day ,
'month' => $this -> bo -> month ,
'year' => $this -> bo -> year ,
'link' => 'day'
)
);
}
else
{
$minical = '' ;
}
if ( ! $this -> bo -> printer_friendly )
{
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
$printer = '' ;
$param = '&date=' . sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ) . '&friendly=1' ;
$print = '<a href="' . $this -> page ( 'day' . $param ) . " \" TARGET= \" cal_printer_friendly \" onMouseOver= \" window.status = ' " . lang ( 'Generate printer-friendly version' ) . " ' \" >[ " . lang ( 'Printer Friendly' ) . ']</a>' ;
}
else
{
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nofooter' ] = True ;
$printer = '<body bgcolor="' . $this -> theme [ 'bg_color' ] . '">' ;
$print = '' ;
}
2002-06-25 01:24:24 +02:00
$now = $GLOBALS [ 'phpgw' ] -> datetime -> makegmttime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year );
2002-08-25 06:07:21 +02:00
$now [ 'raw' ] += $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2002-02-17 04:56:58 +01:00
$m = mktime ( 0 , 0 , 0 , $this -> bo -> month , 1 , $this -> bo -> year );
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2002-02-17 04:56:58 +01:00
$p -> set_file (
Array (
'day_t' => 'day.tpl'
)
);
$p -> set_block ( 'day_t' , 'day' , 'day' );
$p -> set_block ( 'day_t' , 'day_event' , 'day_event' );
$var = Array (
'printer_friendly' => $printer ,
'bg_text' => $this -> theme [ 'bg_text' ],
'daily_events' => $this -> print_day (
Array (
'year' => $this -> bo -> year ,
'month' => $this -> bo -> month ,
'day' => $this -> bo -> day
)
),
'small_calendar' => $minical ,
'date' => lang ( date ( 'F' , $m )) . ' ' . sprintf ( " %02d " , $this -> bo -> day ) . ', ' . $this -> bo -> year ,
'username' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ),
'print' => $print
);
$p -> set_var ( $var );
$p -> parse ( 'day_events' , 'day_event' );
$p -> pparse ( 'out' , 'day' );
*/
2001-07-16 13:38:40 +02:00
}
function year ()
{
2003-04-21 13:00:53 +02:00
if ( $this -> bo -> printer_friendly )
{
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nofooter' ] = True ;
}
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , $this -> printer_friendly ( $this -> get_year (), lang ( 'Yearview' )));
2001-11-05 04:48:14 +01:00
}
2001-11-05 19:13:30 +01:00
function get_year ()
2001-11-05 04:48:14 +01:00
{
if ( ! $this -> bo -> printer_friendly )
{
2001-07-28 15:17:30 +02:00
$print = '' ;
$left_link = '<a href="' . $this -> page ( 'year' , '&year=' . ( $this -> bo -> year - 1 )) . '"><<</a>' ;
$right_link = '<a href="' . $this -> page ( 'year' , '&year=' . ( $this -> bo -> year + 1 )) . '">>></a>' ;
2001-10-03 02:31:03 +02:00
$link = 'day' ;
2003-02-26 19:58:01 +01:00
$printer = '<a href="' . $this -> page ( 'year' , '&friendly=1&year=' . $this -> bo -> year ) . '" target="cal_printer_friendly" onMouseOver="window.status = ' . " ' " . lang ( 'Generate printer-friendly version' ) . " ' " . '">[' . lang ( 'Printer Friendly' ) . ']</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-13 16:11:07 +02:00
$print = '<body bgcolor="' . $this -> theme [ 'bg_color' ] . '">' ;
2001-07-28 15:17:30 +02:00
$left_link = '' ;
$right_link = '' ;
2001-07-16 13:38:40 +02:00
$link = '' ;
2001-07-28 15:17:30 +02:00
$printer = '' ;
2001-07-16 13:38:40 +02:00
}
2001-07-28 15:17:30 +02:00
$var = Array (
'print' => $print ,
'left_link' => $left_link ,
2001-08-13 16:11:07 +02:00
'font' => $this -> theme [ 'font' ],
2001-07-28 15:17:30 +02:00
'year_text' => $this -> bo -> year ,
'right_link' => $right_link ,
'printer_friendly' => $printer
);
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-08-06 04:41:36 +02:00
$p -> set_file (
Array (
'year_t' => 'year.tpl'
)
2001-07-28 15:17:30 +02:00
);
$p -> set_block ( 'year_t' , 'year' , 'year' );
2003-04-21 13:00:53 +02:00
$p -> set_block ( 'year_t' , 'month' , 'month_handle' );
$p -> set_block ( 'year_t' , 'month_sep' , 'month_sep_handle' );
$p -> set_var ( array (
'month_handle' => '' ,
'month_sep_handle' => ''
));
2001-07-28 15:17:30 +02:00
$p -> set_var ( $var );
for ( $i = 1 ; $i <= 12 ; $i ++ )
2001-07-16 13:38:40 +02:00
{
2003-04-21 13:00:53 +02:00
if (( $i % 3 ) == 1 )
{
$p -> parse ( 'row' , 'month_sep' , True );
}
2001-08-13 06:49:19 +02:00
$p -> set_var ( 'mini_month' , $this -> mini_calendar (
Array (
'day' => 1 ,
'month' => $i ,
'year' => $this -> bo -> year ,
'link' => $link ,
'buttons' => 'none' ,
'outside_month' => False
)
)
);
2001-07-28 15:17:30 +02:00
$p -> parse ( 'row' , 'month' , True );
$p -> set_var ( 'mini_month' , '' );
2001-07-16 13:38:40 +02:00
}
2001-11-05 04:48:14 +01:00
return $p -> fp ( 'out' , 'year_t' );
2001-07-16 13:38:40 +02:00
}
2001-09-20 03:39:46 +02:00
function view ( $vcal_id = 0 , $cal_date = 0 )
2001-07-16 13:38:40 +02:00
{
2003-04-21 13:00:53 +02:00
$this -> cal_header ( lang ( 'View' ), True );
2001-07-16 13:38:40 +02:00
2002-09-17 04:25:40 +02:00
$cal_id = get_var ( 'cal_id' , Array ( 'GET' , 'POST' , 'DEFAULT' ), $vcal_id );
$date = get_var ( 'date' , Array ( 'GET' , 'DEFAULT' ), $cal_date );
2001-07-16 13:38:40 +02:00
// First, make sure they have permission to this entry
if ( $cal_id < 1 )
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'invalid_id' );
2001-07-16 13:38:40 +02:00
}
$event = $this -> bo -> read_entry ( $cal_id );
2001-10-03 02:31:03 +02:00
if ( ! isset ( $event [ 'id' ]))
2001-07-16 13:38:40 +02:00
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'not_exist' );
}
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $event ))
{
$this -> error_exit ( 'no_read_perm' );
2001-07-28 15:17:30 +02:00
}
2001-07-16 13:38:40 +02:00
2001-11-29 04:12:01 +01:00
$this -> bo -> repeating_events = Array ();
$this -> bo -> cached_events = Array ();
$this -> bo -> repeating_events [ 0 ] = $event ;
2002-08-25 06:07:21 +02:00
$datetime = mktime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-11-29 04:12:01 +01:00
$this -> bo -> check_repeating_events ( $datetime );
$check_date = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime , 'Ymd' );
if ( is_array ( $this -> bo -> cached_events [ $check_date ][ 0 ]) &&
$this -> bo -> cached_events [ $check_date ][ 0 ][ 'id' ] == $event [ 'id' ])
{
$starttime = $this -> bo -> maketime ( $event [ 'start' ]);
$endtime = $this -> bo -> maketime ( $event [ 'end' ]);
$event [ 'start' ][ 'month' ] = $this -> bo -> month ;
$event [ 'start' ][ 'mday' ] = $this -> bo -> day ;
$event [ 'start' ][ 'year' ] = $this -> bo -> year ;
$temp_end = $this -> bo -> maketime ( $event [ 'start' ]) + ( $endtime - $starttime );
$event [ 'end' ][ 'month' ] = date ( 'm' , $temp_end );
$event [ 'end' ][ 'mday' ] = date ( 'd' , $temp_end );
$event [ 'end' ][ 'year' ] = date ( 'Y' , $temp_end );
}
2001-07-30 00:09:24 +02:00
2003-04-21 13:00:53 +02:00
if ( ! $this -> view_event ( $event , True ))
2001-11-29 04:12:01 +01:00
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'no_read_perm' );
2001-11-29 04:12:01 +01:00
}
2001-10-26 01:52:15 +02:00
2002-11-23 21:48:42 +01:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-11-29 04:12:01 +01:00
$p -> set_file (
Array (
'form_button' => 'form_button_script.tpl'
)
);
2001-10-26 01:52:15 +02:00
2003-04-21 13:00:53 +02:00
$button_left = $button_center = $button_right = '' ;
2002-09-17 04:25:40 +02:00
if ( $this -> bo -> check_perms ( PHPGW_ACL_EDIT , $event ))
2001-11-29 04:12:01 +01:00
{
2002-09-17 04:25:40 +02:00
if ( $event [ 'recur_type' ] != MCAL_RECUR_NONE )
2001-07-30 00:09:24 +02:00
{
2002-09-17 04:25:40 +02:00
$var = Array (
'action_url_button' => $this -> page ( 'edit' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Edit Single' ),
'action_confirm_button' => '' ,
'action_extra_field' => '<input type="hidden" name="edit_type" value="single">' . " \n "
. '<input type="hidden" name="date" value="' . sprintf ( '%04d%02d%02d' , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ) . '">'
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2001-10-26 01:52:15 +02:00
2001-11-29 04:12:01 +01:00
$var = Array (
2002-09-17 04:25:40 +02:00
'action_url_button' => $this -> page ( 'edit' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Edit Series' ),
2001-11-29 04:12:01 +01:00
'action_confirm_button' => '' ,
2002-09-17 04:25:40 +02:00
'action_extra_field' => '<input type="hidden" name="edit_type" value="series">'
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2002-09-17 04:25:40 +02:00
}
else
{
$var = Array (
'action_url_button' => $this -> page ( 'edit' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Edit' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
2001-11-29 04:12:01 +01:00
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2001-11-29 04:12:01 +01:00
}
2002-09-17 04:25:40 +02:00
$var = Array (
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=calendar.uialarm.manager' ),
'action_text_button' => lang ( 'Alarm Management' ),
'action_confirm_button' => '' ,
'action_extra_field' => '<input type="hidden" name="cal_id" value="' . $cal_id . '">'
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_center .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2002-09-17 04:25:40 +02:00
}
if ( $this -> bo -> check_perms ( PHPGW_ACL_DELETE , $event ))
{
if ( $event [ 'recur_type' ] != MCAL_RECUR_NONE )
2001-11-29 04:12:01 +01:00
{
2002-09-17 04:25:40 +02:00
$var = Array (
'action_url_button' => $this -> page ( 'delete' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Delete Single' ),
'action_confirm_button' => " onClick= \" return confirm(' " . lang ( " Are you sure \\ nyou want to \\ ndelete this single occurence ? \\ n \\ nThis will delete \\ nthis entry for all users. " ) . " ') \" " ,
'action_extra_field' => '<input type="hidden" name="delete_type" value="single">'
2003-02-26 17:42:04 +01:00
. '<input type="hidden" name="date" value="' . sprintf ( '%04d%02d%02d' , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ) . '">'
2002-09-17 04:25:40 +02:00
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_right .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2001-11-03 02:52:26 +01:00
2002-09-17 04:25:40 +02:00
$var = Array (
'action_url_button' => $this -> page ( 'delete' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Delete Series' ),
'action_confirm_button' => " onClick= \" return confirm(' " . lang ( " Are you sure \\ nyou want to \\ ndelete this entry ? \\ n \\ nThis will delete \\ nthis entry for all users. " ) . " ') \" " ,
'action_extra_field' => '<input type="hidden" name="delete_type" value="series">'
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_right .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2001-11-05 03:08:31 +01:00
2002-09-17 04:25:40 +02:00
if ( $event [ 'recur_exception' ])
2001-11-29 04:12:01 +01:00
{
$var = Array (
2002-09-17 04:25:40 +02:00
'action_url_button' => $this -> page ( 'reinstate_list' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Reinstate' ),
'action_confirm_button' => '' ,
2001-11-29 04:12:01 +01:00
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_center .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2001-11-29 04:12:01 +01:00
}
2001-07-30 00:09:24 +02:00
}
2002-09-17 04:25:40 +02:00
else
{
$var = Array (
'action_url_button' => $this -> page ( 'delete' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Delete' ),
'action_confirm_button' => " onClick= \" return confirm(' " . lang ( " Are you sure \\ nyou want to \\ ndelete this entry ? \\ n \\ nThis will delete \\ nthis entry for all users. " ) . " ') \" " ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_right .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2002-09-17 04:25:40 +02:00
}
2001-07-16 13:38:40 +02:00
}
2001-11-29 04:12:01 +01:00
$var = Array (
2001-12-10 04:58:44 +01:00
'action_url_button' => $this -> page ( 'export' ),
2001-11-29 04:12:01 +01:00
'action_text_button' => lang ( 'Export' ),
'action_confirm_button' => '' ,
2001-12-10 04:58:44 +01:00
'action_extra_field' => '<input type="hidden" name="cal_id" value="' . $cal_id . '">'
2001-11-29 04:12:01 +01:00
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_center .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
{
$var = Array (
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ),
'action_text_button' => lang ( 'Done' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left .= '<td>' . $p -> fp ( 'button' , 'form_button' ) . '</td>' ;
}
$p -> set_var ( array (
'button_left' => $button_left ,
'button_center' => $button_center ,
'button_right' => $button_right
));
$p -> fp ( 'phpgw_body' , 'view_event' , True );
2002-09-17 04:25:40 +02:00
$GLOBALS [ 'phpgw' ] -> hooks -> process ( 'calendar_view' );
2001-07-16 13:38:40 +02:00
}
2001-08-12 16:47:23 +02:00
function edit ( $params = '' )
2001-07-16 13:38:40 +02:00
{
2001-11-08 01:18:42 +01:00
if ( $this -> debug )
{
echo '<!-- params[readsess] = ' . $params [ 'readsess' ] . ' -->' . " \n " ;
echo '<!-- params[cd] = ' . $params [ 'cd' ] . ' -->' . " \n " ;
}
2001-08-12 16:47:23 +02:00
2001-09-28 04:06:35 +02:00
if ( isset ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'readsess' ]))
{
$params [ 'readsess' ] = $GLOBALS [ 'HTTP_GET_VARS' ][ 'readsess' ];
$params [ 'cd' ] = 0 ;
}
2001-11-08 01:18:42 +01:00
if ( $this -> debug )
{
echo '<!-- params[readsess] = ' . $params [ 'readsess' ] . ' -->' . " \n " ;
echo '<!-- params[cd] = ' . $params [ 'cd' ] . ' -->' . " \n " ;
}
if ( $params != '' && @ is_array ( $params ) && @ isset ( $params [ 'readsess' ]))
2001-07-16 13:38:40 +02:00
{
2001-07-28 15:17:30 +02:00
$can_edit = True ;
2001-08-12 16:47:23 +02:00
$this -> edit_form (
Array (
2001-11-08 01:18:42 +01:00
'event' => $this -> bo -> restore_from_appsession (),
2001-08-12 16:47:23 +02:00
'cd' => $params [ 'cd' ]
)
);
2001-07-16 13:38:40 +02:00
}
2001-08-27 03:30:40 +02:00
elseif ( isset ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]))
2001-07-16 13:38:40 +02:00
{
2002-11-23 15:19:56 +01:00
$cal_id = intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]);
$event = $this -> bo -> read_entry ( $cal_id );
2002-08-25 06:07:21 +02:00
2002-11-23 15:19:56 +01:00
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_EDIT , $event ))
2001-07-16 13:38:40 +02:00
{
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw' ] -> redirect ( $this -> page ( 'view' , '&cal_id=' . $cal_id ));
2001-08-27 03:30:40 +02:00
}
if ( @ isset ( $GLOBALS [ 'HTTP_POST_VARS' ][ 'edit_type' ]) && $GLOBALS [ 'HTTP_POST_VARS' ][ 'edit_type' ] == 'single' )
{
$event [ 'id' ] = 0 ;
2003-02-26 17:42:04 +01:00
$this -> bo -> set_recur_date ( $event , $GLOBALS [ 'HTTP_POST_VARS' ][ 'date' ]);
2001-08-27 03:30:40 +02:00
$event [ 'recur_type' ] = MCAL_RECUR_NONE ;
$event [ 'recur_interval' ] = 0 ;
$event [ 'recur_data' ] = 0 ;
$event [ 'recur_enddate' ][ 'month' ] = 0 ;
$event [ 'recur_enddate' ][ 'mday' ] = 0 ;
$event [ 'recur_enddate' ][ 'year' ] = 0 ;
2003-02-26 17:42:04 +01:00
$event [ 'recur_execption' ] = array ();
2001-07-16 13:38:40 +02:00
}
2001-08-12 16:47:23 +02:00
$this -> edit_form (
Array (
'event' => $event ,
'cd' => $cd
)
);
2001-07-16 13:38:40 +02:00
}
2001-08-12 16:47:23 +02:00
}
2001-07-28 15:17:30 +02:00
2001-08-29 21:18:32 +02:00
function export ( $vcal_id = 0 )
{
2001-12-10 04:58:44 +01:00
if ( ! isset ( $GLOBALS [ 'HTTP_POST_VARS' ][ 'cal_id' ]) || ! $GLOBALS [ 'HTTP_POST_VARS' ][ 'cal_id' ])
{
Header ( 'Location: ' . $this -> index ());
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-12-10 04:58:44 +01:00
}
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ] = True ;
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ] = True ;
if ( ! isset ( $GLOBALS [ 'HTTP_POST_VARS' ][ 'output_file' ]) || ! $GLOBALS [ 'HTTP_POST_VARS' ][ 'output_file' ])
{
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Export' );
2001-12-10 04:58:44 +01:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-12-10 04:58:44 +01:00
$p -> set_file (
Array (
'form_button' => 'form_button_script.tpl'
)
);
$var = Array (
'action_url_button' => $this -> page ( 'export' ),
'action_text_button' => lang ( 'Submit' ),
'action_confirm_button' => '' ,
'action_extra_field' => " \n " . lang ( 'Enter Output Filename: ( .vcs appended )' ) . " \n " . ' <input name="output_file" size="25" maxlength="80" value="">' . " \n "
. ' <input type="hidden" name="cal_id" value="' . $GLOBALS [ 'HTTP_POST_VARS' ][ 'cal_id' ] . '">'
);
$p -> set_var ( $var );
echo $p -> fp ( 'out' , 'form_button' );
}
else
{
$output_file = $GLOBALS [ 'HTTP_POST_VARS' ][ 'output_file' ] . '.vcs' ;
$vfs = CreateObject ( 'phpgwapi.vfs' );
// if(!$vfs->file_exists('.calendar',array(RELATIVE_USER)))
// {
// $vfs->mkdir('.calendar',array(RELATIVE_USER));
// }
$content = ExecMethod ( 'calendar.boicalendar.export' , $GLOBALS [ 'HTTP_POST_VARS' ][ 'cal_id' ]);
2003-02-13 23:58:09 +01:00
$vfs -> cd ( array ( 'string' => '/' ,
'relatives' => array ( RELATIVE_USER )
));
$vfs -> write ( array ( 'string' => $output_file ,
'relatives' => array ( RELATIVE_USER ),
'content' => $content
));
2001-12-10 04:58:44 +01:00
// $vfs->write($output_file, array (RELATIVE_USER_APP), $content);
2002-04-16 18:52:36 +02:00
if ( $this -> debug )
{
echo '<!-- DEBUG: Output Filename = ' . $output_file . ' -->' . " \n " ;
echo '<!-- DEBUG: Fakebase = ' . $vfs -> fakebase . ' -->' . " \n " ;
echo '<!-- DEBUG: Path = ' . $vfs -> pwd () . ' -->' . " \n " ;
}
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
{
Header ( 'Location: ' . $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ));
}
else
{
Header ( 'Location: ' . $this -> index ());
}
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-12-10 04:58:44 +01:00
}
2001-10-03 02:31:03 +02:00
}
2001-08-29 21:18:32 +02:00
2001-11-05 03:08:31 +01:00
function reinstate_list ( $params = '' )
{
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_EDIT ))
{
$this -> no_edit ();
}
elseif ( ! $this -> bo -> check_perms ( PHPGW_ACL_ADD ))
{
$this -> index ();
}
2003-04-21 13:00:53 +02:00
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Reinstate' );
2001-11-05 03:08:31 +01:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2003-04-21 13:00:53 +02:00
$cal_id = get_var ( 'cal_id' , array ( 'GET' ), $params [ 'cal_id' ]);
2001-11-05 03:08:31 +01:00
if ( $cal_id < 1 )
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'invalid_id' );
2001-11-05 03:08:31 +01:00
}
2003-04-21 13:00:53 +02:00
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $cal_id ))
2001-11-05 03:08:31 +01:00
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'no_read_perm' );
2001-11-05 03:08:31 +01:00
}
$event = $this -> bo -> read_entry ( $cal_id );
if ( ! isset ( $event [ 'id' ]))
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'not_exist' );
2001-11-05 03:08:31 +01:00
}
elseif ( ! isset ( $event [ 'recur_exception' ]))
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( lang ( 'Sorry, this event does not have exceptions defined' ));
2001-11-05 03:08:31 +01:00
}
2003-04-21 13:00:53 +02:00
if ( ! $this -> view_event ( $event , True ))
2001-11-05 03:08:31 +01:00
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( 'no_read_perm' );
2001-11-05 03:08:31 +01:00
}
2003-04-21 13:00:53 +02:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-11-05 03:08:31 +01:00
$p -> set_file (
Array (
'form_button' => 'form_button_script.tpl'
)
);
$str = '' ;
for ( $i = 0 ; $i < count ( $event [ 'recur_exception' ]); $i ++ )
{
$str .= ' <option value="' . $i . '">' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $event [ 'recur_exception' ][ $i ]) . '</option>' . " \n " ;
}
2003-04-21 13:00:53 +02:00
$this -> output_template_array ( $p , 'row' , 'list' , array (
'field' => lang ( 'Execptions' ),
'data' => '<select name="reinstate_index[]" multiple size="5">' . " \n " . $str . '</select>'
));
2001-11-05 03:08:31 +01:00
$var = Array (
'action_url_button' => $this -> page ( 'reinstate' , '&cal_id=' . $cal_id ),
'action_text_button' => lang ( 'Reinstate' ),
'action_confirm_button' => '' ,
2003-04-21 13:00:53 +02:00
'action_extra_field' => ''
2001-11-05 03:08:31 +01:00
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left = '<td>' . $p -> fp ( 'out' , 'form_button' ) . '</td>' ;
2001-11-05 03:08:31 +01:00
$var = Array (
2002-11-23 15:19:56 +01:00
'action_url_button' => $this -> bo -> return_to ? $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ) : $this -> page ( '' ),
2001-11-05 03:08:31 +01:00
'action_text_button' => lang ( 'Cancel' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$button_left .= '<td>' . $p -> fp ( 'out' , 'form_button' ) . '</td>' ;
$p -> set_var ( 'button_left' , $button_left );
$p -> pfp ( 'phpgw_body' , 'view_event' );
2001-11-05 03:08:31 +01:00
}
function reinstate ( $params = '' )
{
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_EDIT ))
{
$this -> no_edit ();
}
elseif ( ! $this -> bo -> check_perms ( PHPGW_ACL_ADD ))
{
$this -> index ();
}
$cal_id = ( isset ( $params [ 'cal_id' ]) ? intval ( $params [ 'cal_id' ]) : '' );
$cal_id = ( $cal_id == '' ? intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]) : $cal_id );
$reinstate_index = ( isset ( $params [ 'reinstate_index' ]) ? intval ( $params [ 'reinstate_index' ]) : '' );
$reinstate_index = ( $reinstate_index == '' ? intval ( $GLOBALS [ 'HTTP_POST_VARS' ][ 'reinstate_index' ]) : $reinstate_index );
if ( $this -> debug )
{
echo '<!-- Calling bo->reinstate -->' . " \n " ;
}
$cd = $this -> bo -> reinstate (
Array (
'cal_id' => $cal_id ,
'reinstate_index' => $reinstate_index
)
);
if ( $this -> debug )
{
echo '<!-- Return Value = ' . $cd . ' -->' . " \n " ;
}
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
{
Header ( 'Location: ' . $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ));
}
else
{
Header ( 'Location: ' . $this -> page ( '' ,( $cd ? '&cd=' . $cd : '' )));
}
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-11-05 03:08:31 +01:00
}
2001-08-06 04:41:36 +02:00
function add ( $cd = 0 , $readsess = 0 )
2001-07-28 15:17:30 +02:00
{
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_ADD ))
{
$this -> index ();
}
2001-08-06 04:41:36 +02:00
if ( $readsess )
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$event = $this -> bo -> restore_from_appsession ;
2001-07-30 00:09:24 +02:00
if ( ! $event [ 'owner' ])
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$this -> bo -> add_attribute ( 'owner' , $this -> bo -> owner );
2001-07-16 13:38:40 +02:00
}
$can_edit = True ;
}
else
{
2001-07-18 19:32:10 +02:00
$this -> bo -> event_init ();
$this -> bo -> add_attribute ( 'id' , 0 );
2001-07-16 13:38:40 +02:00
$can_edit = True ;
2001-09-07 19:51:48 +02:00
$thishour = ( isset ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'hour' ]) ? intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'hour' ]) : 0 );
2001-10-03 02:31:03 +02:00
$thisminute = ( isset ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'minute' ]) ? intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'minute' ]) : 0 );
2001-07-18 19:32:10 +02:00
$this -> bo -> set_start ( $this -> bo -> year , $this -> bo -> month , $this -> bo -> day , $thishour , $thisminute , 0 );
$this -> bo -> set_end ( $this -> bo -> year , $this -> bo -> month , $this -> bo -> day , $thishour , $thisminute , 0 );
$this -> bo -> set_title ( '' );
$this -> bo -> set_description ( '' );
2001-09-07 18:37:11 +02:00
$this -> bo -> add_attribute ( 'location' , '' );
$this -> bo -> add_attribute ( 'uid' , '' );
2001-07-18 19:32:10 +02:00
$this -> bo -> add_attribute ( 'priority' , 2 );
2001-07-28 15:17:30 +02:00
if ( @ $this -> bo -> prefs [ 'calendar' ][ 'default_private' ])
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$this -> bo -> set_class ( False );
2001-07-16 13:38:40 +02:00
}
else
{
2001-07-18 19:32:10 +02:00
$this -> bo -> set_class ( True );
2001-07-16 13:38:40 +02:00
}
2001-07-30 00:09:24 +02:00
$this -> bo -> add_attribute ( 'participants' , 'A' , $this -> bo -> owner );
2001-07-18 19:32:10 +02:00
$this -> bo -> set_recur_none ();
$event = $this -> bo -> get_cached_event ();
2001-07-16 13:38:40 +02:00
}
2001-10-03 02:31:03 +02:00
$this -> edit_form (
Array (
'event' => $event ,
'cd' => $cd
)
);
2001-07-28 15:17:30 +02:00
}
2001-07-16 13:38:40 +02:00
2001-07-28 15:17:30 +02:00
function delete ()
{
2002-09-17 04:25:40 +02:00
$cal_id = get_var ( 'cal_id' , Array ( 'GET' ));
if ( ! $cal_id )
2001-08-12 16:47:23 +02:00
{
2001-08-13 23:12:16 +02:00
Header ( 'Location: ' . $this -> page ( '' , '&date=' . sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day )));
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-08-12 16:47:23 +02:00
}
2001-11-05 03:08:31 +01:00
$date = sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day );
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> check_perms ( PHPGW_ACL_DELETE , $cal_id ))
2001-07-16 13:38:40 +02:00
{
2002-09-17 04:25:40 +02:00
$delete_type = get_var ( 'delete_type' , Array ( 'POST' ));
2002-11-23 15:19:56 +01:00
if ( $deleted_type && $delete_type == 'single' )
2001-11-03 02:52:26 +01:00
{
2003-02-26 17:42:04 +01:00
$date = $GLOBALS [ 'HTTP_POST_VARS' ][ 'date' ];
2001-11-05 03:08:31 +01:00
$cd = $this -> bo -> delete_single (
Array (
2002-09-17 04:25:40 +02:00
'id' => intval ( $cal_id ),
2003-02-26 17:42:04 +01:00
'year' => substr ( $date , 0 , 4 ),
'month' => substr ( $date , 4 , 2 ),
'day' => substr ( $date , 6 , 2 )
2001-11-05 03:08:31 +01:00
)
);
2001-11-03 02:52:26 +01:00
}
2002-09-17 04:25:40 +02:00
else
2001-11-03 02:52:26 +01:00
{
2002-09-17 04:25:40 +02:00
$cd = $this -> bo -> delete_entry ( intval ( $cal_id ));
2001-11-05 03:08:31 +01:00
$this -> bo -> expunge ();
2001-11-03 02:52:26 +01:00
}
2001-07-16 13:38:40 +02:00
}
else
{
2001-07-28 15:17:30 +02:00
$cd = '' ;
2001-07-16 13:38:40 +02:00
}
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
{
Header ( 'Location: ' . $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ));
}
else
{
Header ( 'Location: ' . $this -> page ( '' , '&date=' . $date . ( $cd ? '&cd=' . $cd : '' )));
}
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-07-28 15:17:30 +02:00
}
function day ()
{
$this -> bo -> read_holidays ();
2001-11-05 03:08:31 +01:00
if ( ! $this -> bo -> printer_friendly || ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'display_minicals' ]))
2001-08-13 06:49:19 +02:00
{
$minical = $this -> mini_calendar (
Array (
'day' => $this -> bo -> day ,
'month' => $this -> bo -> month ,
'year' => $this -> bo -> year ,
'link' => 'day'
)
);
}
else
{
$minical = '' ;
}
2001-07-28 15:17:30 +02:00
if ( ! $this -> bo -> printer_friendly )
2001-07-16 13:38:40 +02:00
{
2001-07-28 15:17:30 +02:00
$printer = '' ;
2001-08-12 16:47:23 +02:00
$param = '&date=' . sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ) . '&friendly=1' ;
2001-07-28 15:17:30 +02:00
$print = '<a href="' . $this -> page ( 'day' . $param ) . " \" TARGET= \" cal_printer_friendly \" onMouseOver= \" window.status = ' " . lang ( 'Generate printer-friendly version' ) . " ' \" >[ " . lang ( 'Printer Friendly' ) . ']</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nofooter' ] = True ;
2001-08-13 16:11:07 +02:00
$printer = '<body bgcolor="' . $this -> theme [ 'bg_color' ] . '">' ;
2001-07-28 15:17:30 +02:00
$print = '' ;
2001-07-16 13:38:40 +02:00
}
2002-06-25 01:24:24 +02:00
$now = $GLOBALS [ 'phpgw' ] -> datetime -> makegmttime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year );
2002-08-25 06:07:21 +02:00
$now [ 'raw' ] += $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'day_t' => 'day.tpl'
)
);
2001-11-05 03:08:31 +01:00
$p -> set_block ( 'day_t' , 'day' , 'day' );
$p -> set_block ( 'day_t' , 'day_event' , 'day_event' );
2001-07-16 13:38:40 +02:00
2001-07-28 15:17:30 +02:00
$var = Array (
2001-10-03 02:31:03 +02:00
'printer_friendly' => $printer ,
2001-11-05 04:48:14 +01:00
'bg_text' => $this -> theme [ 'bg_text' ],
2001-10-03 02:31:03 +02:00
'daily_events' => $this -> print_day (
Array (
'year' => $this -> bo -> year ,
'month' => $this -> bo -> month ,
'day' => $this -> bo -> day
)
),
'small_calendar' => $minical ,
2002-11-23 15:19:56 +01:00
'date' => $this -> bo -> long_date ( $now ),
2001-10-23 12:58:53 +02:00
'username' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ),
2001-10-03 02:31:03 +02:00
'print' => $print
2001-07-16 13:38:40 +02:00
);
2001-07-28 15:17:30 +02:00
$p -> set_var ( $var );
2001-11-05 03:08:31 +01:00
$p -> parse ( 'day_events' , 'day_event' );
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , $this -> printer_friendly ( $p -> fp ( 'out' , 'day' ), lang ( 'Dayview' )));
2001-07-28 15:17:30 +02:00
}
2001-07-16 13:38:40 +02:00
2001-07-28 15:17:30 +02:00
function edit_status ()
{
2001-08-12 16:47:23 +02:00
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ] = True ;
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ] = True ;
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Change Status' );
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2001-07-28 15:17:30 +02:00
2001-09-07 19:51:48 +02:00
$event = $this -> bo -> read_entry ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]);
2001-07-16 13:38:40 +02:00
2001-07-30 00:09:24 +02:00
reset ( $event [ 'participants' ]);
2001-07-28 15:17:30 +02:00
2001-08-20 02:10:16 +02:00
if ( ! $event [ 'participants' ][ $this -> bo -> owner ])
2001-07-16 13:38:40 +02:00
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( lang ( 'The user %1 is not participating in this event!' , $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner )));
2001-07-16 13:38:40 +02:00
}
2001-07-28 15:17:30 +02:00
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_EDIT ))
2001-07-16 13:38:40 +02:00
{
2001-07-28 15:17:30 +02:00
$this -> no_edit ();
return ;
2001-07-16 13:38:40 +02:00
}
2001-07-28 15:17:30 +02:00
2002-08-25 06:07:21 +02:00
$freetime = $GLOBALS [ 'phpgw' ] -> datetime -> localdates ( mktime ( 0 , 0 , 0 , $event [ 'start' ][ 'month' ], $event [ 'start' ][ 'mday' ], $event [ 'start' ][ 'year' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset );
2001-08-12 16:47:23 +02:00
echo $this -> timematrix (
Array (
'date' => $freetime ,
'starttime' => $this -> bo -> splittime ( '000000' , False ),
'endtime' => 0 ,
'participants' => $event [ 'participants' ]
)
2003-04-21 13:00:53 +02:00
) . '<br>' ;
2001-07-28 15:17:30 +02:00
2001-10-21 15:30:40 +02:00
$event = $this -> bo -> read_entry ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]);
2003-04-21 13:00:53 +02:00
$this -> view_event ( $event );
2003-04-21 13:38:58 +02:00
$GLOBALS [ 'phpgw' ] -> template -> set_var ( array (
'button_left' => '' ,
'button_center' => '' ,
'button_right' => ''
));
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw' ] -> template -> fp ( 'phpgw_body' , 'view_event' , True );
2001-07-28 15:17:30 +02:00
2001-07-30 00:09:24 +02:00
echo $this -> get_response ( $event [ 'id' ]);
2001-07-28 15:17:30 +02:00
}
function set_action ()
{
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_EDIT ))
2001-07-16 13:38:40 +02:00
{
2001-10-03 02:31:03 +02:00
$this -> no_edit ();
2001-07-28 15:17:30 +02:00
return ;
2001-07-16 13:38:40 +02:00
}
2001-07-28 15:17:30 +02:00
2001-09-07 19:51:48 +02:00
$this -> bo -> set_status ( intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ]), intval ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'action' ]));
2001-07-28 15:17:30 +02:00
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
{
Header ( 'Location: ' . $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ));
}
else
{
Header ( 'Location: ' . $this -> page ( '' , '' ));
}
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-07-16 13:38:40 +02:00
}
2001-07-28 15:17:30 +02:00
function planner ()
2001-07-18 19:32:10 +02:00
{
2002-11-23 15:19:56 +01:00
if ( floor ( phpversion ()) < 4 )
{
return ;
}
$home = strstr ( $GLOBALS [ 'PHP_SELF' ], 'home' ) !== False ;
// generate header and set global/member variables
//
$this -> planner_prepare ( $home );
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// process events within selected interval
//
$this -> planner_process_interval ();
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// generate the planner view
//
if ( ! $home )
{
echo '<p>' . $this -> planner_print_rows ();
}
else
{
return $this -> planner_print_rows ();
}
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
function set_planner_group_members ()
{
$type = $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $this -> bo -> owner );
if ( $type == 'g' ) // display schedule of all group members
{
$members = array ();
$ids = $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( $this -> bo -> owner , 1 , 'phpgw_group' );
while ( list (, $id ) = each ( $ids ))
{
if ( $this -> bo -> check_perms ( PHPGW_ACL_READ , 0 , $id ))
{
$members [ $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $id )] = $id ;
}
}
ksort ( $members );
$this -> planner_group_members = $members ;
}
else
{
$this -> planner_group_members = array (
$GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ) => $this -> bo -> owner
);
2002-09-17 04:25:40 +02:00
}
}
/**
* planner_prepare - prepare the planner view
*
2002-11-23 15:19:56 +01:00
* - sets global environment variables
2002-09-17 04:25:40 +02:00
* - initializes class member variables used in multiple planner related functions
* - generates header lines for the planner view ( month , calendar week , days )
*/
2002-11-23 15:19:56 +01:00
function planner_prepare ( $no_header = False )
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
// set some globals
//
if ( ! $no_header )
{
2003-04-21 13:00:53 +02:00
$this -> cal_header ( lang ( 'Group Planner' ));
2002-11-23 15:19:56 +01:00
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// intervals_per_day can be configured in preferences now :-)
//
if ( ! $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ])
{
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'planner_intervals_per_day' , 3 );
$GLOBALS [ 'phpgw' ] -> preferences -> save_repository ();
$this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ] = 3 ;
}
$intervals_per_day = $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ];
$this -> bo -> save_sessiondata (); // need to save $this->bo->save_owner
2001-09-07 18:37:11 +02:00
2002-11-23 15:19:56 +01:00
// set title for table and rows of planner view
//
if ( $this -> bo -> sortby == 'category' )
{
$title = lang ( 'Category' );
}
else
{
$title = lang ( 'User' );
2001-09-07 18:37:11 +02:00
2002-11-23 15:19:56 +01:00
$this -> set_planner_group_members ();
}
2001-07-18 19:32:10 +02:00
2002-11-23 15:19:56 +01:00
// create/initialize variables directly used for HTML code generation
//
$this -> planner_html = CreateObject ( 'calendar.html' );
$this -> planner_header = array ();
$this -> planner_rows = array ();
2001-07-18 19:32:10 +02:00
2002-11-23 15:19:56 +01:00
// generate header lines with days and associated months
//
$hdr = & $this -> planner_header ;
$hdr [ 0 ][ '0' ] = $title ;
$hdr [ 0 ][ '.0' ] = 'rowspan="3"' ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$this -> planner_days = 0 ; // reset
2001-07-28 15:17:30 +02:00
2002-11-23 15:19:56 +01:00
$m = $this -> bo -> month ;
$y = $this -> bo -> year ;
$this -> bo -> read_holidays ( $y );
for ( $i = 1 ; $i <= $this -> bo -> num_months ; $i ++ , $m ++ )
{
if ( $m == 13 )
{
$m = 1 ; $y ++ ; // "wrap-around" into new year
$this -> bo -> read_holidays ( $y );
}
$days = $GLOBALS [ 'phpgw' ] -> datetime -> days_in_month ( $m , $y );
$d = mktime ( 0 , 0 , 0 , $m , 1 , $y );
$month = lang ( date ( 'F' , $d )) . strftime ( ' %Y' , $d );
2002-11-23 21:48:42 +01:00
$class = $m % 2 || $this -> bo -> num_months == 1 ? 'th' : 'row_on' ;
2002-11-23 15:19:56 +01:00
$cols = $days * $intervals_per_day ;
2002-11-23 21:48:42 +01:00
$hdr [ 0 ][ '.' . $i ] = 'class="' . $class . '" colspan="' . $cols . '" align="center"' ;
2002-11-23 15:19:56 +01:00
$prev_month = sprintf ( '%04d%02d01' , $y - ( $m == 1 ), $m > 1 ? $m - 1 : 12 );
$next_month = sprintf ( '%04d%02d01' , $y + ( $m == 12 ), $m < 12 ? $m + 1 : 1 );
$prev_link = $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , " menuaction=calendar.uicalendar.planner&date= $prev_month " );
$next_link = $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , " menuaction=calendar.uicalendar.planner&date= $next_month " );
$hdr [ 0 ][ $i ] = " <b><a href= \" $prev_link\ " >& lt ; & lt ; </ a > & nbsp $month & nbsp < a href = \ " $next_link\ " >& gt ; & gt ; </ a ></ b > " ;
$add_owner = array (); // if no add-rights on the showed cal use own cal
if ( ! $this -> bo -> save_owner && ! $this -> bo -> check_perms ( PHPGW_ACL_ADD ) ||
! $this -> bo -> check_perms ( PHPGW_ACL_ADD , 0 , $this -> bo -> save_owner ))
{
$add_owner = array (
'owner' => $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'account_id' ]
);
}
for ( $d = 1 ; $d <= $days ; $d ++ )
{
$dayname = substr ( lang ( date ( 'D' , mktime ( 0 , 0 , 0 , $m , $d , $y ))), 0 , 2 );
$index = $d + $this -> planner_days ;
$hdr [ 2 ][ '.' . $index ] = 'colspan="' . $intervals_per_day . '" align="center"' ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// highlight today, saturday, sunday and holidays
//
2002-11-23 21:48:42 +01:00
$class = 'row_off' ;
2002-11-23 15:19:56 +01:00
$dow = $GLOBALS [ 'phpgw' ] -> datetime -> day_of_week ( $y , $m , $d );
$date = sprintf ( " %04d%02d%02d " , $y , $m , $d );
if ( $date == date ( 'Ymd' ))
{
2002-11-23 21:48:42 +01:00
$class = 'cal_today' ;
2002-11-23 15:19:56 +01:00
}
elseif ( $this -> bo -> cached_holidays [ $date ])
{
2002-11-23 21:48:42 +01:00
$class = 'cal_holiday' ;
2002-11-23 15:19:56 +01:00
$hdr [ 2 ][ '.' . $index ] .= ' title="' . $this -> bo -> cached_holidays [ $date ][ 0 ][ 'name' ] . '"' ;
}
elseif ( $dow == 0 || $dow == 6 )
{
2002-11-23 21:48:42 +01:00
$class = 'th' ;
2002-11-23 15:19:56 +01:00
}
2002-09-17 04:25:40 +02:00
2002-11-23 21:48:42 +01:00
$hdr [ 2 ][ '.' . $index ] .= " class= \" $class\ " " ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$hdr [ 2 ][ $index ] = '<a href="' . $this -> planner_html -> link ( '/index.php' ,
array (
'menuaction' => 'calendar.uicalendar.add' ,
'date' => $date
) + $add_owner
) . '">' . $dayname . '<br>' . $d . '</a>' ;
}
$this -> planner_days += $days ;
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// create/initialize member variables describing the time interval to be displayed
//
$this -> planner_end_month = $m - 1 ;
$this -> planner_end_year = $y ;
$this -> planner_days_in_end_month = $GLOBALS [ 'phpgw' ] -> datetime -> days_in_month ( $this -> planner_end_month , $this -> planner_end_year );
$this -> planner_firstday = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $this -> bo -> month , 1 , $this -> bo -> year )));
$this -> planner_lastday = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $this -> planner_end_month , $this -> planner_days_in_end_month , $this -> planner_end_year )));
2002-09-20 01:45:19 +02:00
2002-11-23 15:19:56 +01:00
// generate line with calendar weeks in observed interval
//
$d = mktime ( 0 , 0 , 0 , $this -> bo -> month , 1 , $this -> bo -> year );
$w = date ( 'W' , $d );
if ( $w == 'W' ) // php < 4.1
{
$w = 1 + intval ( date ( 'z' , $d ) / 7 ); // a bit simplistic
}
$offset = ( 7 - date ( " w " , $d ) + 1 ) % 7 ;
$offset = $offset == 0 ? 7 : $offset ;
2002-11-23 21:48:42 +01:00
$class = $w % 2 ? 'th' : 'row_on' ;
2002-09-20 01:45:19 +02:00
2002-11-23 21:48:42 +01:00
$hdr [ 1 ][ '.' . $w ] = 'class="' . $class . '" colspan="' . $intervals_per_day * $offset . '" align="left"' ;
2002-11-23 15:19:56 +01:00
$hdr [ 1 ][ $w ] = '' ;
if ( $offset >= 3 )
{
$hdr [ 1 ][ $w ] .= '<font size="-2"> ' . lang ( 'week' ) . ' ' . $w . ' </font>' ;
}
$days_left = $this -> planner_days - $offset ;
2001-07-18 19:32:10 +02:00
2002-11-23 15:19:56 +01:00
$colspan = 7 * $intervals_per_day ;
while ( $days_left > 0 )
{
$colspan = ( $days_left < 7 ) ? $days_left * $intervals_per_day : $colspan ;
$d += 604800 ; // 7 days whith 24 hours (1h == 3600 seconds) each
$w = date ( 'W' , $d );
if ( $w == 'W' ) // php < 4.1
{
$w = 1 + intval ( date ( 'z' , $d ) / 7 ); // a bit simplistic
}
$w += ( isset ( $hdr [ 1 ][ $w ])) ? 1 : 0 ; // bug in "date('W')" ?
2002-09-17 04:25:40 +02:00
2002-11-23 21:48:42 +01:00
$class = $w % 2 ? 'th' : 'row_on' ;
$hdr [ 1 ][ '.' . $w ] = 'class="' . $class . '" colspan="' . $colspan . '" align="left"' ;
2002-11-23 15:19:56 +01:00
$hdr [ 1 ][ $w ] = '' ;
if ( $days_left >= 3 )
{
$hdr [ 1 ][ $w ] .= '<font size="-2"> ' . lang ( 'week' ) . ' ' . $w . ' </font>' ;
}
2001-08-06 05:36:58 +02:00
2002-11-23 15:19:56 +01:00
$days_left -= 7 ;
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
return $hdr ;
2002-09-17 04:25:40 +02:00
}
/**
* planner_update_row - update a row of the planner view
*
2003-02-26 17:42:04 +01:00
* parameters are :
2002-09-17 04:25:40 +02:00
* - index ( e . g . user id , category id , ... ) of the row
* - name / title of the row ( e . g . user name , category name )
* - the event to be integrated
* - list of categories associated with the event
* - first and last cell of the row
*/
2002-11-23 15:19:56 +01:00
function planner_update_row ( $index , $name , $event , $cat , $start_cell , $end_cell )
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$rows = & $this -> planner_rows ;
$intervals_per_day = $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ];
$is_private = ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $event );
2003-02-26 17:42:04 +01:00
2002-11-23 15:19:56 +01:00
$view = $this -> planner_html -> link ( '/index.php' ,
array (
'menuaction' => 'calendar.uicalendar.view' ,
2003-02-26 17:42:04 +01:00
'cal_id' => $event [ 'id' ],
'date' => date ( 'Ymd' , $this -> bo -> maketime ( $event [ 'start' ]))
2002-11-23 15:19:56 +01:00
)
);
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// check how many lines are needed for this "row" (currently: user or category)
$i = 0 ;
do {
++ $i ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$k = $index . '_' . $i ;
$ka = '.nr_' . $k ;
2001-07-28 15:17:30 +02:00
2002-11-23 15:19:56 +01:00
if ( ! isset ( $rows [ $k ]))
{
if ( $i > 1 ) // further line - no name
2001-07-28 15:17:30 +02:00
{
2002-11-23 15:19:56 +01:00
$rows [ $k ] = array ();
$rows [ $index . '_1' ][ '._name' ] = 'rowspan="' . $i . '"' ;
2001-07-18 19:32:10 +02:00
}
2002-11-23 15:19:56 +01:00
else
{
$rows [ $k ][ '_name' ] = $name ;
}
$rows [ $ka ] = 0 ;
}
$rows [ $index . '_1' ][ '._name' ] .= ' nowrap' ; // title must be one row
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$row = & $rows [ $k ];
$akt_cell = & $rows [ $ka ];
} while ( $akt_cell > $start_cell );
2003-02-26 17:42:04 +01:00
$id = $event [ 'id' ] . '-' . date ( 'Ymd' , $this -> bo -> maketime ( $event [ 'start' ]));
2002-11-23 15:19:56 +01:00
if ( $akt_cell < $start_cell )
{
2003-02-26 17:42:04 +01:00
$row [ $id . '_1' ] = ' ' ;
$row [ '.' . $id . '_1' ] = 'colspan="' . ( $start_cell - $akt_cell ) . '"' ;
2002-11-23 15:19:56 +01:00
}
2003-02-26 17:42:04 +01:00
$opt = & $row [ '.' . $id . '_2' ];
$cel = & $row [ $id . '_2' ];
2002-11-23 15:19:56 +01:00
// if possible, display information about event within cells representing it
//
if ( $start_cell < $end_cell )
{
$colspan = $end_cell - $start_cell ;
$opt .= " colspan= " . ( 1 + $colspan );
if ( ! $is_private )
{
$max_chars = 6 * $colspan / $intervals_per_day - 5 ;
$max_chars /= ( $colspan < 9 ? 2 : 1 );
$min_chars = 3 ; // minimum for max_chars to display -> this should be configurable
if ( $max_chars >= $min_chars )
2001-07-28 15:17:30 +02:00
{
2002-11-23 15:19:56 +01:00
$len_title = strlen ( $event [ 'title' ]);
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( $len_title < $max_chars )
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$title = $event [ 'title' ];
$max_chars -= $len_title - 3 ; // 3 chars for separator: " - "
$len_descr = strlen ( $event [ 'description' ]);
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( $len_descr > 0 && $len_descr <= $max_chars )
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$event [ 'print_description' ] = 'yes' ;
2002-09-17 04:25:40 +02:00
}
}
2002-11-23 15:19:56 +01:00
else
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$title = substr ( $event [ 'title' ], 0 , $max_chars ) . '...' ;
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
$event [ 'print_title' ] = 'yes' ;
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
}
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( $bgcolor = $cat [ 'color' ])
{
$opt .= ' bgcolor="' . $bgcolor . '"' ;
}
if ( ! $is_private )
{
$opt .= ' title="' . lang ( 'Title' ) . " : " . $event [ 'title' ];
if ( $event [ 'description' ])
{
$opt .= " \n " . lang ( 'Description' ) . " : " . $event [ 'description' ];
}
}
else
{
$opt .= ' title="' . lang ( 'You do not have permission to read this record!' );
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$start = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $event [ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset );
$end = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $event [ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset );
$opt .= " \n " . lang ( 'Start Date/Time' ) . " : " . $start . " \n " . lang ( 'End Date/Time' ) . " : " . $end ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( $event [ 'location' ] && ! $is_private )
{
$opt .= " \n " . lang ( 'Location' ) . " : " . $event [ 'location' ];
}
2001-07-18 19:32:10 +02:00
2002-11-23 15:19:56 +01:00
if ( ! $is_private )
{
$opt .= " \" onClick= \" location=' " . $view . " ' \" " ;
$cel = '<a href="' . $view . '">' ;
}
else
{
$opt .= '"' ;
$cel = '' ;
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( $event [ 'priority' ] == 3 )
{
$cel .= $this -> planner_html -> image ( 'calendar' , 'mini-calendar-bar.gif' , '' , 'border="0"' );
}
2003-02-26 17:42:04 +01:00
if ( $event [ 'recur_type' ])
{
$cel .= $this -> planner_html -> image ( 'calendar' , 'recur.gif' , '' , 'border="0"' );
}
2002-11-23 15:19:56 +01:00
$cel .= $this -> planner_html -> image ( 'calendar' , count ( $event [ 'participants' ]) > 1 ? 'multi_3.gif' : 'single.gif' , $this -> planner_participants ( $event [ 'participants' ]), 'border="0"' );
$cel .= '</a>' ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( isset ( $event [ 'print_title' ]) && $event [ 'print_title' ] == 'yes' )
{
$cel .= '<font size="-2"> ' . $title . ' </font>' ;
2001-09-29 03:40:47 +02:00
}
2002-11-23 15:19:56 +01:00
if ( isset ( $event [ 'print_description' ]) && $event [ 'print_description' ] == 'yes' )
{
$cel .= '<font size="-2"> - ' . $event [ 'description' ] . ' </font>' ;
}
$akt_cell = $end_cell + 1 ;
return $rows ;
2002-09-17 04:25:40 +02:00
}
function planner_process_event ( $event )
{
2002-11-23 15:19:56 +01:00
$intervals_per_day = $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ];
$interval = $this -> planner_intervals [ $intervals_per_day ];
$last_cell = $intervals_per_day * $this -> planner_days - 1 ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$rows = & $this -> planner_rows ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// caluculate start and end of event
//
$event_start = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $event [ 'start' ][ 'month' ],
$event [ 'start' ][ 'mday' ],
$event [ 'start' ][ 'year' ])));
$event_end = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $event [ 'end' ][ 'month' ],
$event [ 'end' ][ 'mday' ],
$event [ 'end' ][ 'year' ])));
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// calculate first cell of event within observed interval
//
if ( $event_start >= $this -> planner_firstday )
{
$days_between = $GLOBALS [ 'phpgw' ] -> datetime -> days_between ( $this -> bo -> month , 1 , $this -> bo -> year , $event [ 'start' ][ 'month' ], $event [ 'start' ][ 'mday' ], $event [ 'start' ][ 'year' ]);
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
$start_cell = $intervals_per_day * $days_between + $interval [ $event [ 'start' ][ 'hour' ]];
}
else
{
$start_cell = 0 ;
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// calculate last cell of event within observed interval
//
if ( $event_end <= $this -> planner_lastday )
{
$days_between = $GLOBALS [ 'phpgw' ] -> datetime -> days_between ( $this -> bo -> month , 1 , $this -> bo -> year , $event [ 'end' ][ 'month' ], $event [ 'end' ][ 'mday' ], $event [ 'end' ][ 'year' ]);
$end_cell = $intervals_per_day * $days_between + $interval [ $event [ 'end' ][ 'hour' ]];
if ( $end_cell == $start_cell && $end_cell < $last_cell )
{
$end_cell ++ ; // min. width 1 interval
}
}
else
{
$end_cell = $last_cell ;
}
// get the categories associated with event
//
if ( $c = $event [ 'category' ])
{
list ( $cat ) = $this -> planner_category ( $event [ 'category' ]);
if ( $cat [ 'parent' ])
{
list ( $pcat ) = $this -> planner_category ( $c = $cat [ 'parent' ]);
}
else
{
$pcat = $cat ;
}
}
else
{
$cat = $pcat = array ( 'name' => lang ( 'none' ));
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// add the event to it`s associated row(s)
//
if ( $this -> bo -> sortby == 'category' )
{
// event needs to show up in it`s category`s row
//
$this -> planner_update_row ( $c , $pcat [ 'name' ], $event , $cat , $start_cell , $end_cell );
}
elseif ( $this -> bo -> sortby == 'user' )
{
// event needs to show up in rows of all participants that are also owners
//
reset ( $this -> planner_group_members );
while ( list ( $user_name , $id ) = each ( $this -> planner_group_members ))
{
$status = $event [ 'participants' ][ $id ];
if ( isset ( $status ) && $status != 'R' )
{
$this -> planner_update_row ( $user_name , $user_name , $event , $cat , $start_cell , $end_cell );
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
}
2001-07-18 19:32:10 +02:00
}
2002-09-17 04:25:40 +02:00
}
2001-09-29 03:40:47 +02:00
2002-09-17 04:25:40 +02:00
function planner_pad_rows ()
2003-04-12 21:21:22 +02:00
{
2002-11-23 15:19:56 +01:00
$rows = & $this -> planner_rows ;
if ( $this -> bo -> sortby == 'user' )
2001-09-29 03:40:47 +02:00
{
2002-11-23 15:19:56 +01:00
// add empty rows for users that do not participante in any event
//
reset ( $this -> planner_group_members );
while ( list ( $user_name , $id ) = each ( $this -> planner_group_members ))
{
$k = $user_name . '_1' ;
$ka = '.nr_' . $k ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
if ( ! isset ( $rows [ $k ]))
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$rows [ $k ][ '_name' ] = $user_name ;
$rows [ $k ][ '._name' ] .= ' nowrap' ;
$rows [ $ka ] = 0 ;
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
}
}
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// fill the remaining cols
//
$last_cell = $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ] * $this -> planner_days - 1 ;
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
ksort ( $rows );
while ( list ( $k , $r ) = each ( $rows ))
{
if ( is_array ( $r ))
{
2002-11-23 21:48:42 +01:00
$rows [ '.' . $k ] = 'class="' . $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color () . '"' ;
2002-11-23 15:19:56 +01:00
$row = & $rows [ $k ];
$akt_cell = & $rows [ '.nr_' . $k ];
if ( $akt_cell < $last_cell )
2002-09-17 04:25:40 +02:00
{
2002-11-23 15:19:56 +01:00
$row [ '3' ] = ' ' ;
$row [ '.3' ] = 'colspan="' . ( 1 + $last_cell - $akt_cell ) . '"' ;
2002-09-17 04:25:40 +02:00
}
2002-11-23 15:19:56 +01:00
}
2001-09-29 03:40:47 +02:00
}
}
2001-09-07 18:37:11 +02:00
2002-09-17 04:25:40 +02:00
function planner_print_rows ()
2003-04-12 21:21:22 +02:00
{
2002-11-23 21:48:42 +01:00
$class = 'class="th"' ;
2002-11-23 15:19:56 +01:00
$intervals_per_day = $this -> bo -> prefs [ 'calendar' ][ 'planner_intervals_per_day' ];
if ( $this -> debug )
{
_debug_array ( $this -> planner_rows );
reset ( $this -> planner_rows );
}
return $this -> planner_html -> table (
array (
'_hdr0' => $this -> planner_header [ 0 ],
2002-11-23 21:48:42 +01:00
'._hdr0' => $class ,
2002-11-23 15:19:56 +01:00
'_hdr1' => $this -> planner_header [ 1 ],
2002-11-23 21:48:42 +01:00
'._hdr1' => $class ,
2002-11-23 15:19:56 +01:00
'_hdr2' => $this -> planner_header [ 2 ],
2002-11-23 21:48:42 +01:00
'._hdr2' => $class
2002-11-23 15:19:56 +01:00
) + $this -> planner_rows ,
'width="100%" cols="' . ( 1 + $this -> planner_days_in_end_month * $intervals_per_day ) . '"' );
2003-04-12 21:21:22 +02:00
}
2002-09-17 04:25:40 +02:00
function planner_process_interval ()
{
2002-11-23 15:19:56 +01:00
// generate duplicate free list of events within observed interval
//
$this -> bo -> store_to_cache (
Array (
'syear' => $this -> bo -> year ,
'smonth' => $this -> bo -> month ,
'sday' => 1 ,
'eyear' => $this -> planner_end_year ,
'emonth' => $this -> planner_end_month ,
'eday' => $this -> planner_days_in_end_month
)
);
$this -> bo -> remove_doubles_in_cache ( $this -> planner_firstday , $this -> planner_lastday );
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// process all events within observed interval
//
2002-11-23 21:48:42 +01:00
for ( $v = $this -> planner_firstday ; $v <= $this -> planner_lastday ; $v += 1 )
2002-11-23 15:19:56 +01:00
{
$daily = $this -> bo -> cached_events [ $v ];
@ reset ( $daily );
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
print_debug ( 'For Date' , $v );
print_debug ( 'Count of items' , count ( $daily ));
2002-09-17 04:25:40 +02:00
2002-11-23 15:19:56 +01:00
// process all events on day $v
//
2003-02-26 17:42:04 +01:00
while ( list (, $event ) = @ each ( $daily ))
2002-11-23 15:19:56 +01:00
{
2003-02-26 17:42:04 +01:00
if ( $event [ 'recur_type' ]) // calculate start- + end-datetime for recuring events
{
$this -> bo -> set_recur_date ( $event , $v );
}
2002-11-23 15:19:56 +01:00
$this -> planner_process_event ( $event );
}
}
$this -> planner_pad_rows ();
2001-07-28 15:17:30 +02:00
}
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
function matrixselect ()
{
2002-08-25 06:07:21 +02:00
$datetime = mktime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
$sb = CreateObject ( 'phpgwapi.sbox' );
2002-08-25 06:07:21 +02:00
2003-04-21 13:00:53 +02:00
$this -> cal_header ( lang ( 'Matrixview' ));
2001-07-18 19:32:10 +02:00
2003-04-21 13:00:53 +02:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
Array (
2001-10-03 02:31:03 +02:00
'mq' => 'matrix_query.tpl' ,
'form_button' => 'form_button_script.tpl'
2001-07-28 15:17:30 +02:00
)
);
$p -> set_block ( 'mq' , 'matrix_query' , 'matrix_query' );
$p -> set_block ( 'mq' , 'list' , 'list' );
2001-07-18 19:32:10 +02:00
2003-04-21 13:00:53 +02:00
$p -> set_var ( array (
'title' => lang ( 'Daily Matrix View' ),
2001-10-03 02:31:03 +02:00
'action_url' => $this -> page ( 'viewmatrix' )
2003-04-21 13:00:53 +02:00
));
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
// Date
$var [] = Array (
'field' => lang ( 'Date' ),
2001-08-12 16:47:23 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> dateformatorder (
$sb -> getYears ( 'year' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime , 'Y' )), intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime , 'Y' ))),
$sb -> getMonthText ( 'month' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime , 'n' ))),
$sb -> getDays ( 'day' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime , 'd' )))
2001-07-28 15:17:30 +02:00
)
);
2002-08-25 06:07:21 +02:00
2001-07-28 15:17:30 +02:00
// View type
$var [] = Array (
'field' => lang ( 'View' ),
'data' => '<select name="matrixtype">' . " \n "
. '<option value="free/busy" selected>' . lang ( 'free/busy' ) . '</option>' . " \n "
. '<option value="weekly">' . lang ( 'Weekly' ) . '</option>' . " \n "
. '</select>' . " \n "
);
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
// Participants
2001-08-12 16:47:23 +02:00
$accounts = $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( 'run' , 1 , 'calendar' );
2001-07-28 15:17:30 +02:00
$users = Array ();
for ( $i = 0 ; $i < count ( $accounts ); $i ++ )
2001-07-18 19:32:10 +02:00
{
2001-10-03 02:31:03 +02:00
$user = $accounts [ $i ];
2001-07-28 15:17:30 +02:00
if ( ! isset ( $users [ $user ]))
2001-07-18 19:32:10 +02:00
{
2001-08-12 16:47:23 +02:00
$users [ $user ] = $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $user );
if ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $user ) == 'g' )
2001-07-28 15:17:30 +02:00
{
2001-08-12 16:47:23 +02:00
$group_members = $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( $user , 1 , 'phpgw_group' );
2001-07-28 15:17:30 +02:00
if ( $group_members != False )
{
for ( $j = 0 ; $j < count ( $group_members ); $j ++ )
{
if ( ! isset ( $users [ $group_members [ $j ]]))
{
2001-08-12 16:47:23 +02:00
$users [ $group_members [ $j ]] = $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $group_members [ $j ]);
2001-07-28 15:17:30 +02:00
}
}
}
}
2001-07-18 19:32:10 +02:00
}
}
2001-09-17 04:33:19 +02:00
$num_users = count ( $users );
2001-07-28 15:17:30 +02:00
if ( $num_users > 50 )
2001-07-18 19:32:10 +02:00
{
2001-07-28 15:17:30 +02:00
$size = 15 ;
}
elseif ( $num_users > 5 )
{
$size = 5 ;
2001-07-18 19:32:10 +02:00
}
else
{
2001-07-28 15:17:30 +02:00
$size = $num_users ;
2001-07-18 19:32:10 +02:00
}
2001-07-28 15:17:30 +02:00
$str = '' ;
@ asort ( $users );
@ reset ( $users );
while ( $user = each ( $users ))
{
2002-11-23 15:19:56 +01:00
if (( $GLOBALS [ 'phpgw' ] -> accounts -> exists ( $user [ 0 ]) && $this -> bo -> check_perms ( PHPGW_ACL_READ , 0 , $user [ 0 ])) || $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $user [ 0 ]) == 'g' )
2001-07-18 19:32:10 +02:00
{
2001-08-12 16:47:23 +02:00
$str .= ' <option value="' . $user [ 0 ] . '">(' . $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $user [ 0 ]) . ') ' . $user [ 1 ] . '</option>' . " \n " ;
2001-07-18 19:32:10 +02:00
}
2001-07-28 15:17:30 +02:00
}
$var [] = Array (
'field' => lang ( 'Participants' ),
'data' => " \n " . ' <select name="participants[]" multiple size="' . $size . '">' . " \n " . $str . ' </select>' . " \n "
);
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
for ( $i = 0 ; $i < count ( $var ); $i ++ )
{
$this -> output_template_array ( $p , 'rows' , 'list' , $var [ $i ]);
}
2002-09-17 04:25:40 +02:00
2001-07-28 15:17:30 +02:00
$vars = Array (
2003-04-21 13:00:53 +02:00
'submit_button' => lang ( 'View' ),
'action_url_button' => $this -> bo -> return_to ? $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ) : $this -> page ( '' ),
2001-07-28 15:17:30 +02:00
'action_text_button' => lang ( 'Cancel' ),
2003-04-21 13:00:53 +02:00
'action_confirm_button' => '' ,
2001-07-28 15:17:30 +02:00
'action_extra_field' => ''
);
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
$p -> set_var ( $vars );
$p -> parse ( 'cancel_button' , 'form_button' );
$p -> pparse ( 'out' , 'matrix_query' );
}
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
function viewmatrix ()
{
2001-09-07 19:51:48 +02:00
$participants = $GLOBALS [ 'HTTP_POST_VARS' ][ 'participants' ];
2001-07-28 15:17:30 +02:00
$parts = Array ();
$acct = CreateObject ( 'phpgwapi.accounts' , $this -> bo -> owner );
2001-08-12 16:47:23 +02:00
$c_participants = count ( $participants );
for ( $i = 0 ; $i < $c_participants ; $i ++ )
2001-07-28 15:17:30 +02:00
{
2001-08-12 16:47:23 +02:00
switch ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $participants [ $i ]))
2001-07-18 19:32:10 +02:00
{
2001-07-28 15:17:30 +02:00
case 'g' :
2001-10-23 12:58:53 +02:00
$members = $acct -> member ( intval ( $participants [ $i ]));
2001-07-28 15:17:30 +02:00
while ( $members != False && list ( $index , $member ) = each ( $members ))
{
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> check_perms ( PHPGW_ACL_READ , 0 , $member [ 'account_id' ]) && ! isset ( $parts [ $member [ 'account_id' ]]))
2001-07-28 15:17:30 +02:00
{
$parts [ $member [ 'account_id' ]] = 1 ;
}
}
break ;
case 'u' :
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> check_perms ( PHPGW_ACL_READ , 0 , $participants [ $i ]) && ! isset ( $parts [ $participants [ $i ]]))
2001-07-28 15:17:30 +02:00
{
$parts [ $participants [ $i ]] = 1 ;
}
break ;
2001-07-18 19:32:10 +02:00
}
2001-07-28 15:17:30 +02:00
}
unset ( $acct );
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
$participants = Array ();
reset ( $parts );
while ( list ( $key , $value ) = each ( $parts ))
{
$participants [] = $key ;
}
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
reset ( $participants );
2001-07-18 19:32:10 +02:00
2003-04-21 13:00:53 +02:00
$this -> cal_header ( lang ( 'Matrixview' ));
2001-07-18 19:32:10 +02:00
2002-09-17 04:25:40 +02:00
$matrixtype = get_var ( 'matrixtype' , Array ( 'POST' ));
switch ( $matrixtype )
2001-07-18 19:32:10 +02:00
{
2001-07-28 15:17:30 +02:00
case 'free/busy' :
2002-06-25 01:24:24 +02:00
$freetime = $GLOBALS [ 'phpgw' ] -> datetime -> gmtdate ( mktime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year ));
2003-04-21 13:00:53 +02:00
$html = '<br>' . $this -> timematrix (
2001-08-12 16:47:23 +02:00
Array (
'date' => $freetime ,
'starttime' => $this -> bo -> splittime ( '000000' , False ),
'endtime' => 0 ,
'participants' => $parts
)
);
2001-07-28 15:17:30 +02:00
break ;
case 'weekly' :
2003-04-21 13:00:53 +02:00
$html = '<br>' . $this -> display_weekly (
2001-08-12 16:47:23 +02:00
Array (
'date' => sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ),
'showyear' => true ,
2001-10-03 02:31:03 +02:00
'owners' => $participants
2001-08-12 16:47:23 +02:00
)
);
2001-07-28 15:17:30 +02:00
break ;
2001-07-18 19:32:10 +02:00
}
2003-04-21 13:00:53 +02:00
$html .= " \n " . '<br><center>' . " \n " ;
$html .= ' <form action="' . $this -> page ( 'viewmatrix' ) . '" method="post" name="matrixform" target="viewmatrix">' . " \n " ;
$html .= ' <input type="hidden" name="year" value="' . $this -> bo -> year . '">' . " \n " ;
$html .= ' <input type="hidden" name="month" value="' . $this -> bo -> month . '">' . " \n " ;
$html .= ' <input type="hidden" name="day" value="' . $this -> bo -> day . '">' . " \n " ;
foreach ( $parts as $key => $value )
2001-07-18 19:32:10 +02:00
{
2003-04-21 13:00:53 +02:00
$html .= ' <input type="hidden" name="participants[]" value="' . $key . '">' . " \n " ;
2001-07-18 19:32:10 +02:00
}
2003-04-21 13:00:53 +02:00
$html .= ' <input type="submit" value="' . lang ( 'refresh' ) . '">' . " \n " ;
$html .= ' </form>' . " \n " ;
$html .= '</center>' . " \n " ;
$GLOBALS [ 'phpgw' ] -> template -> set_var ( 'phpgw_body' , $html );
2001-07-28 15:17:30 +02:00
}
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
function search ()
{
2002-09-17 04:25:40 +02:00
$keywords = get_var ( 'keywords' , Array ( 'POST' ));
2002-11-23 15:19:56 +01:00
if ( empty ( $keywords ))
2001-07-18 19:32:10 +02:00
{
2001-07-28 15:17:30 +02:00
// If we reach this, it is because they didn't search for anything,
// attempt to send them back to where they where.
2002-11-23 15:19:56 +01:00
Header ( 'Location: ' . $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , array (
'menuaction' => $GLOBALS [ 'HTTP_POST_VARS' ][ 'from' ],
'date' => $GLOBALS [ 'HTTP_POST_VARS' ][ 'year' ] . $GLOBALS [ 'HTTP_POST_VARS' ][ 'month' ] . $GLOBALS [ 'HTTP_POST_VARS' ][ 'day' ]
)));
2002-09-28 22:01:44 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nodisplay' ] = True ;
exit ;
2001-07-18 19:32:10 +02:00
}
2001-08-12 16:47:23 +02:00
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Search Results' );
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2001-07-28 15:17:30 +02:00
$error = '' ;
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
$matches = 0 ;
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
// There is currently a problem searching in with repeated events.
// It spits back out the date it was entered. I would like to to say that
// it is a repeated event.
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
// This has been solved by the little icon indicator for recurring events.
2001-07-18 19:32:10 +02:00
2002-09-17 04:25:40 +02:00
$event_ids = $this -> bo -> search_keywords ( $keywords );
2001-07-28 15:17:30 +02:00
$ids = Array ();
2003-04-21 13:00:53 +02:00
foreach ( $event_ids as $key => $id )
2001-07-28 15:17:30 +02:00
{
$event = $this -> bo -> read_entry ( $id );
2002-09-17 04:25:40 +02:00
2003-04-21 13:00:53 +02:00
if ( ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $event ))
2002-09-17 04:25:40 +02:00
{
continue ;
}
2002-08-25 06:07:21 +02:00
$datetime = $this -> bo -> maketime ( $event [ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2002-09-17 04:25:40 +02:00
2001-07-30 00:09:24 +02:00
$ids [ strval ( $event [ 'id' ])] ++ ;
2003-04-21 13:00:53 +02:00
$info [ strval ( $event [ 'id' ])] = array (
'tr_color' => $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color (),
'date' => $GLOBALS [ 'phpgw' ] -> common -> show_date ( $datetime ),
'link' => $this -> link_to_entry ( $event , $event [ 'start' ][ 'month' ], $event [ 'start' ][ 'mday' ], $event [ 'start' ][ 'year' ])
);
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
}
$matches = count ( $event_ids );
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
if ( $matches > 0 )
{
$matches = count ( $ids );
}
2001-07-18 19:32:10 +02:00
2001-07-28 15:17:30 +02:00
if ( $matches == 1 )
2001-07-18 19:32:10 +02:00
{
2001-07-28 15:17:30 +02:00
$quantity = lang ( '1 match found' ) . '.' ;
}
elseif ( $matches > 0 )
{
2003-02-27 23:57:55 +01:00
$quantity = lang ( '%1 matches found' , $matches ) . '.' ;
2001-07-18 19:32:10 +02:00
}
else
{
2003-04-21 13:00:53 +02:00
$this -> error_exit ( lang ( 'no matches found.' ));
2001-07-18 19:32:10 +02:00
}
2001-07-16 13:38:40 +02:00
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
Array (
2001-10-03 02:31:03 +02:00
'search_form' => 'search.tpl'
2001-07-28 15:17:30 +02:00
)
2001-07-22 01:35:22 +02:00
);
2001-07-28 15:17:30 +02:00
$p -> set_block ( 'search_form' , 'search' , 'search' );
$p -> set_block ( 'search_form' , 'search_list_header' , 'search_list_header' );
$p -> set_block ( 'search_form' , 'search_list' , 'search_list' );
$p -> set_block ( 'search_form' , 'search_list_footer' , 'search_list_footer' );
2002-08-25 06:07:21 +02:00
2001-07-18 19:32:10 +02:00
$var = Array (
2001-10-03 02:31:03 +02:00
'search_text' => lang ( 'Search Results' ),
'quantity' => $quantity
2001-07-18 19:32:10 +02:00
);
$p -> set_var ( $var );
2001-07-28 15:17:30 +02:00
if ( $matches > 0 )
2001-07-22 01:35:22 +02:00
{
2001-07-28 15:17:30 +02:00
$p -> parse ( 'rows' , 'search_list_header' , True );
2001-07-22 01:35:22 +02:00
}
2001-07-28 15:17:30 +02:00
// now sort by number of hits
arsort ( $ids );
2003-04-21 13:00:53 +02:00
foreach ( $ids as $key => $nul )
2001-07-18 19:32:10 +02:00
{
2003-04-21 13:00:53 +02:00
$p -> set_var ( $info [ $key ]);
2001-07-28 15:17:30 +02:00
$p -> parse ( 'rows' , 'search_list' , True );
2001-07-22 01:35:22 +02:00
}
2001-07-28 15:17:30 +02:00
if ( $matches > 0 )
2001-07-22 01:35:22 +02:00
{
2001-07-28 15:17:30 +02:00
$p -> parse ( 'rows' , 'search_list_footer' , True );
2001-07-18 19:32:10 +02:00
}
2001-07-22 01:35:22 +02:00
2001-07-28 15:17:30 +02:00
$p -> pparse ( 'out' , 'search' );
2001-07-18 19:32:10 +02:00
}
2001-07-22 01:35:22 +02:00
2001-07-18 19:32:10 +02:00
/* Private functions */
2001-07-16 13:38:40 +02:00
function _debug_sqsof ()
{
$data = array (
2002-08-25 06:07:21 +02:00
'filter' => $this -> bo -> filter ,
'cat_id' => $this -> bo -> cat_id ,
'owner' => $this -> bo -> owner ,
'year' => $this -> bo -> year ,
'month' => $this -> bo -> month ,
'day' => $this -> bo -> day ,
'sortby' => $this -> bo -> sortby ,
'num_months' => $this -> bo -> num_months
2001-07-16 13:38:40 +02:00
);
2002-09-21 23:50:30 +02:00
return _debug_array ( $data , False );
2001-07-16 13:38:40 +02:00
}
function output_template_array ( & $p , $row , $list , $var )
{
2002-08-25 06:07:21 +02:00
if ( ! isset ( $var [ 'hidden_vars' ]))
{
$var [ 'hidden_vars' ] = '' ;
}
2003-04-21 13:00:53 +02:00
if ( ! isset ( $var [ 'tr_color' ]))
{
$var [ 'tr_color' ] = $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color ();
}
2001-07-16 13:38:40 +02:00
$p -> set_var ( $var );
$p -> parse ( $row , $list , True );
}
2001-10-02 03:13:53 +02:00
function page ( $_page = '' , $params = '' )
2001-07-16 13:38:40 +02:00
{
2001-10-02 03:13:53 +02:00
if ( $_page == '' )
2001-07-16 13:38:40 +02:00
{
2001-07-18 19:32:10 +02:00
$page_ = explode ( '.' , $this -> bo -> prefs [ 'calendar' ][ 'defaultcalendar' ]);
2001-10-02 03:13:53 +02:00
$_page = $page_ [ 0 ];
2002-09-20 01:45:19 +02:00
if ( $_page == 'planner_cat' || $_page == 'planner_user' )
{
$_page = 'planner' ;
}
elseif ( $_page == 'index' || ( $_page != 'day' && $_page != 'week' && $_page != 'month' && $_page != 'year' && $_page != 'planner' ))
2001-07-16 13:38:40 +02:00
{
2001-10-02 03:13:53 +02:00
$_page = 'month' ;
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'defaultcalendar' , 'month' );
$GLOBALS [ 'phpgw' ] -> preferences -> save_repository ();
2001-07-16 13:38:40 +02:00
}
}
2002-11-24 11:34:28 +01:00
if ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'currentapp' ] == 'home' ||
strstr ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'currentapp' ], 'mail' )) // email, felamimail, ...
2001-08-13 06:49:19 +02:00
{
$page_app = 'calendar' ;
}
else
{
$page_app = $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'currentapp' ];
}
2001-10-02 03:13:53 +02:00
return $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $page_app . '.ui' . $page_app . '.' . $_page . $params );
2001-07-16 13:38:40 +02:00
}
function header ()
{
$cols = 8 ;
if ( $this -> bo -> check_perms ( PHPGW_ACL_PRIVATE ) == True )
{
$cols ++ ;
}
2001-09-20 23:29:16 +02:00
2003-04-21 13:00:53 +02:00
$tpl = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-16 13:38:40 +02:00
$tpl -> set_unknowns ( 'remove' );
include ( $this -> template_dir . '/header.inc.php' );
2001-07-22 01:35:22 +02:00
$header = $tpl -> fp ( 'out' , 'head' );
unset ( $tpl );
echo $header ;
2001-07-16 13:38:40 +02:00
}
function footer ()
{
2002-09-17 04:25:40 +02:00
list (,, $method ) = explode ( '.' , MENUACTION );
2002-11-23 21:48:42 +01:00
2001-07-18 19:32:10 +02:00
if ( @ $this -> bo -> printer_friendly )
2001-07-16 13:38:40 +02:00
{
2001-07-28 15:17:30 +02:00
return ;
2001-07-16 13:38:40 +02:00
}
2002-11-23 21:48:42 +01:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-07-16 13:38:40 +02:00
2001-08-06 04:41:36 +02:00
$p -> set_file (
Array (
2001-10-03 02:31:03 +02:00
'footer' => 'footer.tpl' ,
'form_button' => 'form_button_script.tpl'
2001-08-06 04:41:36 +02:00
)
2001-07-16 13:38:40 +02:00
);
$p -> set_block ( 'footer' , 'footer_table' , 'footer_table' );
$p -> set_block ( 'footer' , 'footer_row' , 'footer_row' );
2001-09-07 18:37:11 +02:00
$p -> set_block ( 'footer' , 'blank_row' , 'blank_row' );
2001-07-16 13:38:40 +02:00
$m = $this -> bo -> month ;
$y = $this -> bo -> year ;
2001-08-13 16:11:07 +02:00
$thisdate = date ( 'Ymd' , mktime ( 0 , 0 , 0 , $m , 1 , $y ));
2001-07-16 13:38:40 +02:00
$y -- ;
$str = '' ;
for ( $i = 0 ; $i < 25 ; $i ++ )
{
$m ++ ;
if ( $m > 12 )
{
$m = 1 ;
$y ++ ;
}
$d = mktime ( 0 , 0 , 0 , $m , 1 , $y );
2001-08-13 16:11:07 +02:00
$d_ymd = date ( 'Ymd' , $d );
$str .= '<option value="' . $d_ymd . '"' . ( $d_ymd == $thisdate ? ' selected' : '' ) . '>' . lang ( date ( 'F' , $d )) . strftime ( ' %Y' , $d ) . '</option>' . " \n " ;
2001-07-16 13:38:40 +02:00
}
$var = Array (
2001-10-03 02:31:03 +02:00
'action_url' => $this -> page ( $method , '' ),
'form_name' => 'SelectMonth' ,
'label' => lang ( 'Month' ),
'form_label' => 'date' ,
'form_onchange' => 'document.SelectMonth.submit()' ,
'row' => $str ,
'go' => lang ( 'Go!' )
2001-07-16 13:38:40 +02:00
);
$this -> output_template_array ( $p , 'table_row' , 'footer_row' , $var );
2002-09-17 04:25:40 +02:00
if ( MENUACTION == 'calendar.uicalendar.week' )
2001-07-16 13:38:40 +02:00
{
2002-09-17 04:25:40 +02:00
unset ( $thisdate );
$thisdate = mktime ( 0 , 0 , 0 , $this -> bo -> month , $this -> bo -> day , $this -> bo -> year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
$sun = $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $this -> bo -> year , $this -> bo -> month , $this -> bo -> day ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-16 13:38:40 +02:00
2002-09-17 04:25:40 +02:00
$str = '' ;
for ( $i = - 7 ; $i <= 7 ; $i ++ )
{
2003-03-09 22:05:29 +01:00
$begin = $sun + ( 7 * 24 * 60 * 60 * $i ) + 12 * 60 * 60 ; // we use midday, that changes in daylight-saveing does not effect us
$end = $begin + 6 * 24 * 60 * 60 ;
// echo "<br>$i: ".date('d.m.Y H:i',$begin).' - '.date('d.m.Y H:i',$end);
2002-09-17 04:25:40 +02:00
$str .= '<option value="' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $begin , 'Ymd' ) . '"' . ( $begin <= $thisdate && $end >= $thisdate ? ' selected' : '' ) . '>'
. $GLOBALS [ 'phpgw' ] -> common -> show_date ( $begin , $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'dateformat' ]) . ' - '
. $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'dateformat' ]);
}
$var = Array (
'action_url' => $this -> page ( $method , '' ),
'form_name' => 'SelectWeek' ,
'label' => lang ( 'Week' ),
'form_label' => 'date' ,
'form_onchange' => 'document.SelectWeek.submit()' ,
'row' => $str ,
'go' => lang ( 'Go!' )
);
$this -> output_template_array ( $p , 'table_row' , 'footer_row' , $var );
}
2001-07-16 13:38:40 +02:00
$str = '' ;
2001-09-17 04:33:19 +02:00
for ( $i = ( $this -> bo -> year - 3 ); $i < ( $this -> bo -> year + 3 ); $i ++ )
2001-07-16 13:38:40 +02:00
{
2001-09-17 04:33:19 +02:00
$str .= '<option value="' . $i . '"' . ( $i == $this -> bo -> year ? ' selected' : '' ) . '>' . $i . '</option>' . " \n " ;
2001-07-16 13:38:40 +02:00
}
2002-11-23 15:19:56 +01:00
2001-07-16 13:38:40 +02:00
$var = Array (
2001-10-03 02:31:03 +02:00
'action_url' => $this -> page ( $method , '' ),
'form_name' => 'SelectYear' ,
'label' => lang ( 'Year' ),
'form_label' => 'year' ,
'form_onchange' => 'document.SelectYear.submit()' ,
'row' => $str ,
'go' => lang ( 'Go!' )
2001-07-16 13:38:40 +02:00
);
$this -> output_template_array ( $p , 'table_row' , 'footer_row' , $var );
2002-09-17 04:25:40 +02:00
if ( MENUACTION == 'calendar.uicalendar.planner' )
{
$str = '' ;
$date_str = '' ;
$date = get_var ( 'date' , Array ( 'GET' ));
if ( $date )
{
$date_str .= ' <input type="hidden" name="date" value="' . $date . '">' . " \n " ;
}
$date_str .= ' <input type="hidden" name="month" value="' . $this -> bo -> month . '">' . " \n " ;
$date_str .= ' <input type="hidden" name="day" value="' . $this -> bo -> day . '">' . " \n " ;
$date_str .= ' <input type="hidden" name="year" value="' . $this -> bo -> year . '">' . " \n " ;
for ( $i = 1 ; $i <= 6 ; $i ++ )
{
$str .= '<option value="' . $i . '"' . ( $i == $this -> bo -> num_months ? ' selected' : '' ) . '>' . $i . '</option>' . " \n " ;
}
$var = Array (
'action_url' => $this -> page ( $method , '' ),
'form_name' => 'SelectNumberOfMonths' ,
'label' => lang ( 'Number of Months' ),
2002-11-23 15:19:56 +01:00
'hidden_vars' => $date_str ,
2002-09-17 04:25:40 +02:00
'form_label' => 'num_months' ,
'form_onchange' => 'document.SelectNumberOfMonths.submit()' ,
'action_extra_field' => $date_str ,
'row' => $str ,
'go' => lang ( 'Go!' )
);
$this -> output_template_array ( $p , 'table_row' , 'footer_row' , $var );
}
2001-09-07 18:37:11 +02:00
$var = Array (
'submit_button' => lang ( 'Submit' ),
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=calendar.uiicalendar.import' ),
'action_text_button' => lang ( 'Import' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$this -> output_template_array ( $p , 'b_row' , 'form_button' , $var );
$p -> parse ( 'table_row' , 'blank_row' , True );
2002-11-23 21:48:42 +01:00
$p -> parse ( 'phpgw_body' , 'footer_table' , True );
2001-07-16 13:38:40 +02:00
}
2001-08-28 05:41:16 +02:00
function css ()
{
2001-11-05 03:08:31 +01:00
$GLOBALS [ 'phpgw' ] -> browser -> browser ();
if ( $GLOBALS [ 'phpgw' ] -> browser -> get_agent () == 'MOZILLA' )
{
$time_width = ( intval ( $this -> bo -> prefs [ 'common' ][ 'time_format' ]) == 12 ? 12 : 8 );
}
else
{
$time_width = ( intval ( $this -> bo -> prefs [ 'common' ][ 'time_format' ]) == 12 ? 10 : 7 );
}
2002-01-03 13:37:15 +01:00
return 'A.minicalendar { color: #000000; font: xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.bminicalendar { color: #336699; font: italic bold xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.minicalendargrey { color: #999999; font: xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.bminicalendargrey { color: #336699; font: italic bold xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
2002-11-23 15:19:56 +01:00
. ' A.minicalhol { padding-left:3px; padding-right:3px; background: ' . $this -> holiday_color . '; color: #000000; font: xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.bminicalhol { padding-left:3px; padding-right:3px; background: ' . $this -> holiday_color . '; color: #336699; font: italic bold xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.minicalgreyhol { padding-left:3px; padding-right:3px; background: ' . $this -> holiday_color . '; color: #999999; font: xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
. ' A.bminicalgreyhol { padding-left:3px; padding-right:3px; background: ' . $this -> holiday_color . '; color: #999999; font: italic bold xx-small ' . $this -> theme [ 'font' ] . ' }' . " \n "
2002-04-18 01:43:29 +02:00
. ' .event-on { background: ' . $this -> theme [ 'row_on' ] . '; color: ' . $this -> theme [ 'bg_text' ] . '; font: 100 80%/110% ' . $this -> theme [ 'font' ] . '; vertical-align: middle }' . " \n "
. ' .event-off { background: ' . $this -> theme [ 'row_off' ] . '; color: ' . $this -> theme [ 'bg_text' ] . '; font: 100 80%/110% ' . $this -> theme [ 'font' ] . '; vertical-align: middle }' . " \n "
. ' .event-holiday { background: ' . $this -> theme [ 'bg04' ] . '; color: ' . $this -> theme [ 'bg_text' ] . '; font: 100 80%/110% ' . $this -> theme [ 'font' ] . '; vertical-align: middle }' . " \n "
2002-04-19 16:02:31 +02:00
. ' .time { background: ' . $this -> theme [ 'navbar_bg' ] . '; color: ' . $this -> theme [ 'bg_text' ] . '; font: 65%/100% ' . $this -> theme [ 'font' ] . '; width: ' . $time_width . '%; border: 1px ' . $this -> theme [ 'navbar_text' ] . '; vertical-align: middle }' . " \n "
2002-04-18 01:43:29 +02:00
. ' .tablecell { width: 80px; height: 80px }' ;
2001-08-28 05:41:16 +02:00
}
2001-07-28 15:17:30 +02:00
function no_edit ()
{
2002-09-20 01:45:19 +02:00
if ( ! isset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]))
2001-10-03 02:31:03 +02:00
{
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ] = True ;
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ] = True ;
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Permission denied' );
2001-10-03 02:31:03 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
}
2001-07-28 15:17:30 +02:00
echo '<center>You do not have permission to edit this appointment!</center>' ;
2001-10-03 02:31:03 +02:00
return ;
2001-07-28 15:17:30 +02:00
}
2001-07-16 13:38:40 +02:00
function link_to_entry ( $event , $month , $day , $year )
{
$str = '' ;
2002-09-17 04:25:40 +02:00
$is_private = ! $event [ 'public' ] && ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $event );
$editable = ! $this -> bo -> printer_friendly && $this -> bo -> check_perms ( PHPGW_ACL_READ , $event );
2001-07-16 13:38:40 +02:00
2002-08-25 06:07:21 +02:00
$starttime = $this -> bo -> maketime ( $event [ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
$endtime = $this -> bo -> maketime ( $event [ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-16 13:38:40 +02:00
$rawdate = mktime ( 0 , 0 , 0 , $month , $day , $year );
2002-08-25 06:07:21 +02:00
$rawdate_offset = $rawdate - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
$nextday = mktime ( 0 , 0 , 0 , $month , $day + 1 , $year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-08-12 16:47:23 +02:00
if ( intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $starttime , 'Hi' )) && $starttime == $endtime )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
$time = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $starttime , $this -> bo -> users_timeformat );
2001-07-16 13:38:40 +02:00
}
elseif ( $starttime <= $rawdate_offset && $endtime >= $nextday - 60 )
{
$time = '[ ' . lang ( 'All Day' ) . ' ]' ;
}
2001-08-12 16:47:23 +02:00
elseif ( intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $starttime , 'Hi' )) || $starttime != $endtime )
2001-07-16 13:38:40 +02:00
{
2001-07-30 00:09:24 +02:00
if ( $starttime < $rawdate_offset && $event [ 'recur_type' ] == MCAL_RECUR_NONE )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
$start_time = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $rawdate_offset , $this -> bo -> users_timeformat );
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-12 16:47:23 +02:00
$start_time = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $starttime , $this -> bo -> users_timeformat );
2001-07-16 13:38:40 +02:00
}
if ( $endtime >= ( $rawdate_offset + 86400 ))
{
2002-08-25 06:07:21 +02:00
$end_time = $GLOBALS [ 'phpgw' ] -> common -> show_date ( mktime ( 23 , 59 , 59 , $month , $day , $year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset , $this -> bo -> users_timeformat );
2001-07-16 13:38:40 +02:00
}
else
{
2001-08-12 16:47:23 +02:00
$end_time = $GLOBALS [ 'phpgw' ] -> common -> show_date ( $endtime , $this -> bo -> users_timeformat );
2001-07-16 13:38:40 +02:00
}
$time = $start_time . '-' . $end_time ;
}
else
{
$time = '' ;
}
2002-04-19 16:02:31 +02:00
$text = '' ;
2001-07-16 13:38:40 +02:00
if ( ! $is_private )
{
2001-07-30 00:09:24 +02:00
$text .= $this -> bo -> display_status ( $event [ 'users_status' ]);
2001-07-16 13:38:40 +02:00
}
2002-09-17 04:25:40 +02:00
// $text = '<font size="-2" face="'.$this->theme['font'].'"><nobr>'.$time.'</nobr> '.$this->bo->get_short_field($event,$is_private,'title').$text.'</font>'.$GLOBALS['phpgw']->browser->br;
$text = '<font size="-2" face="' . $this -> theme [ 'font' ] . '"><nobr> ' . $time . ' </nobr> ' . $this -> bo -> get_short_field ( $event , $is_private , 'title' ) . $text . ': <I>' . $this -> bo -> get_short_field ( $event , $is_private , 'description' ) . '</I></font>' . $GLOBALS [ 'phpgw' ] -> browser -> br ;
2002-04-19 16:02:31 +02:00
2001-07-16 13:38:40 +02:00
if ( $editable )
{
2001-08-27 03:30:40 +02:00
$date = sprintf ( '%04d%02d%02d' , $year , $month , $day );
2002-06-25 01:24:24 +02:00
$this -> link_tpl -> set_var ( 'link_link' , $this -> page ( 'view' , '&cal_id=' . $event [ 'id' ] . '&date=' . $date ));
$this -> link_tpl -> set_var ( 'lang_view' , lang ( 'View this entry' ));
$this -> link_tpl -> parse ( 'picture' , 'link_open' , True );
2003-02-26 19:58:01 +01:00
2001-07-30 00:09:24 +02:00
if ( $event [ 'priority' ] == 3 )
2001-07-16 13:38:40 +02:00
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'high' ),
2001-07-16 13:38:40 +02:00
'width' => 8 ,
2002-09-17 04:25:40 +02:00
'height' => 17 ,
'alt' => lang ( 'high priority' ),
'title' => lang ( 'high priority' )
2001-07-16 13:38:40 +02:00
);
}
2001-07-30 00:09:24 +02:00
if ( $event [ 'recur_type' ] == MCAL_RECUR_NONE )
2001-07-16 13:38:40 +02:00
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'circle' ),
2001-07-16 13:38:40 +02:00
'width' => 5 ,
2002-09-17 04:25:40 +02:00
'height' => 7 ,
'alt' => lang ( 'single event' ),
'title' => lang ( 'single event' )
2001-07-16 13:38:40 +02:00
);
}
else
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'recur' ),
2001-07-16 13:38:40 +02:00
'width' => 12 ,
2002-09-17 04:25:40 +02:00
'height' => 12 ,
'alt' => lang ( 'recurring event' ),
'title' => lang ( 'recurring event' )
2001-07-16 13:38:40 +02:00
);
}
2002-09-17 04:25:40 +02:00
$participants = $this -> planner_participants ( $event [ 'participants' ]);
2001-07-30 00:09:24 +02:00
if ( count ( $event [ 'participants' ]) > 1 )
2001-07-16 13:38:40 +02:00
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'multi_3' ),
2001-07-16 13:38:40 +02:00
'width' => 14 ,
2002-09-17 04:25:40 +02:00
'height' => 14 ,
'alt' => $participants ,
'title' => $participants
);
}
else
{
$picture [] = Array (
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'single' ),
'width' => 14 ,
'height' => 14 ,
'alt' => $participants ,
'title' => $participants
2001-07-16 13:38:40 +02:00
);
}
2001-07-30 00:09:24 +02:00
if ( $event [ 'public' ] == 0 )
2001-07-16 13:38:40 +02:00
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'private' ),
2001-07-16 13:38:40 +02:00
'width' => 13 ,
2002-09-17 04:25:40 +02:00
'height' => 13 ,
'alt' => lang ( 'private' ),
'title' => lang ( 'private' )
2001-07-16 13:38:40 +02:00
);
}
2001-09-08 10:48:38 +02:00
if ( @ isset ( $event [ 'alarm' ]) && count ( $event [ 'alarm' ]) >= 1 )
{
if ( $this -> bo -> alarm_today ( $event , $rawdate_offset , $starttime ))
{
$picture [] = Array (
2002-02-17 04:56:58 +01:00
'pict' => $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'alarm' ),
2001-09-08 10:48:38 +02:00
'width' => 13 ,
2002-09-17 04:25:40 +02:00
'height' => 13 ,
'alt' => lang ( 'alarm' ),
'title' => lang ( 'alarm' )
2001-09-08 10:48:38 +02:00
);
}
}
2002-08-25 06:07:21 +02:00
$description = $this -> bo -> get_short_field ( $event , $is_private , 'description' );
2001-07-16 13:38:40 +02:00
for ( $i = 0 ; $i < count ( $picture ); $i ++ )
{
$var = Array (
2002-09-17 04:25:40 +02:00
'pic_image' => $picture [ $i ][ 'pict' ],
'width' => $picture [ $i ][ 'width' ],
'height' => $picture [ $i ][ 'height' ],
'alt' => $picture [ $i ][ 'alt' ],
'title' => $picture [ $i ][ 'title' ]
2001-07-16 13:38:40 +02:00
);
2002-06-25 01:24:24 +02:00
$this -> output_template_array ( $this -> link_tpl , 'picture' , 'pict' , $var );
2001-07-16 13:38:40 +02:00
}
}
if ( $text )
{
$var = Array (
'text' => $text
);
2002-06-25 01:24:24 +02:00
$this -> output_template_array ( $this -> link_tpl , 'picture' , 'link_text' , $var );
2001-07-16 13:38:40 +02:00
}
if ( $editable )
{
2002-06-25 01:24:24 +02:00
$this -> link_tpl -> parse ( 'picture' , 'link_close' , True );
2001-07-16 13:38:40 +02:00
}
2002-06-25 01:24:24 +02:00
$str = $this -> link_tpl -> fp ( 'out' , 'link_pict' );
$this -> link_tpl -> set_var ( 'picture' , '' );
$this -> link_tpl -> set_var ( 'out' , '' );
// unset($p);
2001-07-16 13:38:40 +02:00
return $str ;
}
2001-09-21 04:10:00 +02:00
function overlap ( $params )
2001-07-28 15:17:30 +02:00
{
2001-09-21 04:10:00 +02:00
if ( ! is_array ( $params ))
{
}
else
{
$overlapping_events = $params [ 'o_events' ];
$event = $params [ 'this_event' ];
}
2001-10-03 02:31:03 +02:00
$month = $event [ 'start' ][ 'month' ];
$mday = $event [ 'start' ][ 'mday' ];
$year = $event [ 'start' ][ 'year' ];
2001-07-28 15:17:30 +02:00
2002-08-25 06:07:21 +02:00
$start = mktime ( $event [ 'start' ][ 'hour' ], $event [ 'start' ][ 'min' ], $event [ 'start' ][ 'sec' ], $month , $mday , $year ) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
$end = $this -> bo -> maketime ( $event [ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
$overlap = '' ;
for ( $i = 0 ; $i < count ( $overlapping_events ); $i ++ )
{
2002-04-18 01:43:29 +02:00
$overlapped_event = $this -> bo -> read_entry ( $overlapping_events [ $i ]);
2002-04-17 02:42:53 +02:00
$overlap .= '<li> [' . $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $overlapped_event [ 'owner' ]) . '] ' . $this -> link_to_entry ( $overlapped_event , $month , $mday , $year );
2001-07-28 15:17:30 +02:00
}
2001-08-12 16:47:23 +02:00
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
2001-09-07 20:11:38 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ] = True ;
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ] = True ;
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $GLOBALS [ 'phpgw_info' ][ 'apps' ][ 'calendar' ][ 'title' ] . ' - ' . lang ( 'Scheduling Conflict' );
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2001-07-28 15:17:30 +02:00
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'overlap' => 'overlap.tpl' ,
'form_button' => 'form_button_script.tpl'
)
2001-07-28 15:17:30 +02:00
);
$var = Array (
2001-10-03 02:31:03 +02:00
'color' => $this -> theme [ 'bg_text' ],
'overlap_title' => lang ( 'Scheduling Conflict' ),
2003-02-27 23:57:55 +01:00
'overlap_text' => lang ( 'Your suggested time of <B> %1 - %2 </B> conflicts with the following existing calendar entries:' , $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start ), $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end )),
2001-10-03 02:31:03 +02:00
'overlap_list' => $overlap
2001-07-28 15:17:30 +02:00
);
$p -> set_var ( $var );
2002-09-17 04:25:40 +02:00
$date = sprintf ( " %04d%02d%02d " , $this -> bo -> year , $this -> bo -> month , $this -> bo -> mday );
2001-07-28 15:17:30 +02:00
$var = Array (
2001-08-12 16:47:23 +02:00
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , Array ( 'menuaction' => 'calendar.bocalendar.update' , 'readsess' => 1 )),
2001-07-28 15:17:30 +02:00
'action_text_button' => lang ( 'Ignore Conflict' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$this -> output_template_array ( $p , 'resubmit_button' , 'form_button' , $var );
$var = Array (
2001-08-12 16:47:23 +02:00
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , Array ( 'menuaction' => 'calendar.uicalendar.edit' , 'readsess' => 1 , 'date' => $date )),
2001-07-28 15:17:30 +02:00
'action_text_button' => lang ( 'Re-Edit Event' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
2001-08-06 04:41:36 +02:00
$this -> output_template_array ( $p , 'reedit_button' , 'form_button' , $var );
2001-07-28 15:17:30 +02:00
$p -> pparse ( 'out' , 'overlap' );
}
function planner_participants ( $parts )
{
2001-08-17 02:24:20 +02:00
static $id2lid ;
2001-07-28 15:17:30 +02:00
$names = '' ;
while ( list ( $id , $status ) = each ( $parts ))
{
2002-11-23 15:19:56 +01:00
$status = substr ( $this -> bo -> get_long_status ( $status ), 0 , 1 );
2001-07-28 15:17:30 +02:00
if ( ! isset ( $id2lid [ $id ]))
{
2001-08-12 16:47:23 +02:00
$id2lid [ $id ] = $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $id );
2001-07-28 15:17:30 +02:00
}
if ( strlen ( $names ))
{
$names .= " , \n " ;
}
$names .= $id2lid [ $id ] . " ( $status ) " ;
}
if ( $this -> debug )
{
2002-04-16 18:52:36 +02:00
echo '<!-- Inside participants() : ' . $names . ' -->' . " \n " ;
2001-07-28 15:17:30 +02:00
}
return $names ;
}
2001-09-29 03:40:47 +02:00
function planner_category ( $ids )
2001-07-28 15:17:30 +02:00
{
2001-08-17 02:24:20 +02:00
static $cats ;
2002-11-23 21:48:42 +01:00
2001-09-29 03:40:47 +02:00
if ( ! is_array ( $ids ))
2001-07-28 15:17:30 +02:00
{
2001-09-29 03:40:47 +02:00
if ( strpos ( $ids , ',' ))
{
2002-11-23 21:48:42 +01:00
$ids = explode ( ',' , $ids );
2001-09-29 03:40:47 +02:00
}
else
{
2002-11-23 21:48:42 +01:00
$ids = array ( 0 => $ids );
2001-09-29 03:40:47 +02:00
}
}
2002-11-23 21:48:42 +01:00
@ reset ( $ids );
2001-09-29 03:40:47 +02:00
$ret_val = Array ();
2002-11-23 21:48:42 +01:00
while ( list (, $id ) = each ( $ids ))
2001-09-29 03:40:47 +02:00
{
if ( ! isset ( $cats [ $id ]))
{
2002-11-23 21:48:42 +01:00
$cats [ $id ] = $this -> cat -> return_single ( $id );
$cats [ $id ][ 'color' ] = strstr ( $cats [ $id ][ 'descr' ], '#' );
2001-09-29 03:40:47 +02:00
}
$ret_val [] = $cats [ $id ];
2002-11-23 21:48:42 +01:00
}
2001-10-01 04:34:45 +02:00
return $ret_val ;
2001-07-28 15:17:30 +02:00
}
2001-07-16 13:38:40 +02:00
function week_header ( $month , $year , $display_name = False )
{
2002-06-25 01:24:24 +02:00
$this -> weekstarttime = $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $year , $month , 1 );
2001-07-16 13:38:40 +02:00
$p = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$p -> set_unknowns ( 'remove' );
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'month_header' => 'month_header.tpl'
)
2001-07-16 13:38:40 +02:00
);
$p -> set_block ( 'month_header' , 'monthly_header' , 'monthly_header' );
$p -> set_block ( 'month_header' , 'column_title' , 'column_title' );
2002-08-25 06:07:21 +02:00
2001-07-16 13:38:40 +02:00
$var = Array (
2002-11-23 21:48:42 +01:00
'class' => 'th' ,
2001-08-13 16:11:07 +02:00
'font_color' => $this -> theme [ 'th_text' ]
2001-07-16 13:38:40 +02:00
);
2001-07-18 19:32:10 +02:00
if ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'print_black_white' ])
2001-07-16 13:38:40 +02:00
{
$var = Array (
2002-11-23 21:48:42 +01:00
'class' => '' ,
2001-07-16 13:38:40 +02:00
'font_color' => ''
);
}
$p -> set_var ( $var );
2002-04-18 01:43:29 +02:00
$col_width = 14 ;
2001-07-16 13:38:40 +02:00
$p -> set_var ( 'col_width' , '14' );
if ( $display_name == True )
{
$p -> set_var ( 'col_title' , lang ( 'name' ));
$p -> parse ( 'column_header' , 'column_title' , True );
2002-04-18 01:43:29 +02:00
$col_width = 12 ;
}
2002-06-25 01:24:24 +02:00
if ( $GLOBALS [ 'phpgw' ] -> datetime -> days [ $i ][ 'weekday' ])
2002-04-18 01:43:29 +02:00
{
switch ( $col_width )
{
case 12 :
$col_width = 16 ;
break ;
case 14 :
$col_width = 20 ;
break ;
}
2001-07-16 13:38:40 +02:00
}
2002-08-25 06:07:21 +02:00
2002-04-18 01:43:29 +02:00
$p -> set_var ( 'col_width' , $col_width );
2001-07-16 13:38:40 +02:00
for ( $i = 0 ; $i < 7 ; $i ++ )
{
2002-11-23 21:48:42 +01:00
if ( ! $this -> bo -> prefs [ 'calendar' ][ 'weekdays_only' ] || $GLOBALS [ 'phpgw' ] -> datetime -> days [ $i ][ 'weekday' ])
2002-04-18 01:43:29 +02:00
{
2002-06-25 01:24:24 +02:00
$p -> set_var ( 'col_title' , lang ( $GLOBALS [ 'phpgw' ] -> datetime -> days [ $i ][ 'name' ]));
2002-04-18 01:43:29 +02:00
$p -> parse ( 'column_header' , 'column_title' , True );
}
2001-07-16 13:38:40 +02:00
}
return $p -> fp ( 'out' , 'monthly_header' );
}
function display_week ( $startdate , $weekly , $cellcolor , $display_name = False , $owner = 0 , $monthstart = 0 , $monthend = 0 )
{
2002-04-18 01:43:29 +02:00
if ( $owner == 0 )
{
$owner = $GLOBALS [ 'phpgw_info' ][ 'user' ][ 'account_id' ];
}
2001-07-16 13:38:40 +02:00
2001-07-18 19:32:10 +02:00
$temp_owner = $this -> bo -> owner ;
2001-07-16 13:38:40 +02:00
$str = '' ;
$p = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$p -> set_unknowns ( 'keep' );
2002-08-25 06:07:21 +02:00
2001-07-28 15:17:30 +02:00
$p -> set_file (
2002-05-05 19:47:15 +02:00
Array (
'month_header' => 'month_header.tpl' ,
'month_day' => 'month_day.tpl'
)
2002-08-25 06:07:21 +02:00
);
2001-07-16 13:38:40 +02:00
$p -> set_block ( 'month_header' , 'monthly_header' , 'monthly_header' );
$p -> set_block ( 'month_header' , 'month_column' , 'month_column' );
$p -> set_block ( 'month_day' , 'month_daily' , 'month_daily' );
$p -> set_block ( 'month_day' , 'day_event' , 'day_event' );
$p -> set_block ( 'month_day' , 'event' , 'event' );
$p -> set_var ( 'extra' , '' );
$p -> set_var ( 'col_width' , '14' );
if ( $display_name )
{
2001-08-12 16:47:23 +02:00
$p -> set_var ( 'column_data' , $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $owner ));
2001-07-16 13:38:40 +02:00
$p -> parse ( 'column_header' , 'month_column' , True );
$p -> set_var ( 'col_width' , '12' );
}
2002-06-25 01:24:24 +02:00
$today = date ( 'Ymd' , $GLOBALS [ 'phpgw' ] -> datetime -> users_localtime );
2002-08-25 06:07:21 +02:00
$daily = $this -> set_week_array ( $startdate - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset , $cellcolor , $weekly );
2001-07-16 13:38:40 +02:00
@ reset ( $daily );
while ( list ( $date , $day_params ) = each ( $daily ))
{
$year = intval ( substr ( $date , 0 , 4 ));
$month = intval ( substr ( $date , 4 , 2 ));
$day = intval ( substr ( $date , 6 , 2 ));
2002-06-25 01:24:24 +02:00
$dow = $GLOBALS [ 'phpgw' ] -> datetime -> day_of_week ( $year , $month , $day );
2002-04-18 01:43:29 +02:00
if ( $this -> bo -> prefs [ 'calendar' ][ 'weekdays_only' ] && ( $dow == 0 || $dow == 6 ))
{
continue ;
}
2001-07-16 13:38:40 +02:00
$var = Array (
2001-10-03 02:31:03 +02:00
'column_data' => '' ,
'extra' => ''
2001-07-16 13:38:40 +02:00
);
$p -> set_var ( $var );
if ( $weekly || ( $date >= $monthstart && $date <= $monthend ))
{
if ( $day_params [ 'new_event' ])
{
2002-11-23 15:19:56 +01:00
$new_event_link = ' <a href="' . $this -> page ( 'add' , '&date=' . $date ) . '">'
2002-09-19 04:14:41 +02:00
. '<img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'new' ) . '" width="10" height="10" alt="' . lang ( 'New Entry' ) . '" border="0" align="center">'
2001-07-16 13:38:40 +02:00
. '</a>' ;
2001-08-12 16:47:23 +02:00
$day_number = '<a href="' . $this -> page ( 'day' , '&date=' . $date ) . '">' . $day . '</a>' ;
2001-07-16 13:38:40 +02:00
}
else
{
$new_event_link = '' ;
$day_number = $day ;
}
$var = Array (
2001-10-03 02:31:03 +02:00
'extra' => $day_params [ 'extra' ],
'new_event_link' => $new_event_link ,
'day_number' => $day_number
2001-07-16 13:38:40 +02:00
);
2002-11-23 15:19:56 +01:00
if ( $day_params [ 'week' ])
{
$var [ 'new_event_link' ] .= '<font size="-2"> ' .
( ! $this -> bo -> printer_friendly ? '<a href="' . $this -> page ( 'week' , '&date=' . $date ) . '">' . $day_params [ 'week' ] . '</a>' : $day_params [ 'week' ]);
}
2001-07-16 13:38:40 +02:00
$p -> set_var ( $var );
2001-08-13 16:11:07 +02:00
if ( @ $day_params [ 'holidays' ])
2001-07-16 13:38:40 +02:00
{
reset ( $day_params [ 'holidays' ]);
while ( list ( $key , $value ) = each ( $day_params [ 'holidays' ]))
{
$var = Array (
2001-08-13 16:11:07 +02:00
'day_events' => '<font face="' . $this -> theme [ 'font' ] . '" size="-1">' . $value . '</font>' . $GLOBALS [ 'phpgw' ] -> browser -> br
2001-07-16 13:38:40 +02:00
);
$this -> output_template_array ( $p , 'daily_events' , 'event' , $var );
}
}
if ( $day_params [ 'appts' ])
{
$var = Array (
2001-10-03 02:31:03 +02:00
'week_day_font_size' => '2' ,
'events' => ''
2001-07-16 13:38:40 +02:00
);
$p -> set_var ( $var );
$rep_events = $this -> bo -> cached_events [ $date ];
2001-08-13 16:11:07 +02:00
$c_rep_events = count ( $rep_events );
for ( $k = 0 ; $k < $c_rep_events ; $k ++ )
2001-07-16 13:38:40 +02:00
{
$lr_events = $rep_events [ $k ];
$p -> set_var ( 'day_events' , $this -> link_to_entry ( $lr_events , $month , $day , $year ));
$p -> parse ( 'events' , 'event' , True );
$p -> set_var ( 'day_events' , '' );
}
}
$p -> parse ( 'daily_events' , 'day_event' , True );
$p -> parse ( 'column_data' , 'month_daily' , True );
$p -> set_var ( 'daily_events' , '' );
$p -> set_var ( 'events' , '' );
2002-11-23 15:19:56 +01:00
/* if ( $day_params [ 'week' ])
2001-07-16 13:38:40 +02:00
{
$var = Array (
2001-10-03 02:31:03 +02:00
'week_day_font_size' => '-2' ,
'events' => ( ! $this -> bo -> printer_friendly ? '<a href="' . $this -> page ( 'week' , '&date=' . $date ) . '">' . $day_params [ 'week' ] . '</a>' : $day_params [ 'week' ])
2001-07-16 13:38:40 +02:00
);
$this -> output_template_array ( $p , 'column_data' , 'day_event' , $var );
$p -> set_var ( 'events' , '' );
2002-11-23 15:19:56 +01:00
} */
2001-07-16 13:38:40 +02:00
}
$p -> parse ( 'column_header' , 'month_column' , True );
$p -> set_var ( 'column_data' , '' );
}
2001-07-18 19:32:10 +02:00
$this -> bo -> owner = $temp_owner ;
2001-07-16 13:38:40 +02:00
return $p -> fp ( 'out' , 'monthly_header' );
}
function display_month ( $month , $year , $showyear , $owner = 0 )
{
2002-04-16 18:52:36 +02:00
if ( $this -> debug )
{
2002-06-25 01:24:24 +02:00
echo '<!-- datetime:gmtdate = ' . $GLOBALS [ 'phpgw' ] -> datetime -> cv_gmtdate . ' -->' . " \n " ;
2002-04-16 18:52:36 +02:00
}
2001-08-13 03:34:32 +02:00
$this -> bo -> store_to_cache (
Array (
'syear' => $year ,
2001-10-03 02:31:03 +02:00
'smonth' => $month ,
2001-08-13 03:34:32 +02:00
'sday' => 1
)
);
2001-07-16 13:38:40 +02:00
$monthstart = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $month , 1 , $year )));
$monthend = intval ( date ( 'Ymd' , mktime ( 0 , 0 , 0 , $month + 1 , 0 , $year )));
2002-06-25 01:24:24 +02:00
$start = $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $year , $month , 1 );
2002-04-16 18:52:36 +02:00
if ( $this -> debug )
{
echo '<!-- display_month:monthstart = ' . $monthstart . ' -->' . " \n " ;
echo '<!-- display_month:start = ' . date ( 'Ymd H:i:s' , $start ) . ' -->' . " \n " ;
}
2001-07-16 13:38:40 +02:00
$p = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$p -> set_unknowns ( 'keep' );
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'week' => 'month_day.tpl'
)
);
2001-07-16 13:38:40 +02:00
$p -> set_block ( 'week' , 'm_w_table' , 'm_w_table' );
$p -> set_block ( 'week' , 'event' , 'event' );
2001-07-28 15:17:30 +02:00
2001-10-03 02:31:03 +02:00
$var = Array (
'cols' => 7 ,
'day_events' => $this -> week_header ( $month , $year , False )
);
2001-07-28 15:17:30 +02:00
$this -> output_template_array ( $p , 'row' , 'event' , $var );
2001-07-16 13:38:40 +02:00
2001-08-13 16:11:07 +02:00
$cellcolor = $this -> theme [ 'row_on' ];
2001-07-16 13:38:40 +02:00
2002-08-25 06:07:21 +02:00
for ( $i = intval ( $start + $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ); intval ( date ( 'Ymd' , $i )) <= $monthend ; $i += 604800 )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
$cellcolor = $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color ( $cellcolor );
2001-07-16 13:38:40 +02:00
$var = Array (
'day_events' => $this -> display_week ( $i , False , $cellcolor , False , $owner , $monthstart , $monthend )
);
$this -> output_template_array ( $p , 'row' , 'event' , $var );
}
return $p -> fp ( 'out' , 'm_w_table' );
}
2001-08-12 16:47:23 +02:00
function display_weekly ( $params )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
if ( ! is_array ( $params ))
{
$this -> index ();
}
2001-07-16 13:38:40 +02:00
2001-08-12 16:47:23 +02:00
$year = substr ( $params [ 'date' ], 0 , 4 );
$month = substr ( $params [ 'date' ], 4 , 2 );
2001-08-13 16:11:07 +02:00
$day = substr ( $params [ 'date' ], 6 , 2 );
2001-08-12 16:47:23 +02:00
$showyear = $params [ 'showyear' ];
$owners = $params [ 'owners' ];
2001-07-16 13:38:40 +02:00
$p = CreateObject ( 'phpgwapi.Template' , $this -> template_dir );
$p -> set_unknowns ( 'keep' );
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'week' => 'month_day.tpl'
)
2001-07-16 13:38:40 +02:00
);
$p -> set_block ( 'week' , 'm_w_table' , 'm_w_table' );
$p -> set_block ( 'week' , 'event' , 'event' );
2002-06-25 01:24:24 +02:00
$start = $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $year , $month , $day );
2001-07-16 13:38:40 +02:00
2001-08-13 16:11:07 +02:00
$cellcolor = $this -> theme [ 'row_off' ];
2001-07-16 13:38:40 +02:00
2001-07-18 19:32:10 +02:00
$true_printer_friendly = $this -> bo -> printer_friendly ;
2001-07-16 13:38:40 +02:00
if ( is_array ( $owners ))
{
$display_name = True ;
$counter = count ( $owners );
$owners_array = $owners ;
2001-07-28 15:17:30 +02:00
$cols = 8 ;
2001-07-16 13:38:40 +02:00
}
else
{
$display_name = False ;
$counter = 1 ;
$owners_array [ 0 ] = $owners ;
2001-07-28 15:17:30 +02:00
$cols = 7 ;
2001-07-16 13:38:40 +02:00
}
2002-04-18 01:43:29 +02:00
if ( $this -> bo -> prefs [ 'calendar' ][ 'weekdays_only' ])
{
$cols -= 2 ;
}
2001-07-28 15:17:30 +02:00
$var = Array (
'cols' => $cols ,
'day_events' => $this -> week_header ( $month , $year , $display_name )
2001-10-03 02:31:03 +02:00
);
2001-07-28 15:17:30 +02:00
$this -> output_template_array ( $p , 'row' , 'event' , $var );
2001-07-16 13:38:40 +02:00
2001-08-24 13:14:40 +02:00
$original_owner = $this -> bo -> so -> owner ;
2001-07-16 13:38:40 +02:00
for ( $i = 0 ; $i < $counter ; $i ++ )
{
2001-08-24 13:14:40 +02:00
$this -> bo -> so -> owner = $owners_array [ $i ];
2001-08-13 03:34:32 +02:00
$this -> bo -> store_to_cache (
Array (
'syear' => $year ,
2001-10-03 02:31:03 +02:00
'smonth' => $month ,
2001-08-13 03:34:32 +02:00
'sday' => 1
)
);
2001-07-16 13:38:40 +02:00
$p -> set_var ( 'day_events' , $this -> display_week ( $start , True , $cellcolor , $display_name , $owners_array [ $i ]));
$p -> parse ( 'row' , 'event' , True );
}
2001-08-24 13:14:40 +02:00
$this -> bo -> so -> owner = $original_owner ;
2001-07-18 19:32:10 +02:00
$this -> bo -> printer_friendly = $true_printer_friendly ;
2001-07-16 13:38:40 +02:00
return $p -> fp ( 'out' , 'm_w_table' );
}
function view_add_day ( $day , & $repeat_days )
{
if ( $repeat_days )
{
$repeat_days .= ', ' ;
}
$repeat_days .= $day . ' ' ;
}
2001-10-26 01:52:15 +02:00
function view_event ( $event , $alarms = False )
2001-07-16 13:38:40 +02:00
{
2002-09-17 04:25:40 +02:00
if (( ! $event [ 'participants' ][ $this -> bo -> owner ] && ! $this -> bo -> check_perms ( PHPGW_ACL_READ , $event )))
2001-08-01 13:07:04 +02:00
{
2003-04-21 13:00:53 +02:00
return False ;
2001-08-01 13:07:04 +02:00
}
2001-07-16 13:38:40 +02:00
$pri = Array (
1 => lang ( 'Low' ),
2 => lang ( 'Normal' ),
3 => lang ( 'High' )
);
2003-04-21 13:00:53 +02:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-07-16 13:38:40 +02:00
2001-07-28 15:17:30 +02:00
$p -> set_file (
2001-10-03 02:31:03 +02:00
Array (
'view' => 'view.tpl'
)
);
2001-07-16 13:38:40 +02:00
$p -> set_block ( 'view' , 'view_event' , 'view_event' );
$p -> set_block ( 'view' , 'list' , 'list' );
2001-09-04 05:17:49 +02:00
$p -> set_block ( 'view' , 'hr' , 'hr' );
2001-07-16 13:38:40 +02:00
2003-04-21 13:00:53 +02:00
$var [] = Array (
'tr_color' => 'th' ,
'field' => lang ( 'Title' ),
'data' => $event [ 'title' ]
2001-07-16 13:38:40 +02:00
);
// Some browser add a \n when its entered in the database. Not a big deal
// this will be printed even though its not needed.
2001-08-17 21:32:03 +02:00
if ( $event [ 'description' ])
2001-07-16 13:38:40 +02:00
{
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Description' ),
'data' => $event [ 'description' ]
2001-07-16 13:38:40 +02:00
);
}
2001-07-30 00:09:24 +02:00
if ( $event [ 'category' ])
2001-07-16 13:38:40 +02:00
{
2001-10-01 04:34:45 +02:00
$category = Array ();
2001-07-18 19:32:10 +02:00
$this -> cat -> categories ( $this -> bo -> owner , 'calendar' );
2001-10-01 04:34:45 +02:00
if ( strpos ( $event [ 'category' ], ',' ))
{
$category = explode ( ',' , $event [ 'category' ]);
}
else
{
$category [] = $event [ 'category' ];
}
2001-09-17 04:33:19 +02:00
@ reset ( $category );
while ( list ( $key , $cat ) = each ( $category ))
{
$_cat = $this -> cat -> return_single ( $cat );
$cat_string [] = $_cat [ 0 ][ 'name' ];
}
@ reset ( $cat_string );
2001-07-16 13:38:40 +02:00
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Category' ),
'data' => implode ( ',' , $cat_string )
2001-07-16 13:38:40 +02:00
);
}
2001-09-07 18:37:11 +02:00
if ( $event [ 'location' ])
{
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Location' ),
'data' => $event [ 'location' ]
2001-09-07 18:37:11 +02:00
);
}
2001-07-16 13:38:40 +02:00
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Start Date/Time' ),
2002-08-25 06:07:21 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $event [ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset )
2001-07-16 13:38:40 +02:00
);
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'End Date/Time' ),
2002-08-25 06:07:21 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $event [ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset )
2001-07-16 13:38:40 +02:00
);
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Priority' ),
'data' => $pri [ $event [ 'priority' ]]
2001-07-16 13:38:40 +02:00
);
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Created By' ),
'data' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $event [ 'owner' ])
2001-07-16 13:38:40 +02:00
);
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Updated' ),
2002-08-25 06:07:21 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $event [ 'modtime' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset )
2001-07-16 13:38:40 +02:00
);
$var [] = Array (
2003-04-21 13:00:53 +02:00
'field' => lang ( 'Access' ),
'data' => $event [ 'public' ] == True ? lang ( 'Public' ) : lang ( 'Privat' )
2001-07-16 13:38:40 +02:00
);
2001-09-07 20:11:38 +02:00
if ( @ isset ( $event [ 'groups' ][ 0 ]))
2001-07-16 13:38:40 +02:00
{
$cal_grps = '' ;
2001-07-30 00:09:24 +02:00
for ( $i = 0 ; $i < count ( $event [ 'groups' ]); $i ++ )
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
if ( $GLOBALS [ 'phpgw' ] -> accounts -> exists ( $event [ 'groups' ][ $i ]))
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
$cal_grps .= ( $i > 0 ? '<br>' : '' ) . $GLOBALS [ 'phpgw' ] -> accounts -> id2name ( $event [ 'groups' ][ $i ]);
2001-07-16 13:38:40 +02:00
}
}
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Groups' ),
'data' => $cal_grps
2001-07-16 13:38:40 +02:00
);
}
$str = '' ;
2001-07-30 00:09:24 +02:00
reset ( $event [ 'participants' ]);
while ( list ( $user , $short_status ) = each ( $event [ 'participants' ]))
2001-07-16 13:38:40 +02:00
{
2001-08-12 16:47:23 +02:00
if ( $GLOBALS [ 'phpgw' ] -> accounts -> exists ( $user ))
2001-07-16 13:38:40 +02:00
{
2002-11-23 15:19:56 +01:00
$str .= ( $str ? '<br>' : '' ) . $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $user ) . ' (' . ( $this -> bo -> check_perms ( PHPGW_ACL_EDIT , 0 , $user ) ? '<a href="' . $this -> page ( 'edit_status' , '&cal_id=' . $event [ 'id' ] . '&owner=' . $user ) . '">' . $this -> bo -> get_long_status ( $short_status ) . '</a>' : $this -> bo -> get_long_status ( $short_status )) . ')' . " \n " ;
2001-07-16 13:38:40 +02:00
}
}
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Participants' ),
'data' => $str
2001-07-16 13:38:40 +02:00
);
// Repeated Events
$rpt_type = Array (
2001-10-03 02:31:03 +02:00
MCAL_RECUR_NONE => 'none' ,
MCAL_RECUR_DAILY => 'daily' ,
MCAL_RECUR_WEEKLY => 'weekly' ,
MCAL_RECUR_MONTHLY_WDAY => 'monthlybyday' ,
MCAL_RECUR_MONTHLY_MDAY => 'monthlybydate' ,
MCAL_RECUR_YEARLY => 'yearly'
2001-07-16 13:38:40 +02:00
);
2001-07-30 00:09:24 +02:00
$str = lang ( $rpt_type [ $event [ 'recur_type' ]]);
if ( $event [ 'recur_type' ] <> MCAL_RECUR_NONE )
2001-07-16 13:38:40 +02:00
{
$str_extra = '' ;
2001-07-30 00:09:24 +02:00
if ( $event [ 'recur_enddate' ][ 'mday' ] != 0 && $event [ 'recur_enddate' ][ 'month' ] != 0 && $event [ 'recur_enddate' ][ 'year' ] != 0 )
2001-07-16 13:38:40 +02:00
{
2001-08-01 13:07:04 +02:00
$recur_end = $this -> bo -> maketime ( $event [ 'recur_enddate' ]);
2001-07-16 13:38:40 +02:00
if ( $recur_end != 0 )
{
2002-08-25 06:07:21 +02:00
$recur_end -= $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-08-12 16:47:23 +02:00
$str_extra .= lang ( 'ends' ) . ': ' . lang ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'l' )) . ', ' . lang ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'F' )) . ' ' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'd, Y' ) . ' ' ;
2001-07-16 13:38:40 +02:00
}
}
2001-07-30 00:09:24 +02:00
if ( $event [ 'recur_type' ] == MCAL_RECUR_WEEKLY || $event [ 'recur_type' ] == MCAL_RECUR_DAILY )
2001-07-16 13:38:40 +02:00
{
$repeat_days = '' ;
2001-07-18 19:32:10 +02:00
if ( $this -> bo -> prefs [ 'calendar' ][ 'weekdaystarts' ] == 'Sunday' )
2001-07-16 13:38:40 +02:00
{
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_SUNDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Sunday' ), $repeat_days );
}
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_MONDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Monday' ), $repeat_days );
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_TUESDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Tuesday' ), $repeat_days );
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_WEDNESDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Wednesday' ), $repeat_days );
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_THURSDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Thursday' ), $repeat_days );
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_FRIDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Friday' ), $repeat_days );
}
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_SATURDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Saturday' ), $repeat_days );
}
2001-07-18 19:32:10 +02:00
if ( $this -> bo -> prefs [ 'calendar' ][ 'weekdaystarts' ] == 'Monday' )
2001-07-16 13:38:40 +02:00
{
2001-07-30 00:09:24 +02:00
if ( !! ( $event [ 'recur_data' ] & MCAL_M_SUNDAY ) == True )
2001-07-16 13:38:40 +02:00
{
$this -> view_add_day ( lang ( 'Sunday' ), $repeat_days );
}
}
if ( $repeat_days <> '' )
{
$str_extra .= lang ( 'days repeated' ) . ': ' . $repeat_days ;
}
}
2001-08-26 14:31:28 +02:00
if ( $event [ 'recur_interval' ] != 0 )
2001-07-16 13:38:40 +02:00
{
2001-07-30 00:09:24 +02:00
$str_extra .= lang ( 'Interval' ) . ': ' . $event [ 'recur_interval' ];
2001-07-16 13:38:40 +02:00
}
if ( $str_extra )
{
$str .= ' (' . $str_extra . ')' ;
}
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'Repetition' ),
'data' => $str
2001-07-16 13:38:40 +02:00
);
}
for ( $i = 0 ; $i < count ( $var ); $i ++ )
{
$this -> output_template_array ( $p , 'row' , 'list' , $var [ $i ]);
}
2001-10-26 01:52:15 +02:00
if ( $alarms && @ isset ( $event [ 'alarm' ]))
2001-09-04 05:17:49 +02:00
{
2003-04-21 13:00:53 +02:00
$p -> set_var ( 'hr_text' , lang ( 'Alarms' ));
2001-09-04 05:17:49 +02:00
$p -> parse ( 'row' , 'hr' , True );
2003-04-21 13:00:53 +02:00
foreach ( $event [ 'alarm' ] as $key => $alarm )
2001-09-04 05:17:49 +02:00
{
2002-09-19 04:14:41 +02:00
$icon = '<img src="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' ,( $alarm [ 'enabled' ] ? 'enabled' : 'disabled' )) . '" width="13" height="13">' ;
2001-09-04 05:17:49 +02:00
$var = Array (
2001-10-03 02:31:03 +02:00
'field' => $icon . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $alarm [ 'time' ]),
'data' => $alarm [ 'text' ]
2001-09-04 05:17:49 +02:00
);
$this -> output_template_array ( $p , 'row' , 'list' , $var );
}
}
2003-04-21 13:00:53 +02:00
return True ;
2001-07-16 13:38:40 +02:00
}
2001-07-18 19:32:10 +02:00
2003-04-12 21:21:22 +02:00
function nm_on_off ()
{
if ( $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color () == 'row_on' )
{
return '_on' ;
}
return '_off' ;
}
2001-08-13 16:11:07 +02:00
function print_day ( $params )
2001-07-18 19:32:10 +02:00
{
2001-08-13 16:11:07 +02:00
if ( ! is_array ( $params ))
2001-08-12 16:47:23 +02:00
{
$this -> index ();
}
2001-07-18 19:32:10 +02:00
2002-09-17 04:25:40 +02:00
print_debug ( 'in print_day()' );
2001-11-03 02:52:26 +01:00
2001-08-13 03:34:32 +02:00
$this -> bo -> store_to_cache (
Array (
2001-08-13 16:11:07 +02:00
'syear' => $params [ 'year' ],
2001-11-03 02:52:26 +01:00
'smonth' => $params [ 'month' ],
2001-08-13 16:11:07 +02:00
'sday' => $params [ 'day' ],
'eyear' => $params [ 'year' ],
2001-11-03 02:52:26 +01:00
'emonth' => $params [ 'month' ],
2001-08-13 16:11:07 +02:00
'eday' => $params [ 'day' ]
2001-08-13 03:34:32 +02:00
)
);
2001-07-18 19:32:10 +02:00
2003-04-21 13:00:53 +02:00
$p = $GLOBALS [ 'phpgw' ] -> template ;
2001-07-18 19:32:10 +02:00
$p -> set_unknowns ( 'keep' );
$templates = Array (
2001-10-03 02:31:03 +02:00
'day_cal' => 'day_cal.tpl'
2001-07-18 19:32:10 +02:00
);
2002-05-05 19:47:15 +02:00
$p -> set_file ( $templates );
2001-07-18 19:32:10 +02:00
$p -> set_block ( 'day_cal' , 'day' , 'day' );
$p -> set_block ( 'day_cal' , 'day_row' , 'day_row' );
2002-01-03 13:37:15 +01:00
$p -> set_block ( 'day_cal' , 'day_event_on' , 'day_event_on' );
$p -> set_block ( 'day_cal' , 'day_event_off' , 'day_event_off' );
$p -> set_block ( 'day_cal' , 'day_event_holiday' , 'day_event_holiday' );
2001-07-18 19:32:10 +02:00
$p -> set_block ( 'day_cal' , 'day_time' , 'day_time' );
if ( ! $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ] &&
2003-04-21 13:00:53 +02:00
! $this -> bo -> prefs [ 'calendar' ][ 'workdayends' ])
2001-07-18 19:32:10 +02:00
{
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'workdaystarts' , 8 );
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'workdayends' , 16 );
$GLOBALS [ 'phpgw' ] -> preferences -> save_repository ();
2001-07-18 19:32:10 +02:00
$this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ] = 8 ;
$this -> bo -> prefs [ 'calendar' ][ 'workdayends' ] = 16 ;
}
2001-08-13 06:49:19 +02:00
if ( ! isset ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]))
{
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'interval' , 60 );
$GLOBALS [ 'phpgw' ] -> preferences -> save_repository ();
$this -> bo -> prefs [ 'calendar' ][ 'interval' ] = 60 ;
}
2002-09-17 04:25:40 +02:00
print_debug ( 'Interval set to' , intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]));
2001-08-13 03:34:32 +02:00
2001-07-18 19:32:10 +02:00
for ( $i = 0 ; $i < 24 ; $i ++ )
{
2001-08-13 03:34:32 +02:00
for ( $j = 0 ; $j < ( 60 / intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ])); $j ++ )
{
$rowspan_arr [ $i ][ $j ] = 0 ;
2002-08-25 06:07:21 +02:00
$time [ $ind ][ $j ] = '' ;
2001-08-13 03:34:32 +02:00
}
2001-07-18 19:32:10 +02:00
}
2001-08-13 16:11:07 +02:00
$date_to_eval = sprintf ( " %04d%02d%02d " , $params [ 'year' ], $params [ 'month' ], $params [ 'day' ]);
2001-07-18 19:32:10 +02:00
$time = Array ();
2002-06-25 01:24:24 +02:00
$daily = $this -> set_week_array ( $GLOBALS [ 'phpgw' ] -> datetime -> get_weekday_start ( $params [ 'year' ], $params [ 'month' ], $params [ 'day' ]), $this -> theme [ 'row_on' ], True );
2002-09-17 04:25:40 +02:00
print_debug ( 'Date to Eval' , $date_to_eval );
2001-07-22 01:35:22 +02:00
if ( $daily [ $date_to_eval ][ 'appts' ])
2002-08-25 06:07:21 +02:00
{
2003-04-12 21:21:22 +02:00
$day_start = mktime ( intval ( $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ]), - intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]), 0 , $params [ 'month' ], $params [ 'day' ], $params [ 'year' ]);
2002-11-23 15:19:56 +01:00
$day_end = mktime ( intval ( $this -> bo -> prefs [ 'calendar' ][ 'workdayends' ]), 0 , 1 , $params [ 'month' ], $params [ 'day' ], $params [ 'year' ]);
2003-04-12 21:21:22 +02:00
$last_starttime = $starttime = 0 ;
$last_endtime = $endtime = 0 ;
2001-07-18 19:32:10 +02:00
$events = $this -> bo -> cached_events [ $date_to_eval ];
2002-09-17 04:25:40 +02:00
print_debug ( 'Date' , $date_to_eval );
2003-04-12 21:21:22 +02:00
print_debug ( 'Count' , count ( $events ));
$last_ind = - 1 ;
foreach ( $events as $event )
2001-07-18 19:32:10 +02:00
{
2003-04-12 21:21:22 +02:00
if ( $event [ 'recur_type' ]) // calculate start- + end-datetime for recuring events
{
$this -> bo -> set_recur_date ( $event , $date_to_eval );
}
$starttime = $this -> bo -> maketime ( $event [ 'start' ]);
$endtime = $this -> bo -> maketime ( $event [ 'end' ]);
2002-11-23 15:19:56 +01:00
2003-04-12 21:21:22 +02:00
$interval_start = 0 ;
if ( $starttime < $day_start )
2001-08-12 16:47:23 +02:00
{
2002-02-17 04:56:58 +01:00
$ind = 0 ;
2003-04-12 21:21:22 +02:00
}
elseif ( $starttime >= $day_end )
{
$ind = 99 ;
2001-08-12 16:47:23 +02:00
}
else
{
2003-04-12 21:21:22 +02:00
$ind = intval ( $event [ 'start' ][ 'hour' ]);
$interval_start = intval ( $event [ 'start' ][ 'min' ] / intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]));
print_debug ( 'Start Time Minutes' , $event [ 'start' ][ 'min' ]);
print_debug ( 'Interval' , $interval_start );
2001-10-03 02:31:03 +02:00
}
2002-02-17 04:56:58 +01:00
if (( $ind < intval ( $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ])) || ( $ind > intval ( $this -> bo -> prefs [ 'calendar' ][ 'workdayends' ])))
{
2002-11-23 15:19:56 +01:00
$ind = $ind < intval ( $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ]) ? 0 : 99 ;
2001-08-13 03:34:32 +02:00
$interval_start = 0 ;
2002-02-17 04:56:58 +01:00
}
2002-11-23 15:19:56 +01:00
2003-04-12 21:21:22 +02:00
print_debug ( 'IND before' , $ind );
if ( $ind <= date ( 'H' , $last_endtime - 1 ) && $last_ind >= 0 ) // -1 to allow events to end on a full hour, without blocking the next hour-slot
2002-02-17 04:56:58 +01:00
{
2003-04-12 21:21:22 +02:00
$ind = $last_ind ;
$interval_start = $last_interval_start ;
2002-02-17 04:56:58 +01:00
}
2003-04-12 21:21:22 +02:00
print_debug ( 'IND after' , $ind );
$time [ $ind ][ $interval_start ] .= $this -> link_to_entry ( $event , $params [ 'month' ], $params [ 'day' ], $params [ 'year' ]);
2001-07-28 15:17:30 +02:00
2002-09-17 04:25:40 +02:00
print_debug ( 'IND' , $ind );
print_debug ( 'TIME' , $time [ $ind ][ $interval_start ]);
2002-02-17 04:56:58 +01:00
2002-11-23 15:19:56 +01:00
if ( $starttime < $day_start )
{
$starttime = $day_start ;
}
if ( $endtime > $day_end )
{
$endtime = $day_end ;
}
2003-04-12 21:21:22 +02:00
if ( $starttime != $endtime )
2001-07-28 15:17:30 +02:00
{
2002-02-17 04:56:58 +01:00
$rowspan = $rowspan_arr [ $ind ][ $interval_start ];
2002-11-23 15:19:56 +01:00
if ( $rowspan == 0 || $last_endtime <= $starttime )
2002-02-17 04:56:58 +01:00
{
2002-11-23 15:19:56 +01:00
$rowspan = intval ( round (( $endtime - $starttime ) / ( 60 * intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]))));
2002-02-17 04:56:58 +01:00
}
2002-11-23 15:19:56 +01:00
elseif ( $last_endtime < $endtime && $last_starttime )
2002-02-17 04:56:58 +01:00
{
2002-11-23 15:19:56 +01:00
$rowspan = intval ( round (( $endtime - $last_starttime ) / ( 60 * intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]))));
2002-02-17 04:56:58 +01:00
}
2001-07-28 15:17:30 +02:00
$mins = ( int )((( $endtime - $starttime ) / 60 ) % 60 );
2002-08-25 06:07:21 +02:00
2003-04-12 21:21:22 +02:00
if ( $mins != 0 && $mins <= intval ( 60 / intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ])) ||
$mins == 0 && date ( 'i' , $endtime ) > intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]))
2001-07-28 15:17:30 +02:00
{
$rowspan += 1 ;
}
2002-09-17 04:25:40 +02:00
print_debug ( 'Rowspan being set to' , $rowspan );
2001-08-13 03:34:32 +02:00
2002-11-23 15:19:56 +01:00
if ( $rowspan > $rowspan_arr [ $ind ][ $interval_start ])
2001-08-13 03:34:32 +02:00
{
$rowspan_arr [ $ind ][ $interval_start ] = $rowspan ;
2001-07-28 15:17:30 +02:00
}
}
2002-02-17 04:56:58 +01:00
$last_ind = $ind ;
$last_interval_start = $interval_start ;
2003-04-12 21:21:22 +02:00
$last_starttime = $starttime ;
2002-02-17 04:56:58 +01:00
$last_endtime = $endtime ;
2002-09-17 04:25:40 +02:00
print_debug ( 'Time' , $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $events [ $i ][ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ) . ' - ' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $this -> bo -> maketime ( $events [ $i ][ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ));
print_debug ( 'Start' , $ind );
print_debug ( 'Interval #' , $interval_start );
2001-07-18 19:32:10 +02:00
}
}
// squish events that use the same cell into the same cell.
// For example, an event from 8:00-9:15 and another from 9:30-9:45 both
// want to show up in the 8:00-9:59 cell.
$holiday_names = $daily [ $date_to_eval ][ 'holidays' ];
if ( ! $holiday_names )
{
2003-04-12 21:21:22 +02:00
$row_to_print = $this -> nm_on_off ();
2001-07-18 19:32:10 +02:00
}
else
{
2002-01-03 13:37:15 +01:00
$row_to_print = '_holiday' ;
2001-07-18 19:32:10 +02:00
while ( list ( $index , $name ) = each ( $holiday_names ))
{
2002-11-23 15:19:56 +01:00
$time [ 0 ][ 0 ] = '<center>' . $name . '</center>' . $time [ 0 ][ 0 ];
2001-07-18 19:32:10 +02:00
}
}
2003-04-12 21:21:22 +02:00
$rowspan = 0 ;
$i = isset ( $time [ 0 ][ 0 ]) ? 0 : ( int ) $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ];
$i_end = isset ( $time [ 99 ][ 0 ]) ? 99 : ( int ) $this -> bo -> prefs [ 'calendar' ][ 'workdayends' ];
while ( $i <= $i_end )
2001-07-18 19:32:10 +02:00
{
2003-04-12 21:21:22 +02:00
$j_end = $i ? 60 / intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]) : 1 ;
for ( $j = 0 ; $j < $j_end ; $j ++ )
2001-07-18 19:32:10 +02:00
{
2001-08-13 03:34:32 +02:00
$dtime = $this -> bo -> build_time_for_display (( $i * 10000 ) + (( $j * intval ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ])) * 100 ));
$p -> set_var ( 'extras' , '' );
$p -> set_var ( 'event' , ' ' );
if ( $rowspan > 1 )
2001-07-18 19:32:10 +02:00
{
2001-08-13 03:34:32 +02:00
// this might mean there's an overlap, or it could mean one event
// ends at 11:15 and another starts at 11:30.
if ( isset ( $time [ $i ][ $j ]))
{
$p -> set_var ( 'event' , $time [ $i ][ $j ]);
2003-04-12 21:21:22 +02:00
$row_to_print = $this -> nm_on_off ();
2002-01-03 13:37:15 +01:00
$p -> parse ( 'item' , 'day_event' . $row_to_print , False );
2001-08-13 03:34:32 +02:00
}
$rowspan -- ;
}
elseif ( ! isset ( $time [ $i ][ $j ]))
{
$p -> set_var ( 'event' , ' ' );
2003-04-12 21:21:22 +02:00
$row_to_print = $this -> nm_on_off ();
2002-01-03 13:37:15 +01:00
$p -> parse ( 'item' , 'day_event' . $row_to_print , False );
2001-07-18 19:32:10 +02:00
}
2001-08-13 03:34:32 +02:00
else
2001-07-18 19:32:10 +02:00
{
2001-08-13 03:34:32 +02:00
$rowspan = intval ( $rowspan_arr [ $i ][ $j ]);
if ( $rowspan > 1 )
{
$p -> set_var ( 'extras' , ' rowspan="' . $rowspan . '"' );
}
$p -> set_var ( 'event' , $time [ $i ][ $j ]);
2003-04-12 21:21:22 +02:00
$row_to_print = $this -> nm_on_off ();
2002-01-03 13:37:15 +01:00
$p -> parse ( 'item' , 'day_event' . $row_to_print , False );
2001-07-18 19:32:10 +02:00
}
2003-04-12 21:21:22 +02:00
if ( 0 < $i && $i < 99 )
2001-07-18 19:32:10 +02:00
{
2003-04-12 21:21:22 +02:00
$open_link = ' - ' ;
$close_link = '' ;
2002-09-17 04:25:40 +02:00
2003-04-12 21:21:22 +02:00
if ( ! $this -> bo -> printer_friendly && $this -> bo -> check_perms ( PHPGW_ACL_ADD ))
{
$new_hour = intval ( substr ( $dtime , 0 , strpos ( $dtime , ':' )));
if ( $this -> bo -> prefs [ 'common' ][ 'timeformat' ] == '12' && $i > 12 )
{
$new_hour += 12 ;
}
2002-09-17 04:25:40 +02:00
2003-04-12 21:21:22 +02:00
$open_link .= '<a href="' . $this -> page ( 'add' , '&date=' . $date_to_eval . '&hour=' . $new_hour . '&minute=' . substr ( $dtime , strpos ( $dtime , ':' ) + 1 , 2 )) . '">' ;
2001-07-18 19:32:10 +02:00
2003-04-12 21:21:22 +02:00
$close_link = '</a>' ;
}
2002-09-17 04:25:40 +02:00
2003-04-12 21:21:22 +02:00
$var = Array (
'open_link' => $open_link ,
'time' => ( intval ( substr ( $dtime , 0 , strpos ( $dtime , ':' ))) < 10 ? '0' . $dtime : $dtime ),
'close_link' => $close_link
);
}
else
{
$var = Array (
'open_link' => '' ,
'time' => ' ' ,
'close_link' => ''
);
}
2003-04-21 13:00:53 +02:00
$var [ 'tr_color' ] = '' ; // dummy to stop output_template_array to set it
2001-08-13 03:34:32 +02:00
$this -> output_template_array ( $p , 'item' , 'day_time' , $var );
$p -> parse ( 'row' , 'day_row' , True );
$p -> set_var ( 'event' , '' );
$p -> set_var ( 'item' , '' );
}
2003-04-12 21:21:22 +02:00
if ( $i == 0 )
{
$i = ( int ) $this -> bo -> prefs [ 'calendar' ][ 'workdaystarts' ];
}
elseif ( $i == ( int ) $this -> bo -> prefs [ 'calendar' ][ 'workdayends' ])
2002-11-23 15:19:56 +01:00
{
2003-04-12 21:21:22 +02:00
$i = 99 ;
2002-11-23 15:19:56 +01:00
}
else
{
2003-04-12 21:21:22 +02:00
++ $i ;
2002-11-23 15:19:56 +01:00
}
2003-04-12 21:21:22 +02:00
} // end for
2001-07-18 19:32:10 +02:00
return $p -> fp ( 'out' , 'day' );
} // end function
2001-07-22 01:35:22 +02:00
2001-08-12 16:47:23 +02:00
function timematrix ( $param )
2001-07-22 01:35:22 +02:00
{
2001-08-12 16:47:23 +02:00
if ( ! is_array ( $param ))
{
$this -> index ();
}
$date = $param [ 'date' ];
$starttime = $param [ 'starttime' ];
$endtime = $param [ 'endtime' ];
$participants = $param [ 'participants' ];
2001-07-22 01:35:22 +02:00
if ( ! isset ( $this -> bo -> prefs [ 'calendar' ][ 'interval' ]))
{
$this -> bo -> prefs [ 'calendar' ][ 'interval' ] = 15 ;
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> preferences -> add ( 'calendar' , 'interval' , 15 );
$GLOBALS [ 'phpgw' ] -> preferences -> save_repository ();
2001-07-22 01:35:22 +02:00
}
2002-05-05 19:47:15 +02:00
$increment = $this -> bo -> prefs [ 'calendar' ][ 'interval' ];
// $increment = 15;
2001-07-22 01:35:22 +02:00
$interval = ( int )( 60 / $increment );
2002-05-05 19:47:15 +02:00
$pix = $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'pix' );
2001-07-28 15:17:30 +02:00
2001-08-12 16:47:23 +02:00
$str = '<center>' . lang ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $date [ 'raw' ], 'l' ))
2002-11-24 11:34:28 +01:00
. ', ' . $this -> bo -> long_date ( $date ) . '<br>'
2001-07-28 15:17:30 +02:00
. '<table width="85%" border="0" cellspacing="0" cellpadding="0" cols="' . (( 24 * $interval ) + 1 ) . '">'
. '<tr><td height="1" colspan="' . (( 24 * $interval ) + 1 ) . '" bgcolor="black"><img src="' . $pix . '"></td></tr>'
2001-08-13 16:11:07 +02:00
. '<tr><td width="15%"><font color="' . $this -> theme [ 'bg_text' ] . '" face="' . $this -> theme [ 'font' ] . '" size="-2">' . lang ( 'Participant' ) . '</font></td>' ;
2001-07-22 01:35:22 +02:00
for ( $i = 0 ; $i < 24 ; $i ++ )
{
for ( $j = 0 ; $j < $interval ; $j ++ )
{
switch ( $j )
{
case 0 :
case 1 :
switch ( $j )
{
case 0 :
$pre = '0' ;
break ;
case 1 :
$pre = substr ( strval ( $i ), 0 , 1 );
break ;
}
$k = ( $i <= 9 ? $pre : substr ( $i , $j , $j + 1 ));
if ( $increment == 60 )
{
$k .= substr ( strval ( $i ), strlen ( strval ( $i )) - 1 , 1 );
}
2001-08-13 16:11:07 +02:00
$str .= '<td align="left" bgcolor="' . $this -> theme [ 'bg_color' ] . '"><font color="' . $phpgw_info [ 'theme' ][ 'bg_text' ] . '" face="' . $this -> theme [ 'font' ] . '" size="-2">'
2001-07-28 15:17:30 +02:00
. '<a href="' . $this -> page ( 'add' , '&date=' . $date [ 'full' ] . '&hour=' . $i . '&minute=' . ( interval * $j )) . " \" onMouseOver= \" window.status=' " . $i . ':' . (( $increment * $j ) <= 9 ? '0' : '' ) . ( $increment * $j ) . " '; return true; \" > "
. $k . '</a></font></td>' ;
2001-07-22 01:35:22 +02:00
break ;
default :
2001-08-13 16:11:07 +02:00
$str .= '<td align="left" bgcolor="' . $this -> theme [ 'bg_color' ] . '"><font color="' . $phpgw_info [ 'theme' ][ 'bg_text' ] . '" face="' . $this -> theme [ 'font' ] . '" size="-2">'
2001-07-28 15:17:30 +02:00
. '<a href="' . $this -> page ( 'add' , '&date=' . $date [ 'full' ] . '&hour=' . $i . '&minute=' . ( interval * $j )) . " \" onMouseOver= \" window.status=' " . $i . ':' . ( $increment * $j ) . " '; return true; \" > "
. ' </a></font></td>' ;
2001-07-22 01:35:22 +02:00
break ;
}
}
}
2001-07-28 15:17:30 +02:00
$str .= '</tr>'
. '<tr><td height="1" colspan="' . (( 24 * $interval ) + 1 ) . '" bgcolor="black"><img src="' . $pix . '"></td></tr>' ;
2001-07-22 01:35:22 +02:00
if ( ! $endtime )
{
$endtime = $starttime ;
}
$owner = $this -> bo -> owner ;
while ( list ( $part , $status ) = each ( $participants ))
{
2001-07-28 15:17:30 +02:00
$str .= '<tr>'
2001-08-13 16:11:07 +02:00
. '<td width="15%"><font color="' . $this -> theme [ 'bg_text' ] . '" face="' . $this -> theme [ 'font' ] . '" size="-2">' . $this -> bo -> get_fullname ( $part ) . '</font></td>' ;
2001-07-22 01:35:22 +02:00
$this -> bo -> cached_events = Array ();
$this -> bo -> owner = $part ;
2002-06-25 01:24:24 +02:00
$this -> bo -> so -> owner = $part ;
$this -> bo -> so -> open_box ( $part );
2001-08-13 03:34:32 +02:00
$this -> bo -> store_to_cache (
Array (
'syear' => $date [ 'year' ],
2001-10-03 02:31:03 +02:00
'smonth' => $date [ 'month' ],
2001-08-13 03:34:32 +02:00
'sday' => $date [ 'day' ],
'eyear' => 0 ,
2001-10-03 02:31:03 +02:00
'emonth' => 0 ,
2001-08-13 03:34:32 +02:00
'eday' => $date [ 'day' ] + 1
)
);
2001-07-22 01:35:22 +02:00
if ( ! $this -> bo -> cached_events [ $date [ 'full' ]])
{
for ( $j = 0 ; $j < 24 ; $j ++ )
{
for ( $k = 0 ; $k < $interval ; $k ++ )
{
2001-08-13 16:11:07 +02:00
$str .= '<td height="1" align="left" bgcolor="' . $this -> theme [ 'bg_color' ] . '" color="#999999"> </td>' ;
2001-07-22 01:35:22 +02:00
}
}
}
else
{
$time_slice = $this -> bo -> prepare_matrix ( $interval , $increment , $part , $status , $date [ 'full' ]);
for ( $h = 0 ; $h < 24 ; $h ++ )
{
$hour = $h * 10000 ;
for ( $m = 0 ; $m < $interval ; $m ++ )
{
$index = ( $hour + (( $m * $increment ) * 100 ));
switch ( $time_slice [ $index ][ 'marker' ])
{
case ' ' :
2001-08-13 16:11:07 +02:00
$time_slice [ $index ][ 'color' ] = $this -> theme [ 'bg_color' ];
2001-07-22 01:35:22 +02:00
break ;
case '-' :
2001-08-13 16:11:07 +02:00
$time_slice [ $index ][ 'color' ] = $this -> theme [ 'bg01' ];
2001-07-22 01:35:22 +02:00
break ;
}
2001-08-13 16:11:07 +02:00
$str .= '<td height="1" align="left" bgcolor="' . $time_slice [ $index ][ 'color' ] . " \" color= \" #999999 \" onMouseOver= \" window.status=' " . $time_slice [ $index ][ 'description' ] . " '; return true; \" > " . '<font color="' . $this -> theme [ 'bg_text' ] . '" face="' . $this -> theme [ 'font' ] . '" size="-2">' . $time_slice [ $index ][ 'marker' ] . '</font></td>' ;
2001-07-22 01:35:22 +02:00
}
}
}
2001-07-28 15:17:30 +02:00
$str .= '</tr>'
. '<tr><td height="1" colspan="' . (( 24 * $interval ) + 1 ) . '" bgcolor="#999999"><img src="' . $pix . '"></td></tr>' ;
2001-07-22 01:35:22 +02:00
}
$this -> bo -> owner = $owner ;
2002-06-25 01:24:24 +02:00
$this -> bo -> so -> owner = $owner ;
$this -> bo -> so -> open_box ( $owner );
2001-07-28 15:17:30 +02:00
return $str . '</table></center>' . " \n " ;
2001-07-22 01:35:22 +02:00
}
function get_response ( $cal_id )
{
2003-04-21 13:00:53 +02:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
Array (
'form_button' => 'form_button_script.tpl'
)
2001-07-22 01:35:22 +02:00
);
2001-08-27 05:03:41 +02:00
$ev = $this -> bo -> get_cached_event ();
2001-07-22 01:35:22 +02:00
$response_choices = Array (
ACCEPTED => lang ( 'Accept' ),
REJECTED => lang ( 'Reject' ),
TENTATIVE => lang ( 'Tentative' ),
NO_RESPONSE => lang ( 'No Response' )
);
2001-07-28 15:17:30 +02:00
$str = '' ;
2001-07-22 01:35:22 +02:00
while ( list ( $param , $text ) = each ( $response_choices ))
{
2002-11-23 15:19:56 +01:00
$var = Array (
'action_url_button' => $this -> page ( 'set_action' , '&cal_id=' . $cal_id . '&action=' . $param ),
'action_text_button' => ' ' . $text . ' ' ,
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
$str .= '<td>' . $p -> fp ( 'out' , 'form_button' ) . '</td>' . " \n " ;
}
if ( $this -> bo -> return_to )
{
$var = Array (
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ),
'action_text_button' => lang ( 'cancel' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
$str .= '<td>' . $p -> fp ( 'out' , 'form_button' ) . '</td>' . " \n " ;
2001-07-22 01:35:22 +02:00
}
2002-11-23 15:19:56 +01:00
$str = '<td><b>' . $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $this -> bo -> owner ) . " :</b></td> \n " . $str ;
return '<table width="100%"><tr align="center">' . " \n " . $str . '</tr></table>' . " \n " ;
2001-07-28 15:17:30 +02:00
}
2001-08-12 16:47:23 +02:00
function edit_form ( $param )
2001-07-28 15:17:30 +02:00
{
2001-08-12 16:47:23 +02:00
if ( ! is_array ( $param ))
{
2001-09-07 19:31:34 +02:00
$this -> index ();
2001-08-12 16:47:23 +02:00
}
if ( isset ( $param [ 'event' ]))
{
$event = $param [ 'event' ];
}
2001-08-13 03:34:32 +02:00
2001-07-28 15:17:30 +02:00
$hourformat = substr ( $this -> bo -> users_timeformat , 0 , 1 );
$sb = CreateObject ( 'phpgwapi.sbox' );
2001-08-12 16:47:23 +02:00
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noheader' ]);
unset ( $GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'nonavbar' ]);
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappheader' ] = True ;
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'noappfooter' ] = True ;
2003-04-21 13:00:53 +02:00
$GLOBALS [ 'phpgw_info' ][ 'flags' ][ 'app_header' ] = $event [ 'id' ] ? lang ( 'Calendar - Edit' ) : lang ( 'Calendar - Add' );
2001-08-12 16:47:23 +02:00
$GLOBALS [ 'phpgw' ] -> common -> phpgw_header ();
2001-07-28 15:17:30 +02:00
2003-04-21 13:00:53 +02:00
$p = & $GLOBALS [ 'phpgw' ] -> template ;
2001-07-28 15:17:30 +02:00
$p -> set_file (
Array (
2001-10-03 02:31:03 +02:00
'edit' => 'edit.tpl' ,
'form_button' => 'form_button_script.tpl'
2001-07-28 15:17:30 +02:00
)
);
$p -> set_block ( 'edit' , 'edit_entry' , 'edit_entry' );
$p -> set_block ( 'edit' , 'list' , 'list' );
$p -> set_block ( 'edit' , 'hr' , 'hr' );
2003-04-21 13:00:53 +02:00
2001-07-28 15:17:30 +02:00
$vars = Array (
2001-10-03 02:31:03 +02:00
'font' => $this -> theme [ 'font' ],
'bg_color' => $this -> theme [ 'bg_text' ],
'action_url' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , Array ( 'menuaction' => 'calendar.bocalendar.update' )),
2002-01-06 06:58:49 +01:00
'common_hidden' => '<input type="hidden" name="cal[id]" value="' . $event [ 'id' ] . '">' . " \n "
2002-11-23 15:19:56 +01:00
. '<input type="hidden" name="cal[owner]" value="' . $event [ 'owner' ] . '">' . " \n "
2002-01-06 06:58:49 +01:00
. '<input type="hidden" name="cal[uid]" value="' . $event [ 'uid' ] . '">' . " \n "
. ( $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ] && $event [ 'id' ] == 0 ? '<input type="hidden" name="cal[reference]" value="' . $GLOBALS [ 'HTTP_GET_VARS' ][ 'cal_id' ] . '">' . " \n " :
( @ isset ( $event [ 'reference' ]) ? '<input type="hidden" name="cal[reference]" value="' . $event [ 'reference' ] . '">' . " \n " : '' ))
. ( @ isset ( $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ]) && $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ] ?
'<input type="hidden" name="participants[]" value="' . $this -> bo -> owner . '">' . " \n " : '' ),
2001-11-08 01:18:42 +01:00
'errormsg' => ( $param [ 'cd' ] ? $GLOBALS [ 'phpgw' ] -> common -> check_code ( $param [ 'cd' ]) : '' )
2001-07-28 15:17:30 +02:00
);
$p -> set_var ( $vars );
// Brief Description
$var [] = Array (
2003-04-21 13:00:53 +02:00
'tr_color' => 'th' ,
2001-07-28 15:17:30 +02:00
'field' => lang ( 'Title' ),
2003-04-21 13:00:53 +02:00
'data' => '<input name="cal[title]" size="45" maxlength="80" value="' . $event [ 'title' ] . '">'
2001-07-28 15:17:30 +02:00
);
// Full Description
$var [] = Array (
'field' => lang ( 'Full Description' ),
2001-07-30 00:09:24 +02:00
'data' => '<textarea name="cal[description]" rows="5" cols="40" wrap="virtual" maxlength="2048">' . $event [ 'description' ] . '</textarea>'
2001-07-28 15:17:30 +02:00
);
// Display Categories
2001-09-20 03:39:46 +02:00
if ( strpos ( $event [ 'category' ], ',' ))
{
$temp_cats = explode ( ',' , $event [ 'category' ]);
@ reset ( $temp_cats );
while ( list ( $key , $value ) = each ( $temp_cats ))
{
$check_cats [] = intval ( $value );
}
}
elseif ( $event [ 'category' ])
{
$check_cats [] = intval ( $event [ 'category' ]);
}
else
{
$check_cats [] = 0 ;
}
2001-07-28 15:17:30 +02:00
$var [] = Array (
'field' => lang ( 'Category' ),
2002-11-23 15:19:56 +01:00
'data' => '<select name="categories[]" multiple size="5"><option value="0">' . lang ( 'Choose the category' ) . '</option>' . $this -> cat -> formatted_list ( 'select' , 'all' , $check_cats , True ) . '</select>'
2001-09-07 18:37:11 +02:00
);
// Location
$var [] = Array (
'field' => lang ( 'Location' ),
2003-04-21 13:00:53 +02:00
'data' => '<input name="cal[location]" size="45" maxlength="255" value="' . $event [ 'location' ] . '">'
2001-07-28 15:17:30 +02:00
);
// Date
2002-08-25 06:07:21 +02:00
$start = $this -> bo -> maketime ( $event [ 'start' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
$var [] = Array (
'field' => lang ( 'Start Date' ),
2001-08-12 16:47:23 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> dateformatorder (
$sb -> getYears ( 'start[year]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start , 'Y' ))),
$sb -> getMonthText ( 'start[month]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start , 'n' ))),
$sb -> getDays ( 'start[mday]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start , 'd' )))
2001-07-28 15:17:30 +02:00
)
);
// Time
if ( $this -> bo -> prefs [ 'common' ][ 'timeformat' ] == '12' )
{
2001-08-06 04:41:36 +02:00
$str .= '<input type="radio" name="start[ampm]" value="am"' . ( $event [ 'start' ][ 'hour' ] >= 12 ? '' : ' checked' ) . '>am' . " \n "
. '<input type="radio" name="start[ampm]" value="pm"' . ( $event [ 'start' ][ 'hour' ] >= 12 ? ' checked' : '' ) . '>pm' . " \n " ;
2001-07-28 15:17:30 +02:00
}
$var [] = Array (
'field' => lang ( 'Start Time' ),
2001-08-12 16:47:23 +02:00
'data' => '<input name="start[hour]" size="2" VALUE="' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start , $hourformat ) . '" maxlength="2">:<input name="start[min]" size="2" value="' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $start , 'i' ) . '" maxlength="2">' . " \n " . $str
2001-07-28 15:17:30 +02:00
);
// End Date
2002-08-25 06:07:21 +02:00
$end = $this -> bo -> maketime ( $event [ 'end' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
$var [] = Array (
'field' => lang ( 'End Date' ),
2001-08-12 16:47:23 +02:00
'data' => $GLOBALS [ 'phpgw' ] -> common -> dateformatorder (
$sb -> getYears ( 'end[year]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , 'Y' ))),
$sb -> getMonthText ( 'end[month]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , 'n' ))),
$sb -> getDays ( 'end[mday]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , 'd' )))
2001-07-28 15:17:30 +02:00
)
);
// End Time
if ( $this -> bo -> prefs [ 'common' ][ 'timeformat' ] == '12' )
{
2001-08-06 04:41:36 +02:00
$str = '<input type="radio" name="end[ampm]" value="am"' . ( $event [ 'end' ][ 'hour' ] >= 12 ? '' : ' checked' ) . '>am' . " \n "
. '<input type="radio" name="end[ampm]" value="pm"' . ( $event [ 'end' ][ 'hour' ] >= 12 ? ' checked' : '' ) . '>pm' . " \n " ;
2001-07-28 15:17:30 +02:00
}
$var [] = Array (
2001-10-03 02:31:03 +02:00
'field' => lang ( 'End Time' ),
2001-08-12 16:47:23 +02:00
'data' => '<input name="end[hour]" size="2" VALUE="' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , $hourformat ) . '" maxlength="2">:<input name="end[min]" size="2" value="' . $GLOBALS [ 'phpgw' ] -> common -> show_date ( $end , 'i' ) . '" maxlength="2">' . " \n " . $str
2001-07-28 15:17:30 +02:00
);
// Priority
$var [] = Array (
'field' => lang ( 'Priority' ),
2001-07-30 00:09:24 +02:00
'data' => $sb -> getPriority ( 'cal[priority]' , $event [ 'priority' ])
2001-07-28 15:17:30 +02:00
);
// Access
$var [] = Array (
'field' => lang ( 'Private' ),
2001-07-30 00:09:24 +02:00
'data' => '<input type="checkbox" name="cal[private]" value="private"' . ( ! $event [ 'public' ] ? ' checked' : '' ) . '>'
2001-07-28 15:17:30 +02:00
);
// Participants
2002-01-06 06:58:49 +01:00
if ( ! isset ( $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ]) || ! $GLOBALS [ 'phpgw_info' ][ 'server' ][ 'deny_user_grants_access' ])
2001-07-28 15:17:30 +02:00
{
2002-01-06 06:58:49 +01:00
$accounts = $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( 'run' , 1 , 'calendar' );
$users = Array ();
2002-11-23 15:19:56 +01:00
$this -> build_part_list ( $users , $accounts , $event [ 'owner' ]);
2002-08-25 06:07:21 +02:00
2002-01-06 06:58:49 +01:00
$str = '' ;
@ asort ( $users );
@ reset ( $users );
while ( list ( $id , $user_array ) = each ( $users ))
2001-07-28 15:17:30 +02:00
{
2002-11-23 15:19:56 +01:00
if ( $id != intval ( $event [ 'owner' ]))
2002-01-06 06:58:49 +01:00
{
2002-11-23 15:19:56 +01:00
$str .= ' <option value="' . $id . $event [ 'participants' ][ $id ] . '"' . ( $event [ 'participants' ][ $id ] ? ' selected' : '' ) . '>(' . $user_array [ 'type' ] . ') ' . $user_array [ 'name' ] . '</option>' . " \n " ;
2002-01-06 06:58:49 +01:00
}
2001-07-28 15:17:30 +02:00
}
2002-01-06 06:58:49 +01:00
$var [] = Array (
'field' => lang ( 'Participants' ),
'data' => " \n " . ' <select name="participants[]" multiple size="5">' . " \n " . $str . ' </select>'
);
2001-07-28 15:17:30 +02:00
// I Participate
2002-11-23 15:19:56 +01:00
if ((( $event [ 'id' ] > 0 ) && isset ( $event [ 'participants' ][ $event [ 'owner' ]])) || ! $event [ 'id' ])
2002-01-06 06:58:49 +01:00
{
$checked = ' checked' ;
}
else
{
$checked = '' ;
}
$var [] = Array (
2002-11-23 15:19:56 +01:00
'field' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $event [ 'owner' ]) . ' ' . lang ( 'Participates' ),
'data' => '<input type="checkbox" name="participants[]" value="' . $event [ 'owner' ] . $event [ 'participants' ][ $event [ 'owner' ]] . '"' . $checked . '>'
2002-01-06 06:58:49 +01:00
);
2001-10-03 02:31:03 +02:00
}
2002-01-06 06:58:49 +01:00
2001-07-28 15:17:30 +02:00
for ( $i = 0 ; $i < count ( $var ); $i ++ )
{
$this -> output_template_array ( $p , 'row' , 'list' , $var [ $i ]);
}
unset ( $var );
// Repeat Type
2003-04-21 13:00:53 +02:00
$p -> set_var ( 'tr_color' , 'th' );
$p -> set_var ( 'hr_text' , '<center><b>' . lang ( 'Repeating Event Information' ) . '</b></center>' );
2001-07-28 15:17:30 +02:00
$p -> parse ( 'row' , 'hr' , True );
$rpt_type = Array (
MCAL_RECUR_NONE ,
MCAL_RECUR_DAILY ,
MCAL_RECUR_WEEKLY ,
MCAL_RECUR_MONTHLY_WDAY ,
MCAL_RECUR_MONTHLY_MDAY ,
MCAL_RECUR_YEARLY
);
$rpt_type_out = Array (
2001-10-03 02:31:03 +02:00
MCAL_RECUR_NONE => 'None' ,
MCAL_RECUR_DAILY => 'Daily' ,
MCAL_RECUR_WEEKLY => 'Weekly' ,
MCAL_RECUR_MONTHLY_WDAY => 'Monthly (by day)' ,
MCAL_RECUR_MONTHLY_MDAY => 'Monthly (by date)' ,
MCAL_RECUR_YEARLY => 'Yearly'
2001-07-28 15:17:30 +02:00
);
$str = '' ;
for ( $l = 0 ; $l < count ( $rpt_type ); $l ++ )
{
2001-07-30 00:09:24 +02:00
$str .= '<option value="' . $rpt_type [ $l ] . '"' . ( $event [ 'recur_type' ] == $rpt_type [ $l ] ? ' selected' : '' ) . '>' . lang ( $rpt_type_out [ $rpt_type [ $l ]]) . '</option>' ;
2001-07-28 15:17:30 +02:00
}
$var [] = Array (
'field' => lang ( 'Repeat Type' ),
'data' => '<select name="cal[recur_type]">' . " \n " . $str . '</select>' . " \n "
);
2001-07-30 00:09:24 +02:00
if ( $event [ 'recur_enddate' ][ 'year' ] != 0 && $event [ 'recur_enddate' ][ 'month' ] != 0 && $event [ 'recur_enddate' ][ 'mday' ] != 0 )
2001-07-28 15:17:30 +02:00
{
$checked = ' checked' ;
2002-08-25 06:07:21 +02:00
$recur_end = $this -> bo -> maketime ( $event [ 'recur_enddate' ]) - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
}
else
{
$checked = '' ;
2002-08-25 06:07:21 +02:00
$recur_end = $this -> bo -> maketime ( $event [ 'start' ]) + 86400 - $GLOBALS [ 'phpgw' ] -> datetime -> tz_offset ;
2001-07-28 15:17:30 +02:00
}
$var [] = Array (
'field' => lang ( 'Repeat End Date' ),
'data' => '<input type="checkbox" name="cal[rpt_use_end]" value="y"' . $checked . '>' . lang ( 'Use End Date' ) . ' '
2001-08-12 16:47:23 +02:00
. $GLOBALS [ 'phpgw' ] -> common -> dateformatorder (
$sb -> getYears ( 'recur_enddate[year]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'Y' ))),
$sb -> getMonthText ( 'recur_enddate[month]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'n' ))),
$sb -> getDays ( 'recur_enddate[mday]' , intval ( $GLOBALS [ 'phpgw' ] -> common -> show_date ( $recur_end , 'd' )))
2001-07-28 15:17:30 +02:00
)
);
$var [] = Array (
'field' => lang ( 'Repeat Day' ) . '<br>' . lang ( '(for weekly)' ),
2001-07-30 00:09:24 +02:00
'data' => '<input type="checkbox" name="cal[rpt_sun]" value="' . MCAL_M_SUNDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_SUNDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Sunday' ) . ' '
. '<input type="checkbox" name="cal[rpt_mon]" value="' . MCAL_M_MONDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_MONDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Monday' ) . ' '
. '<input type="checkbox" name="cal[rpt_tue]" value="' . MCAL_M_TUESDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_TUESDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Tuesday' ) . ' '
. '<input type="checkbox" name="cal[rpt_wed]" value="' . MCAL_M_WEDNESDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_WEDNESDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Wednesday' ) . ' <br>'
. '<input type="checkbox" name="cal[rpt_thu]" value="' . MCAL_M_THURSDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_THURSDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Thursday' ) . ' '
. '<input type="checkbox" name="cal[rpt_fri]" value="' . MCAL_M_FRIDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_FRIDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Friday' ) . ' '
. '<input type="checkbox" name="cal[rpt_sat]" value="' . MCAL_M_SATURDAY . '"' . (( $event [ 'recur_data' ] & MCAL_M_SATURDAY ) ? ' checked' : '' ) . '> ' . lang ( 'Saturday' ) . ' '
2001-07-28 15:17:30 +02:00
);
$var [] = Array (
2001-08-25 23:10:54 +02:00
'field' => lang ( 'Interval' ),
2001-07-30 00:09:24 +02:00
'data' => '<input name="cal[recur_interval]" size="4" maxlength="4" value="' . $event [ 'recur_interval' ] . '">'
2001-07-28 15:17:30 +02:00
);
for ( $i = 0 ; $i < count ( $var ); $i ++ )
{
$this -> output_template_array ( $p , 'row' , 'list' , $var [ $i ]);
}
2002-11-23 15:19:56 +01:00
2003-04-21 13:00:53 +02:00
$p -> set_var ( 'submit_button' , lang ( 'Save' ));
2001-07-28 15:17:30 +02:00
2003-04-21 13:00:53 +02:00
$delete_button = $cancel_button = '' ;
2001-08-15 04:25:26 +02:00
if ( $event [ 'id' ] > 0 )
2001-07-28 15:17:30 +02:00
{
$var = Array (
2001-08-15 04:25:26 +02:00
'action_url_button' => $this -> page ( 'delete' , '&cal_id=' . $event [ 'id' ]),
2001-07-28 15:17:30 +02:00
'action_text_button' => lang ( 'Delete' ),
2003-02-26 17:42:04 +01:00
'action_confirm_button' => " onClick= \" return confirm(' " . lang ( " Are you sure \\ nyou want to \\ ndelete this entry ? \\ n \\ nThis will delete \\ nthis entry for all users. " ) . " ') \" " ,
2001-07-28 15:17:30 +02:00
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$delete_button = $p -> fp ( 'out' , 'form_button' );
2001-07-28 15:17:30 +02:00
}
2003-04-21 13:00:53 +02:00
$p -> set_var ( 'delete_button' , $delete_button );
2002-11-23 15:19:56 +01:00
if ( $this -> bo -> return_to )
2001-07-28 15:17:30 +02:00
{
2002-11-23 15:19:56 +01:00
$var = Array (
'action_url_button' => $GLOBALS [ 'phpgw' ] -> link ( '/index.php' , 'menuaction=' . $this -> bo -> return_to ),
'action_text_button' => lang ( 'Cancel' ),
'action_confirm_button' => '' ,
'action_extra_field' => ''
);
$p -> set_var ( $var );
2003-04-21 13:00:53 +02:00
$cancel_button = $p -> fp ( 'out' , 'form_button' );
2001-07-28 15:17:30 +02:00
}
2003-04-21 13:00:53 +02:00
$p -> set_var ( 'cancel_button' , $cancel_button );
2001-07-28 15:17:30 +02:00
$p -> pparse ( 'out' , 'edit_entry' );
}
function build_part_list ( & $users , $accounts , $owner )
{
if ( $accounts == False )
{
return ;
}
2001-09-07 18:37:11 +02:00
@ reset ( $accounts );
2001-07-28 15:17:30 +02:00
while ( list ( $index , $id ) = each ( $accounts ))
{
2001-09-11 05:09:18 +02:00
$i_id = intval ( $id );
if ( $i_id == $owner )
2001-07-28 15:17:30 +02:00
{
continue ;
}
2001-09-11 05:09:18 +02:00
elseif ( ! isset ( $users [ $i_id ]))
2001-07-28 15:17:30 +02:00
{
2001-09-11 05:09:18 +02:00
if ( $GLOBALS [ 'phpgw' ] -> accounts -> exists ( $i_id ) == True )
2001-07-28 15:17:30 +02:00
{
2001-09-11 05:09:18 +02:00
$users [ $i_id ] = Array (
'name' => $GLOBALS [ 'phpgw' ] -> common -> grab_owner_name ( $i_id ),
'type' => $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $i_id )
);
2001-07-28 15:17:30 +02:00
}
2001-09-11 05:09:18 +02:00
if ( $GLOBALS [ 'phpgw' ] -> accounts -> get_type ( $i_id ) == 'g' )
2001-07-28 15:17:30 +02:00
{
2001-09-11 05:09:18 +02:00
$this -> build_part_list ( $users , $GLOBALS [ 'phpgw' ] -> acl -> get_ids_for_location ( $i_id , 1 , 'phpgw_group' ), $owner );
2001-07-28 15:17:30 +02:00
}
}
}
2001-07-22 01:35:22 +02:00
}
2001-08-26 14:31:28 +02:00
function set_week_array ( $startdate , $cellcolor , $weekly )
{
2002-04-16 18:52:36 +02:00
for ( $j = 0 , $datetime = $startdate ; $j < 7 ; $j ++ , $datetime += 86400 )
2001-08-26 14:31:28 +02:00
{
2002-09-19 04:14:41 +02:00
$date = date ( 'Ymd' , $datetime + ( 60 * 60 * 2 ));
2001-08-26 14:31:28 +02:00
2002-09-19 04:14:41 +02:00
print_debug ( 'set_week_array:Date' , $date );
2001-08-26 14:31:28 +02:00
2001-08-28 05:41:16 +02:00
if ( $this -> bo -> cached_events [ $date ])
{
2002-09-19 04:14:41 +02:00
print_debug ( 'Date' , $date );
print_debug ( 'Appointments Found' , count ( $this -> bo -> cached_events [ $date ]));
2001-08-28 05:41:16 +02:00
$appts = True ;
}
else
{
$appts = False ;
}
2001-08-26 14:31:28 +02:00
$holidays = $this -> bo -> cached_holidays [ $date ];
if ( $weekly )
{
$cellcolor = $GLOBALS [ 'phpgw' ] -> nextmatchs -> alternate_row_color ( $cellcolor );
}
$day_image = '' ;
if ( $holidays )
{
2002-11-23 21:48:42 +01:00
$extra = ' class="cal_holiday"' ;
2001-08-28 05:41:16 +02:00
$class = ( $appts ? 'b' : '' ) . 'minicalhol' ;
2001-08-26 14:31:28 +02:00
if ( $date == $this -> bo -> today )
{
2002-04-16 18:52:36 +02:00
$day_image = ' background="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'mini_day_block' ) . '"' ;
2001-08-26 14:31:28 +02:00
}
}
elseif ( $date != $this -> bo -> today )
{
2002-11-23 21:48:42 +01:00
$extra = ' class="' . $cellcolor . '"' ;
2001-08-28 05:41:16 +02:00
$class = ( $appts ? 'b' : '' ) . 'minicalendar' ;
2001-08-26 14:31:28 +02:00
}
else
{
2002-11-23 21:48:42 +01:00
$extra = ' class="cal_today"' ;
2001-08-28 05:41:16 +02:00
$class = ( $appts ? 'b' : '' ) . 'minicalendar' ;
2002-04-16 18:52:36 +02:00
$day_image = ' background="' . $GLOBALS [ 'phpgw' ] -> common -> image ( 'calendar' , 'mini_day_block' ) . '"' ;
2001-08-26 14:31:28 +02:00
}
if ( $this -> bo -> printer_friendly && @ $this -> bo -> prefs [ 'calendar' ][ 'print_black_white' ])
{
$extra = '' ;
}
if ( ! $this -> bo -> printer_friendly && $this -> bo -> check_perms ( PHPGW_ACL_ADD ))
{
$new_event = True ;
}
else
{
$new_event = False ;
}
$holiday_name = Array ();
if ( $holidays )
{
for ( $k = 0 ; $k < count ( $holidays ); $k ++ )
{
$holiday_name [] = $holidays [ $k ][ 'name' ];
}
}
$week = '' ;
2002-11-23 15:19:56 +01:00
if ( ! $j || ( ! $weekly && $j && substr ( $date , 6 , 2 ) == '01' ))
2001-08-26 14:31:28 +02:00
{
2001-12-22 15:38:54 +01:00
$week = lang ( 'week' ) . ' ' . ( int )(( date ( 'z' ,( $startdate + ( 24 * 3600 * 4 ))) + 7 ) / 7 );
2001-08-26 14:31:28 +02:00
}
$daily [ $date ] = Array (
'extra' => $extra ,
'new_event' => $new_event ,
'holidays' => $holiday_name ,
'appts' => $appts ,
'week' => $week ,
'day_image' => $day_image ,
'class' => $class
);
}
if ( $this -> debug )
{
2002-04-13 05:20:53 +02:00
_debug_array ( $daily );
2001-08-26 14:31:28 +02:00
}
return $daily ;
}
2001-07-16 13:38:40 +02:00
}
?>