forked from extern/egroupware
And with this, imporing and exporting of recurring events should sort of work
again. I've also implimented more of rfc2445. I will continue to beat these classes into shape as I add more ical stuff and document what I have reverse engineered. Once I am satisfied that this is stable and production worthy I will probably backport this to the 1.0 branch. My casual testing has shown that this for the most part works as expected. I also plan on developing test harnesses for ical import/export.
This commit is contained in:
parent
d9553d5969
commit
04e778c065
@ -294,6 +294,9 @@
|
|||||||
}
|
}
|
||||||
$this->rpt_type = Array(
|
$this->rpt_type = Array(
|
||||||
MCAL_RECUR_NONE => 'None',
|
MCAL_RECUR_NONE => 'None',
|
||||||
|
MCAL_RECUR_SECONDLY => 'Secondly',
|
||||||
|
MCAL_RECUR_MINUTELY => 'Minutely',
|
||||||
|
MCAL_RECUR_HOURLY => 'Hourly',
|
||||||
MCAL_RECUR_DAILY => 'Daily',
|
MCAL_RECUR_DAILY => 'Daily',
|
||||||
MCAL_RECUR_WEEKLY => 'Weekly',
|
MCAL_RECUR_WEEKLY => 'Weekly',
|
||||||
MCAL_RECUR_MONTHLY_WDAY => 'Monthly (by day)',
|
MCAL_RECUR_MONTHLY_WDAY => 'Monthly (by day)',
|
||||||
@ -873,6 +876,15 @@
|
|||||||
case MCAL_RECUR_NONE:
|
case MCAL_RECUR_NONE:
|
||||||
$this->so->set_recur_none();
|
$this->so->set_recur_none();
|
||||||
break;
|
break;
|
||||||
|
case MCAL_RECUR_SECONDLY:
|
||||||
|
$this->so->set_recur_secondly((int)$l_recur_enddate['year'],(int)$l_recur_enddate['month'],(int)$l_recur_enddate['mday'],(int)$l_cal['recur_interval']);
|
||||||
|
break;
|
||||||
|
case MCAL_RECUR_MINUTELY:
|
||||||
|
$this->so->set_recur_minutely((int)$l_recur_enddate['year'],(int)$l_recur_enddate['month'],(int)$l_recur_enddate['mday'],(int)$l_cal['recur_interval']);
|
||||||
|
break;
|
||||||
|
case MCAL_RECUR_HOURLY:
|
||||||
|
$this->so->set_recur_hourly((int)$l_recur_enddate['year'],(int)$l_recur_enddate['month'],(int)$l_recur_enddate['mday'],(int)$l_cal['recur_interval']);
|
||||||
|
break;
|
||||||
case MCAL_RECUR_DAILY:
|
case MCAL_RECUR_DAILY:
|
||||||
$this->so->set_recur_daily((int)$l_recur_enddate['year'],(int)$l_recur_enddate['month'],(int)$l_recur_enddate['mday'],(int)$l_cal['recur_interval']);
|
$this->so->set_recur_daily((int)$l_recur_enddate['year'],(int)$l_recur_enddate['month'],(int)$l_recur_enddate['mday'],(int)$l_cal['recur_interval']);
|
||||||
break;
|
break;
|
||||||
@ -1913,7 +1925,7 @@
|
|||||||
$freq = $rep_events['recur_interval'];
|
$freq = $rep_events['recur_interval'];
|
||||||
$type = $rep_events['recur_type'];
|
$type = $rep_events['recur_type'];
|
||||||
switch($type)
|
switch($type)
|
||||||
{
|
{ // FIXME: need to add secondly, minutely, and hourly
|
||||||
case MCAL_RECUR_DAILY:
|
case MCAL_RECUR_DAILY:
|
||||||
if($this->debug)
|
if($this->debug)
|
||||||
{
|
{
|
||||||
|
@ -2572,7 +2572,7 @@
|
|||||||
list($_f_['day_raw'], $_f_['time_raw']) = split('T', substr($value, 1, strlen($value)-1));
|
list($_f_['day_raw'], $_f_['time_raw']) = split('T', substr($value, 1, strlen($value)-1));
|
||||||
|
|
||||||
/* Datecode */
|
/* Datecode */
|
||||||
if(isset($_f_['day_raw']) OR $_f_['day_raw'])
|
if(isset($_f_['day_raw']) || $_f_['day_raw'])
|
||||||
{
|
{
|
||||||
/* Days */
|
/* Days */
|
||||||
if(strstr($_f_['day_raw'],'D'))
|
if(strstr($_f_['day_raw'],'D'))
|
||||||
@ -2588,7 +2588,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Timecode */
|
/* Timecode */
|
||||||
if(isset($_f_['time_raw']) OR $_f_['time_raw'])
|
if(isset($_f_['time_raw']) || $_f_['time_raw'])
|
||||||
{
|
{
|
||||||
/* Hours */
|
/* Hours */
|
||||||
if(strstr($_f_['time_raw'],'H'))
|
if(strstr($_f_['time_raw'],'H'))
|
||||||
@ -3249,23 +3249,42 @@
|
|||||||
{
|
{
|
||||||
$interval = (int)$ical['event'][$i]['rrule']['interval'];
|
$interval = (int)$ical['event'][$i]['rrule']['interval'];
|
||||||
}
|
}
|
||||||
// recur_type
|
|
||||||
|
/* recur_type */
|
||||||
switch($ical['event'][$i]['rrule']['freq'])
|
switch($ical['event'][$i]['rrule']['freq'])
|
||||||
{
|
{
|
||||||
|
case SECONDLY:
|
||||||
|
$so_event->set_recur_secondly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
|
break;
|
||||||
|
case MINUTELY:
|
||||||
|
$so_event->set_recur_minutely($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
|
break;
|
||||||
|
case HOURLY:
|
||||||
|
$so_event->set_recur_hourly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
|
break;
|
||||||
case DAILY:
|
case DAILY:
|
||||||
$recur_type = MCAL_RECUR_DAILY;
|
$so_event->set_recur_daily($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
break;
|
break;
|
||||||
case WEEKLY:
|
case WEEKLY:
|
||||||
$so_event->set_recur_weekly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval,$recur_data);
|
$so_event->set_recur_weekly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval,$recur_data);
|
||||||
break;
|
break;
|
||||||
case MONTHLY:
|
case MONTHLY:
|
||||||
// Still need to determine if this is by day or by week for the month..
|
$so_event->set_recur_monthly_mday($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
// $recur_type = MCAL_RECUR_M??????;
|
|
||||||
break;
|
break;
|
||||||
case YEARLY:
|
case YEARLY:
|
||||||
$so_event->set_recur_yearly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
$so_event->set_recur_yearly($recur_enddate['year'],$recur_enddate['month'],$recur_enddate['mday'],$interval);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(isset($ical['event'][$i]['rrule']['until']))
|
||||||
|
{
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['year'],'year');
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['month'],'month');
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['mday'],'mday');
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['hour'],'hour');
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['minute'],'min');
|
||||||
|
$so_event->add_attribute('recur_enddate',$ical['event'][$i]['rrule']['until']['second'],'sec');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3449,6 +3468,15 @@
|
|||||||
$str = '';
|
$str = '';
|
||||||
switch($event['recur_type'])
|
switch($event['recur_type'])
|
||||||
{
|
{
|
||||||
|
case MCAL_RECUR_SECONDLY:
|
||||||
|
$str .= 'FREQ=SECONDLY';
|
||||||
|
break;
|
||||||
|
case MCAL_RECUR_MINUTELY:
|
||||||
|
$str .= 'FREQ=MINUTELY';
|
||||||
|
break;
|
||||||
|
case MCAL_RECUR_HOURLY:
|
||||||
|
$str .= 'FREQ=HOURLY';
|
||||||
|
break;
|
||||||
case MCAL_RECUR_DAILY:
|
case MCAL_RECUR_DAILY:
|
||||||
$str .= 'FREQ=DAILY';
|
$str .= 'FREQ=DAILY';
|
||||||
break;
|
break;
|
||||||
|
@ -277,6 +277,27 @@
|
|||||||
return mcal_event_set_recur_none($this->stream);
|
return mcal_event_set_recur_none($this->stream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_recur_secondly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
calendar__::set_recur_secondly($year,$month,$day,$interval);
|
||||||
|
//return mcal_event_set_recur_secondly($this->stream,$year,$month,$day,$interval);
|
||||||
|
return 0; // stub - mcal_event_set_recur_secondly() does not exist
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_minutely($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
calendar__::set_recur_minutely($year,$month,$day,$interval);
|
||||||
|
//return mcal_event_set_recur_minutely($this->stream,$year,$month,$day,$interval);
|
||||||
|
return 0; // stub - mcal_event_set_recur_minutely() does not exist
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_hourly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
calendar__::set_recur_hourly($year,$month,$day,$interval);
|
||||||
|
//return mcal_event_set_recur_hourly($this->stream,$year,$month,$day,$interval);
|
||||||
|
return 0; // stub - mcal_event_set_recur_hourly() does not exist
|
||||||
|
}
|
||||||
|
|
||||||
function set_recur_daily($year,$month,$day,$interval)
|
function set_recur_daily($year,$month,$day,$interval)
|
||||||
{
|
{
|
||||||
calendar__::set_recur_daily($year,$month,$day,$interval);
|
calendar__::set_recur_daily($year,$month,$day,$interval);
|
||||||
|
@ -417,6 +417,21 @@
|
|||||||
$this->cal->set_recur_none();
|
$this->cal->set_recur_none();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_recur_secondly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->cal->set_recur_secondly($year,$month,$day,$interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_minutely($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->cal->set_recur_minutely($year,$month,$day,$interval);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_hourly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->cal->set_recur_hourly($year,$month,$day,$interval);
|
||||||
|
}
|
||||||
|
|
||||||
function set_recur_daily($year,$month,$day,$interval)
|
function set_recur_daily($year,$month,$day,$interval)
|
||||||
{
|
{
|
||||||
$this->cal->set_recur_daily($year,$month,$day,$interval);
|
$this->cal->set_recur_daily($year,$month,$day,$interval);
|
||||||
|
@ -32,6 +32,9 @@
|
|||||||
define('MCAL_RECUR_MONTHLY_MDAY',3);
|
define('MCAL_RECUR_MONTHLY_MDAY',3);
|
||||||
define('MCAL_RECUR_MONTHLY_WDAY',4);
|
define('MCAL_RECUR_MONTHLY_WDAY',4);
|
||||||
define('MCAL_RECUR_YEARLY',5);
|
define('MCAL_RECUR_YEARLY',5);
|
||||||
|
define('MCAL_RECUR_SECONDLY',6);
|
||||||
|
define('MCAL_RECUR_MINUTELY',7);
|
||||||
|
define('MCAL_RECUR_HOURLY',8);
|
||||||
|
|
||||||
define('MCAL_M_SUNDAY',1);
|
define('MCAL_M_SUNDAY',1);
|
||||||
define('MCAL_M_MONDAY',2);
|
define('MCAL_M_MONDAY',2);
|
||||||
@ -147,6 +150,24 @@
|
|||||||
$this->add_attribute('recur_type',MCAL_RECUR_NONE);
|
$this->add_attribute('recur_type',MCAL_RECUR_NONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function set_recur_secondly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->set_common_recur((int)$year,(int)$month,(int)$day,$interval);
|
||||||
|
$this->add_attribute('recur_type',MCAL_RECUR_SECONDLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_minutely($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->set_common_recur((int)$year,(int)$month,(int)$day,$interval);
|
||||||
|
$this->add_attribute('recur_type',MCAL_RECUR_MINUTELY);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_recur_hourly($year,$month,$day,$interval)
|
||||||
|
{
|
||||||
|
$this->set_common_recur((int)$year,(int)$month,(int)$day,$interval);
|
||||||
|
$this->add_attribute('recur_type',MCAL_RECUR_HOURLY);
|
||||||
|
}
|
||||||
|
|
||||||
function set_recur_daily($year,$month,$day,$interval)
|
function set_recur_daily($year,$month,$day,$interval)
|
||||||
{
|
{
|
||||||
$this->set_common_recur((int)$year,(int)$month,(int)$day,$interval);
|
$this->set_common_recur((int)$year,(int)$month,(int)$day,$interval);
|
||||||
|
Loading…
Reference in New Issue
Block a user