more ICAL support

This commit is contained in:
skeeter 2001-03-02 04:20:41 +00:00
parent 68e7eb4d91
commit 518325dcb4
3 changed files with 272 additions and 140 deletions

View File

@ -128,14 +128,7 @@ class calendar extends calendar_
function check_perms($needed) function check_perms($needed)
{ {
if($this->rights & $needed) return (!!($this->rights & $needed) == True);
{
return True;
}
else
{
return False;
}
} }
function get_weekday_start($year,$month,$day) { function get_weekday_start($year,$month,$day) {

View File

@ -125,16 +125,18 @@ class calendar_
if($options != '') if($options != '')
{ {
$event = mcal_fetch_event($mcal_stream,$event_id,$options); $this->event = mcal_fetch_event($mcal_stream,$event_id,$options);
} }
else else
{ {
$event = mcal_fetch_event($mcal_stream,$event_id); $this->event = mcal_fetch_event($mcal_stream,$event_id);
} }
// Need to load the $this->event variable with the data from the mcal_fetch_event() call // Need to load the $this->event variable with the $event structure from
// Use http://www.php.net/manual/en/function.mcal-fetch-event.phpas the reference // the mcal_fetch_event() call
// Use http://www.php.net/manual/en/function.mcal-fetch-event.php as the reference
// This only needs legacy support
return $this->event; return $this->event;
} }
@ -221,7 +223,105 @@ class calendar_
function event_init($stream) function event_init($stream)
{ {
$this->event = CreateObject('calendar.calendar_item');
return mcal_event_init($stream); return mcal_event_init($stream);
} }
function event_set_category($stream,$category='')
{
$this->event->category = $category;
return mcal_event_set_category($stream,$this->event->category);
}
function event_set_title($stream,$title='')
{
$this->event->title = $title;
return mcal_event_set_title($stream,$this->event->title);
}
function event_set_description($stream,$description='')
{
$this->event->description = $description;
return mcal_event_set_description($stream,$this->event->description);
}
function event_set_start($stream,$year,$month,$day=0,$hour=0,$min=0,$sec=0)
{
$this->event->start->year = $year;
$this->event->start->month = $month;
$this->event->start->day = $day;
$this->event->start->hour = $hour;
$this->event->start->min = $min;
$this->event->start->sec = $sec;
if($sec == 0)
{
if($min == 0)
{
if($hour == 0)
{
if($day == 0)
{
return mcal_event_set_start($stream,$year,$month);
}
else
{
return mcal_event_set_start($stream,$year,$month,$day);
}
}
else
{
return mcal_event_set_start($stream,$year,$month,$day,$hour);
}
}
else
{
return mcal_event_set_start($stream,$year,$month,$day,$hour,$min);
}
}
else
{
return mcal_event_set_start($stream,$year,$month,$day,$hour,$min,$sec);
}
}
function event_set_end($stream,$year,$month,$day=0,$hour=0,$min=0,$sec=0)
{
$this->event->end->year = $year;
$this->event->end->month = $month;
$this->event->end->day = $day;
$this->event->end->hour = $hour;
$this->event->end->min = $min;
$this->event->end->sec = $sec;
if($sec == 0)
{
if($min == 0)
{
if($hour == 0)
{
if($day == 0)
{
return mcal_event_set_end($stream,$year,$month);
}
else
{
return mcal_event_set_end($stream,$year,$month,$day);
}
}
else
{
return mcal_event_set_end($stream,$year,$month,$day,$hour);
}
}
else
{
return mcal_event_set_end($stream,$year,$month,$day,$hour,$min);
}
}
else
{
return mcal_event_set_end($stream,$year,$month,$day,$hour,$min,$sec);
}
}
} }

View File

