From 0f055a3543d6cbf5851db0c280af71e7cc2913d8 Mon Sep 17 00:00:00 2001 From: skeeter Date: Sat, 16 Jun 2001 19:09:21 +0000 Subject: [PATCH] This fixes various little errors. One important thing is that when checking for overlapping events, it does not take into account repeating events. --- calendar/inc/class.calendar.inc.php | 90 +++++++++++++++++------------ 1 file changed, 52 insertions(+), 38 deletions(-) diff --git a/calendar/inc/class.calendar.inc.php b/calendar/inc/class.calendar.inc.php index a29893f20b..a9b2d13313 100755 --- a/calendar/inc/class.calendar.inc.php +++ b/calendar/inc/class.calendar.inc.php @@ -675,15 +675,18 @@ class calendar extends calendar_ $outer_etime = mktime($outer->end->hour,$outer->end->min,$outer->end->sec,$outer->end->month,$outer->end->mday,$outer->end->year) - $this->datetime->tz_offset; $ostime = $phpgw->common->show_date($outer_stime,'Hi'); $oetime = $phpgw->common->show_date($outer_etime,'Hi'); - - if($outer_stime < $datetime) + + if($outer->recur_type == MCAL_RECUR_NONE) { - $ostime = 0; - } + if($outer_stime < $datetime) + { + $ostime = 0; + } - if($outer_etime > $eod) - { - $oetime = 2359; + if($outer_etime > $eod) + { + $oetime = 2359; + } } for($inner_loop=$outer_loop;$inner_loop<$this->sorted_events_matching;$inner_loop++) @@ -694,18 +697,20 @@ class calendar extends calendar_ $istime = $phpgw->common->show_date($inner_stime,'Hi'); $ietime = $phpgw->common->show_date($inner_etime,'Hi'); - if($inner_stime < $datetime) + if($inner->recur_type == MCAL_RECUR_NONE) { - $istime = 0; + if($inner_stime < $datetime) + { + $istime = 0; + } + + if($inner_etime > ($datetime + 86399)) + { + $ietime = 2359; + } } - if($inner_etime > ($datetime + 86399)) - { - $ietime = 2359; - } - - if(($ostime > $istime) || - (($ostime == $istime) && ($oetime > $ietime))) + if(($ostime > $istime) || (($ostime == $istime) && ($oetime > $ietime))) { $temp = $events[$inner_loop]; $events[$inner_loop] = $events[$outer_loop]; @@ -904,12 +909,9 @@ class calendar extends calendar_ $retval = Array(); $ok = False; - $starttime -= $this->datetime->tz_offset; - $endtime -= $this->datetime->tz_offset; - if($starttime == $endtime) { - $endtime = mktime(0,0,0,$phpgw->common->show_date($starttime,'m'),$phpgw->common->show_date($starttime,'d') + 1,$phpgw->common->show_date($starttime,'Y')) - $this->datetime->tz_offset - 1; + $endtime = mktime(23,59,59,$phpgw->common->show_date($starttime,'m'),$phpgw->common->show_date($starttime,'d') + 1,$phpgw->common->show_date($starttime,'Y')) - $this->datetime->tz_offset; } $sql = 'AND ((('.$starttime.' <= phpgw_cal.datetime) AND ('.$endtime.' >= phpgw_cal.datetime) AND ('.$endtime.' <= phpgw_cal.edatetime)) ' @@ -922,13 +924,18 @@ class calendar extends calendar_ $p_g = ''; if(count($participants)) { - while(list($user,) = each($participants)) + $users = ''; + while(list($user,$status) = each($participants)) { - if($p_g) + if($users) { - $p_g .= ' OR '; + $users .= ','; } - $p_g .= 'phpgw_cal_user.cal_login='.$user; + $users .= $user; + } + if($users) + { + $p_g .= 'phpgw_cal_user.cal_login in ('.$users.')'; } } if($p_g) @@ -942,13 +949,16 @@ class calendar extends calendar_ $sql .= ' AND phpgw_cal.cal_id <> '.$id; } - $db2 = $phpgw->db; + $sql .= ' ORDER BY phpgw_cal.datetime ASC, phpgw_cal.edatetime ASC, phpgw_cal.priority ASC'; $events = $this->get_event_ids(False,$sql); if($events == False) { return false; } + + $db2 = $phpgw->db; + for($i=0;$iquery('SELECT recur_type FROM phpgw_cal_repeats WHERE cal_id='.$events[$i],__LINE__,__FILE__); @@ -1712,26 +1722,26 @@ class calendar extends calendar_ // Repeated Events $rpt_type = Array( - 'none', - 'daily', - 'weekly', - 'monthlybyday', - 'monthlybydate', - 'yearly' + 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' ); $str = lang($rpt_type[$event->recur_type]); if($event->recur_type <> MCAL_RECUR_NONE) { - $str .= ' ('; + $str_extra = ''; if ($event->recur_enddate->mday != 0 && $event->recur_enddate->month != 0 && $event->recur_enddate->year != 0) { $recur_end = mktime($event->recur_enddate->hour,$event->recur_enddate->min,$event->recur_enddate->sec,$event->recur_enddate->month,$event->recur_enddate->mday,$event->recur_enddate->year); if($recur_end != 0) { $recur_end -= $this->datetime->tz_offset; - $str .= lang('ends').': '.lang($phpgw->common->show_date($recur_end,'l')); - $str .= ', '.lang($phpgw->common->show_date($recur_end,'F')); - $str .= ' '.$phpgw->common->show_date($recur_end,'d, Y').' '; + $str_extra .= lang('ends').': '.lang($phpgw->common->show_date($recur_end,'l')); + $str_extra .= ', '.lang($phpgw->common->show_date($recur_end,'F')); + $str_extra .= ' '.$phpgw->common->show_date($recur_end,'d, Y').' '; } } if($event->recur_type == MCAL_RECUR_WEEKLY || $event->recur_type == MCAL_RECUR_DAILY) @@ -1777,14 +1787,18 @@ class calendar extends calendar_ } if($repeat_days <> '') { - $str .= lang('days repeated').': '.$repeat_days; + $str_extra .= lang('days repeated').': '.$repeat_days; } } if($event->recur_interval) { - $str .= lang('Interval').': '.$event->recur_interval; + $str_extra .= lang('Interval').': '.$event->recur_interval; + } + + if($str_extra) + { + $str .= ' ('.$str_extra.')'; } - $str .= ')'; $var = Array( 'field' => lang('Repetition'),