From a1dbc97b4e03470b7fbc536541fe566d15f2269f Mon Sep 17 00:00:00 2001 From: skeeter Date: Thu, 20 Sep 2001 01:39:46 +0000 Subject: [PATCH] A couple of fixes for repeating events, pointed out by ceb. --- calendar/inc/class.bocalendar.inc.php | 8 ++--- calendar/inc/class.uicalendar.inc.php | 42 +++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 7 deletions(-) diff --git a/calendar/inc/class.bocalendar.inc.php b/calendar/inc/class.bocalendar.inc.php index aaeca86a80..dee64baea4 100755 --- a/calendar/inc/class.bocalendar.inc.php +++ b/calendar/inc/class.bocalendar.inc.php @@ -446,7 +446,7 @@ $is_public = ($l_cal['private'] == 'public'?1:0); $this->so->event_init(); $this->add_attribute('uid',$l_cal['uid']); - $this->so->set_category(implode($l_categories,',')); + $this->so->set_category(implode(',',$l_categories)); $this->so->set_title($l_cal['title']); $this->so->set_description($l_cal['description']); $this->so->set_start($l_start['year'],$l_start['month'],$l_start['mday'],$l_start['hour'],$l_start['min'],0); @@ -465,7 +465,7 @@ $l_recur_enddate['month'] = 0; $l_recur_enddate['mday'] = 0; } - + switch(intval($l_cal['recur_type'])) { case MCAL_RECUR_NONE: @@ -475,7 +475,7 @@ $this->so->set_recur_daily(intval($l_recur_enddate['year']),intval($l_recur_enddate['month']),intval($l_recur_enddate['mday']),intval($l_cal['recur_interval'])); break; case MCAL_RECUR_WEEKLY: - $cal['recur_data'] = intval($l_cal['rpt_sun']) + intval($l_cal['rpt_mon']) + intval($l_cal['rpt_tue']) + intval($l_cal['rpt_wed']) + intval($l_cal['rpt_thu']) + intval($l_cal['rpt_fri']) + intval($l_cal['rpt_sat']); + $l_cal['recur_data'] = intval($l_cal['rpt_sun']) + intval($l_cal['rpt_mon']) + intval($l_cal['rpt_tue']) + intval($l_cal['rpt_wed']) + intval($l_cal['rpt_thu']) + intval($l_cal['rpt_fri']) + intval($l_cal['rpt_sat']); $this->so->set_recur_weekly(intval($l_recur_enddate['year']),intval($l_recur_enddate['month']),intval($l_recur_enddate['mday']),intval($l_cal['recur_interval']),$l_cal['recur_data']); break; case MCAL_RECUR_MONTHLY_MDAY: @@ -868,7 +868,7 @@ $groups = $GLOBALS['phpgw']->accounts->membership($owner); while (list($key,$group) = each($groups)) { - if (strpos(' '.implode($event['groups'],',').' ',$group['account_id'])) + if (strpos(' '.implode(',',$event['groups']).' ',$group['account_id'])) { return False; } diff --git a/calendar/inc/class.uicalendar.inc.php b/calendar/inc/class.uicalendar.inc.php index 16a0105dba..0fc85e3f39 100755 --- a/calendar/inc/class.uicalendar.inc.php +++ b/calendar/inc/class.uicalendar.inc.php @@ -476,7 +476,7 @@ $p->pparse('out','year_t'); } - function view($vcal_id=0) + function view($vcal_id=0,$cal_date=0) { unset($GLOBALS['phpgw_info']['flags']['noheader']); unset($GLOBALS['phpgw_info']['flags']['nonavbar']); @@ -485,6 +485,8 @@ echo '
'; $cal_id = $vcal_id?$vcal_id:$GLOBALS['HTTP_GET_VARS']['cal_id']; + $date = $cal_date?$cal_date:0; + $date = $date?$date:intval($GLOBALS['HTTP_GET_VARS']['date']); // First, make sure they have permission to this entry if ($cal_id < 1) @@ -507,6 +509,23 @@ return; } + $this->bo->repeating_events = Array(); + $this->bo->cached_events = Array(); + $this->bo->repeating_events[0] = $event; + $datetime = mktime(0,0,0,$this->bo->month,$this->bo->day,$this->bo->year) - $this->tz_offset; + $this->bo->check_repeating_events($datetime); + if($this->bo->cached_events[$GLOBALS['phpgw']->common->show_date($datetime,'Ymd')][0] == $event) + { + $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); + } echo $this->view_event($event); if($this->bo->owner == $event['owner']) @@ -2129,7 +2148,7 @@ @reset($cat_string); $var[] = Array( 'field' => lang('Category'), - 'data' => implode($cat_string,',') + 'data' => implode(',',$cat_string) ); } @@ -2845,9 +2864,26 @@ ); // Display Categories + 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; + } $var[] = Array( 'field' => lang('Category'), - 'data' => '' + 'data' => '' ); // Location