@ -94,136 +94,136 @@ class calendar_
if($this->stream->num_rows() > 0) if($this->stream->num_rows() > 0)
{ {
$event = CreateObject('calendar.calendar_item'); $this->event = CreateObject('calendar.calendar_item');
$event->start = new calendar_time; $this->event->start = new calendar_time;
$event->end = new calendar_time; $this->event->end = new calendar_time;
$event->recur_enddate = new calendar_time; $this->event->recur_enddate = new calendar_time;
$this->stream->next_record(); $this->stream->next_record();
// Load the calendar event data from the db into $event structure // Load the calendar event data from the db into $event structure
// Use http://www.php.net/manual/en/function.mcal-fetch-event.php as the reference // Use http://www.php.net/manual/en/function.mcal-fetch-event.php as the reference
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->owner = $this->user; //$this->event->owner = $this->user;
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->owner = $this->stream->f('cal_owner'); $this->event->owner = $this->stream->f('cal_owner');
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->id = $event_id; //$this->event->id = $event_id;
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->id = intval($this->stream->f('cal_id')); $this->event->id = intval($this->stream->f('cal_id'));
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->public = $this->stream->f('public'); //$this->event->public = $this->stream->f('public');
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->access = $this->stream->f('cal_access'); $this->event->access = $this->stream->f('cal_access');
//Legacy Support (New) //Legacy Support (New)
$event->public = ($this->stream->f('cal_access')=='private'?0:1); $this->event->public = ($this->stream->f('cal_access')=='private'?0:1);
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->category = $this->stream->f('category'); //$this->event->category = $this->stream->f('category');
// But until then, do it this way... // But until then, do it this way...
//Legacy Support (New) //Legacy Support (New)
$event->category = 'Unfiled'; $this->event->category = 'Unfiled';
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->title = $phpgw->strip_html($this->stream->f('title')); //$this->event->title = $phpgw->strip_html($this->stream->f('title'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->name = $phpgw->strip_html($this->stream->f('cal_name')); $this->event->name = $phpgw->strip_html($this->stream->f('cal_name'));
//Legacy Support (New) //Legacy Support (New)
$event->title = $phpgw->strip_html($this->stream->f('cal_name')); $this->event->title = $phpgw->strip_html($this->stream->f('cal_name'));
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->title = $phpgw->strip_html($this->stream->f('description')); //$this->event->title = $phpgw->strip_html($this->stream->f('description'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
//Legacy Support (New) //Legacy Support (New)
$event->description = $phpgw->strip_html($this->stream->f('cal_description')); $this->event->description = $phpgw->strip_html($this->stream->f('cal_description'));
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->alarm = intval($this->stream->f('alarm')); //$this->event->alarm = intval($this->stream->f('alarm'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support (New) //Legacy Support (New)
$event->alarm = 0; $this->event->alarm = 0;
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->start = unserialize($this->stream->f('start')); //$this->event->start = unserialize($this->stream->f('start'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->datetime = $this->stream->f('cal_datetime'); $this->event->datetime = $this->stream->f('cal_datetime');
$date = $this->localdates($event->datetime); $date = $this->localdates($this->event->datetime);
$event->day = $date['day']; $this->event->day = $date['day'];
$event->month = $date['month']; $this->event->month = $date['month'];
$event->year = $date['year']; $this->event->year = $date['year'];
$time = $this->splittime($phpgw->common->show_date($event->datetime,'His')); $time = $this->splittime($phpgw->common->show_date($this->event->datetime,'His'));
$event->hour = (int)$time['hour']; $this->event->hour = (int)$time['hour'];
$event->minute = (int)$time['minute']; $this->event->minute = (int)$time['minute'];
$event->ampm = $time['ampm']; $this->event->ampm = $time['ampm'];
//Legacy Support (New) //Legacy Support (New)
$datetime = $this->localdates($this->stream->f('cal_datetime')); $datetime = $this->localdates($this->stream->f('cal_datetime'));
$event->start->year = $datetime['year']; $this->event->start->year = $datetime['year'];
$event->start->month = $datetime['month']; $this->event->start->month = $datetime['month'];
$event->start->mday = $datetime['day']; $this->event->start->mday = $datetime['day'];
$event->start->hour = $datetime['hour']; $this->event->start->hour = $datetime['hour'];
$event->start->min = $datetime['minute']; $this->event->start->min = $datetime['minute'];
$event->start->sec = $datetime['second']; $this->event->start->sec = $datetime['second'];
$event->start->alarm = 0; $this->event->start->alarm = 0;
//Legacy Support //Legacy Support
$event->mdatetime = $this->stream->f('cal_mdatetime'); $this->event->mdatetime = $this->stream->f('cal_mdatetime');
$date = $this->localdates($event->mdatetime); $date = $this->localdates($this->event->mdatetime);
$event->mod_day = $date['day']; $this->event->mod_day = $date['day'];
$event->mod_month = $date['month']; $this->event->mod_month = $date['month'];
$event->mod_year = $date['year']; $this->event->mod_year = $date['year'];
$time = $this->splittime($phpgw->common->show_date($event->mdatetime,'His')); $time = $this->splittime($phpgw->common->show_date($this->event->mdatetime,'His'));
$event->mod_hour = (int)$time['hour']; $this->event->mod_hour = (int)$time['hour'];
$event->mod_minute = (int)$time['minute']; $this->event->mod_minute = (int)$time['minute'];
$event->mod_second = (int)$time['second']; $this->event->mod_second = (int)$time['second'];
$event->mod_ampm = $time['ampm']; $this->event->mod_ampm = $time['ampm'];
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->end = unserialize($this->stream->f('end')); //$this->event->end = unserialize($this->stream->f('end'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->edatetime = $this->stream->f('cal_edatetime'); $this->event->edatetime = $this->stream->f('cal_edatetime');
$date = $this->localdates($event->edatetime); $date = $this->localdates($this->event->edatetime);
$event->end_day = $date['day']; $this->event->end_day = $date['day'];
$event->end_month = $date['month']; $this->event->end_month = $date['month'];
$event->end_year = $date['year']; $this->event->end_year = $date['year'];
$time = $this->splittime($phpgw->common->show_date($event->edatetime,'His')); $time = $this->splittime($phpgw->common->show_date($this->event->edatetime,'His'));
$event->end_hour = (int)$time['hour']; $this->event->end_hour = (int)$time['hour'];
$event->end_minute = (int)$time['minute']; $this->event->end_minute = (int)$time['minute'];
$event->end_second = (int)$time['second']; $this->event->end_second = (int)$time['second'];
$event->end_ampm = $time['ampm']; $this->event->end_ampm = $time['ampm'];
//Legacy Support (New) //Legacy Support (New)
$datetime = $this->localdates($this->stream->f('cal_edatetime')); $datetime = $this->localdates($this->stream->f('cal_edatetime'));
$event->end->year = $datetime['year']; $this->event->end->year = $datetime['year'];
$event->end->month = $datetime['month']; $this->event->end->month = $datetime['month'];
$event->end->mday = $datetime['day']; $this->event->end->mday = $datetime['day'];
$event->end->hour = $datetime['hour']; $this->event->end->hour = $datetime['hour'];
$event->end->min = $datetime['minute']; $this->event->end->min = $datetime['minute'];
$event->end->sec = $datetime['second']; $this->event->end->sec = $datetime['second'];
$event->end->alarm = 0; $this->event->end->alarm = 0;
//Legacy Support //Legacy Support
$event->priority = $this->stream->f('cal_priority'); $this->event->priority = $this->stream->f('cal_priority');
if($this->stream->f('cal_group')) if($this->stream->f('cal_group'))
{ {
$groups = explode(',',$this->stream->f('cal_group')); $groups = explode(',',$this->stream->f('cal_group'));
for($j=1;$j<count($groups) - 1;$j++) for($j=1;$j<count($groups) - 1;$j++)
{ {
$event->groups[] = $groups[$j]; $this->event->groups[] = $groups[$j];
} }
} }
@ -239,107 +239,107 @@ class calendar_
$this->stream->next_record(); $this->stream->next_record();
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->recur_type = intval($this->stream->f('recur_type')); //$this->event->recur_type = intval($this->stream->f('recur_type'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$rpt_type = strtolower($this->stream->f('cal_type')); $rpt_type = strtolower($this->stream->f('cal_type'));
$event->rpt_type = !$rpt_type?'none':$rpt_type; $this->event->rpt_type = !$rpt_type?'none':$rpt_type;
//Legacy Support (New) //Legacy Support (New)
switch($event->rpt_type) switch($this->event->rpt_type)
{ {
case 'none': case 'none':
$event->recur_type = RECUR_NONE; $this->event->recur_type = RECUR_NONE;
break; break;
case 'daily': case 'daily':
$event->recur_type = RECUR_DAILY; $this->event->recur_type = RECUR_DAILY;
break; break;
case 'weekly': case 'weekly':
$event->recur_type = RECUR_WEEKLY; $this->event->recur_type = RECUR_WEEKLY;
break; break;
case 'monthlybydate': case 'monthlybydate':
$event->recur_type = RECUR_MONTHLY_MDAY; $this->event->recur_type = RECUR_MONTHLY_MDAY;
break; break;
case 'monthlybyday': case 'monthlybyday':
$event->recur_type = RECUR_MONTHLY_WDAY; $this->event->recur_type = RECUR_MONTHLY_WDAY;
break; break;
case 'yearly': case 'yearly':
$event->recur_type = RECUR_YEARLY; $this->event->recur_type = RECUR_YEARLY;
break; break;
} }
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->recur_interval = intval($this->stream->f('recur_interval')); //$this->event->recur_interval = intval($this->stream->f('recur_interval'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->rpt_freq = (int)$this->stream->f('cal_frequency'); $this->event->rpt_freq = (int)$this->stream->f('cal_frequency');
//Legacy Support (New) //Legacy Support (New)
$event->recur_interval = (int)$this->stream->f('cal_frequency'); $this->event->recur_interval = (int)$this->stream->f('cal_frequency');
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->recur_enddate = unserialize($this->stream->f('recur_enddate')); //$this->event->recur_enddate = unserialize($this->stream->f('recur_enddate'));
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$event->recur_use_end = $this->stream->f('cal_use_end'); $this->event->recur_use_end = $this->stream->f('cal_use_end');
if($event->recur_use_end == True) if($this->event->recur_use_end == True)
{ {
//Legacy Support
$event->rpt_end = $this->stream->f('cal_end');
$date = $this->localdates($this->stream->f('cal_end')); $date = $this->localdates($this->stream->f('cal_end'));
$event->rpt_end_day = (int)$date['day']; //Legacy Support
$event->rpt_end_month = (int)$date['month']; $this->event->rpt_end = $this->stream->f('cal_end');
$event->rpt_end_year = (int)$date['year']; $this->event->rpt_end_day = (int)$date['day'];
$this->event->rpt_end_month = (int)$date['month'];
$this->event->rpt_end_year = (int)$date['year'];
//Legacy Support (New) //Legacy Support (New)
$event->recur_enddate->year = $date['year']; $this->event->recur_enddate->year = $date['year'];
$event->recur_enddate->month = $date['month']; $this->event->recur_enddate->month = $date['month'];
$event->recur_enddate->mday = $date['day']; $this->event->recur_enddate->mday = $date['day'];
$event->recur_enddate->hour = $date['hour']; $this->event->recur_enddate->hour = $date['hour'];
$event->recur_enddate->min = $date['minute']; $this->event->recur_enddate->min = $date['minute'];
$event->recur_enddate->sec = $date['second']; $this->event->recur_enddate->sec = $date['second'];
$event->recur_enddate->alarm = 0; $this->event->recur_enddate->alarm = 0;
} }
else else
{ {
//Legacy Support //Legacy Support
$event->rpt_end = 0; $this->event->rpt_end = 0;
$event->rpt_end_day = 0; $this->event->rpt_end_day = 0;
$event->rpt_end_month = 0; $this->event->rpt_end_month = 0;
$event->rpt_end_year = 0; $this->event->rpt_end_year = 0;
//Legacy Support (New) //Legacy Support (New)
$event->recur_enddate->year = 0; $this->event->recur_enddate->year = 0;
$event->recur_enddate->month = 0; $this->event->recur_enddate->month = 0;
$event->recur_enddate->mday = 0; $this->event->recur_enddate->mday = 0;
$event->recur_enddate->hour = 0; $this->event->recur_enddate->hour = 0;
$event->recur_enddate->min = 0; $this->event->recur_enddate->min = 0;
$event->recur_enddate->sec = 0; $this->event->recur_enddate->sec = 0;
$event->recur_enddate->alarm = 0; $this->event->recur_enddate->alarm = 0;
} }
// This is the preferred method once everything is normalized... // This is the preferred method once everything is normalized...
//$event->recur_data = $this->stream->f('recur_data'); //$this->event->recur_data = $this->stream->f('recur_data');
// But until then, do it this way... // But until then, do it this way...
//Legacy Support //Legacy Support
$rpt_days = strtoupper($this->stream->f('cal_rpt_days')); $rpt_days = strtoupper($this->stream->f('cal_rpt_days'));
$event->rpt_days = $rpt_days; $this->event->rpt_days = $rpt_days;
$event->rpt_sun = (substr($rpt_days,0,1)=='Y'?1:0); $this->event->rpt_sun = (substr($rpt_days,0,1)=='Y'?1:0);
$event->rpt_mon = (substr($rpt_days,1,1)=='Y'?1:0); $this->event->rpt_mon = (substr($rpt_days,1,1)=='Y'?1:0);
$event->rpt_tue = (substr($rpt_days,2,1)=='Y'?1:0); $this->event->rpt_tue = (substr($rpt_days,2,1)=='Y'?1:0);
$event->rpt_wed = (substr($rpt_days,3,1)=='Y'?1:0); $this->event->rpt_wed = (substr($rpt_days,3,1)=='Y'?1:0);
$event->rpt_thu = (substr($rpt_days,4,1)=='Y'?1:0); $this->event->rpt_thu = (substr($rpt_days,4,1)=='Y'?1:0);
$event->rpt_fri = (substr($rpt_days,5,1)=='Y'?1:0); $this->event->rpt_fri = (substr($rpt_days,5,1)=='Y'?1:0);
$event->rpt_sat = (substr($rpt_days,6,1)=='Y'?1:0); $this->event->rpt_sat = (substr($rpt_days,6,1)=='Y'?1:0);
//Legacy Support (New) //Legacy Support (New)
$event->recur_data = 0; $this->event->recur_data = 0;
$event->recur_data += (substr($rpt_days,0,1)=='Y'?M_SUNDAY:0); $this->event->recur_data += (substr($rpt_days,0,1)=='Y'?M_SUNDAY:0);
$event->recur_data += (substr($rpt_days,1,1)=='Y'?M_MONDAY:0); $this->event->recur_data += (substr($rpt_days,1,1)=='Y'?M_MONDAY:0);
$event->recur_data += (substr($rpt_days,2,1)=='Y'?M_TUESDAY:0); $this->event->recur_data += (substr($rpt_days,2,1)=='Y'?M_TUESDAY:0);
$event->recur_data += (substr($rpt_days,3,1)=='Y'?M_WEDNESDAY:0); $this->event->recur_data += (substr($rpt_days,3,1)=='Y'?M_WEDNESDAY:0);
$event->recur_data += (substr($rpt_days,4,1)=='Y'?M_THURSDAY:0); $this->event->recur_data += (substr($rpt_days,4,1)=='Y'?M_THURSDAY:0);
$event->recur_data += (substr($rpt_days,5,1)=='Y'?M_FRIDAY:0); $this->event->recur_data += (substr($rpt_days,5,1)=='Y'?M_FRIDAY:0);
$event->recur_data += (substr($rpt_days,6,1)=='Y'?M_SAYURDAY:0); $this->event->recur_data += (substr($rpt_days,6,1)=='Y'?M_SAYURDAY:0);
} }
//Legacy Support //Legacy Support
@ -348,19 +348,19 @@ class calendar_
{ {
while($this->stream->next_record()) while($this->stream->next_record())
{ {
$event->participants[] = $this->stream->f('cal_login'); $this->event->participants[] = $this->stream->f('cal_login');
$event->status[] = $this->stream->f('cal_status'); $this->event->status[] = $this->stream->f('cal_status');
} }
} }
} }
else else
{ {
$event = False; $this->event = False;
} }
$this->stream->unlock(); $this->stream->unlock();
return $event; return $this->event;
} }
function list_events($mcal_stream,$startYear,$startMonth,$startDay,$endYear='',$endMonth='',$endYear='') function list_events($mcal_stream,$startYear,$startMonth,$startDay,$endYear='',$endMonth='',$endYear='')
@ -402,7 +402,7 @@ class calendar_
$this->stream->lock(array('calendar_entry','calendar_entry_user','calendar_entry_repeats')); $this->stream->lock(array('calendar_entry','calendar_entry_user','calendar_entry_repeats'));
$this->stream->query('DELETE FROM calendar_entry_user WHERE cal_id='.$event_id,__LINE__,__FILE__); $this->stream->query('DELETE FROM calendar_entry_user WHERE cal_id='.$event_id,__LINE__,__FILE__);
$this->stream->query('DELETE FROM calendar_entry_repeats WHERE cal_id='.$event_id,__LINE__,__FILE__); $this->stream->query('DELETE FROM calendar_entry_repeats WHERE cal_id='.$event_id,__LINE__,__FILE__);
$this->stream->query('DELETE FROM calendar_entry WHERE cal_id='.$event_id[$i],__LINE__,__FILE__); $this->stream->query('DELETE FROM calendar_entry WHERE cal_id='.$event_id,__LINE__,__FILE__);
$this->stream->unlock(); $this->stream->unlock();
} }
@ -424,6 +424,44 @@ class calendar_
return True; return True;
} }
function event_set_category($stream,$category='')
{
$this->event->category = $category;
return True;
}
function event_set_title($stream,$title='')
{
$this->event->title = $title;
return True;
}
function event_set_description($stream,$description='')
{
$this->event->description = $description;
return True;
}
function event_set_start($stream,$year,$month,$day=0,$hour=0,$min=0,$sec=0)
{
$this->event->start->year = $year;
$this->event->start->month = $month;
$this->event->start->day = $day;
$this->event->start->hour = $hour;
$this->event->start->min = $min;
$this->event->start->sec = $sec;
}
function event_set_end($stream,$year,$month,$day=0,$hour=0,$min=0,$sec=0)
{
$this->event->end->year = $year;
$this->event->end->month = $month;
$this->event->end->day = $day;
$this->event->end->hour = $hour;
$this->event->end->min = $min;
$this->event->end->sec = $sec;
}
/***************** Local functions for SQL based Calendar *****************/ /***************** Local functions for SQL based Calendar *****************/
function get_event_ids($search_repeats=False,$extra='') function get_event_ids($search_repeats=False,$extra='')
@ -577,6 +615,7 @@ class calendar_
} }
$this->stream->unlock(); $this->stream->unlock();
return True;
} }
// End of ICal style support....... // End of ICal style support.......