task #9747: Can show content of external calendar (ical) into agenda
This commit is contained in:
parent
8e25cb1ae5
commit
1f4fd52d84
@ -81,7 +81,7 @@ class ical
|
||||
// read FILE text
|
||||
$this->file_text = $this->read_file($uri);
|
||||
|
||||
$this->file_text = split("[\n]", $this->file_text);
|
||||
$this->file_text = preg_split("[\n]", $this->file_text);
|
||||
|
||||
// is this text vcalendar standart text ? on line 1 is BEGIN:VCALENDAR
|
||||
if (!stristr($this->file_text[0],'BEGIN:VCALENDAR')) return 'error not VCALENDAR';
|
||||
@ -223,7 +223,7 @@ class ical
|
||||
$ical_date = str_replace('Z', '', $ical_date);
|
||||
|
||||
// TIME LIMITED EVENT
|
||||
ereg('([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{0,2})([0-9]{0,2})([0-9]{0,2})', $ical_date, $date);
|
||||
preg_match('/([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{0,2})([0-9]{0,2})([0-9]{0,2})/', $ical_date, $date);
|
||||
|
||||
// UNIX timestamps can't deal with pre 1970 dates
|
||||
if ($date[1] <= 1970)
|
||||
@ -244,15 +244,15 @@ class ical
|
||||
{
|
||||
$value = $this->ical_date_to_unix($value);
|
||||
|
||||
// zjisteni TZID
|
||||
// Analyse TZID
|
||||
$temp = explode(";",$key);
|
||||
|
||||
if (empty($temp[1])) // neni TZID
|
||||
if (empty($temp[1])) // not TZID
|
||||
{
|
||||
$data = str_replace('T', '', $data);
|
||||
$value = str_replace('T', '', $value);
|
||||
return array($key,$value);
|
||||
}
|
||||
// pridani $value a $tzid do pole
|
||||
// adding $value and $tzid
|
||||
$key = $temp[0];
|
||||
$temp = explode("=", $temp[1]);
|
||||
$return_value[$temp[0]] = $temp[1];
|
||||
|
||||
@ -484,6 +484,78 @@ if ($showbirthday)
|
||||
}
|
||||
}
|
||||
|
||||
//Exernal Calendars
|
||||
if ($conf->global->MAIN_FEATURES_LEVEL>=2)
|
||||
if ($conf->global->ENABLE_AGENDA_EXT==1 && $conf->global->AGENDA_EXT_NB>0)
|
||||
{
|
||||
require_once(DOL_DOCUMENT_ROOT."/comm/action/class/ical.class.php");
|
||||
$numcals= $conf->global->AGENDA_EXT_NB;
|
||||
$i=1;
|
||||
while ($i<=$numcals)
|
||||
{
|
||||
$paramkey='AGENDA_EXT_SRC'.$i;
|
||||
$url=$conf->global->$paramkey;
|
||||
$ical=new ical();
|
||||
$ical->parse($url);
|
||||
$icalevents= $ical->get_event_list();
|
||||
if(count($icalevents)>0)
|
||||
{
|
||||
foreach($icalevents as $icalevent)
|
||||
{
|
||||
// Create a new object action
|
||||
$event=new ActionComm($db);
|
||||
$event->id=$icalevent->UID;
|
||||
$event->datep=$icalevent->DTSTART;
|
||||
$event->datef=$icalevent->DTEND;
|
||||
$event->type_code="ICALEVENT";
|
||||
$event->libelle=$icalevent->SUMMARY;
|
||||
//$event->fulldayevent=$obj->fulldayevent;
|
||||
|
||||
$event->date_start_in_calendar=$event->datep;
|
||||
/*
|
||||
if ($event->datef != '' && $event->datef >= $event->datep) $event->date_end_in_calendar=$event->datef;
|
||||
else $event->date_end_in_calendar=$event->datep;
|
||||
|
||||
// Define ponctual property
|
||||
if ($event->date_start_in_calendar == $event->date_end_in_calendar)
|
||||
{
|
||||
$event->ponctuel=1;
|
||||
}
|
||||
|
||||
// Check values
|
||||
if ($event->date_end_in_calendar < $firstdaytoshow || $event->date_start_in_calendar > $lastdaytoshow)
|
||||
{
|
||||
// This record is out of visible range
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($event->date_start_in_calendar < $firstdaytoshow) $event->date_start_in_calendar=$firstdaytoshow;
|
||||
if ($event->date_end_in_calendar > $lastdaytoshow) $event->date_end_in_calendar=$lastdaytoshow;
|
||||
*/
|
||||
// Add an entry in actionarray for each day
|
||||
$daycursor=$event->date_start_in_calendar;
|
||||
$annee = date('Y',$daycursor);
|
||||
$mois = date('m',$daycursor);
|
||||
$jour = date('d',$daycursor);
|
||||
|
||||
// Loop on each day covered by action to prepare an index to show on calendar
|
||||
$loop=true; $j=0;
|
||||
$daykey=dol_mktime(0,0,0,$mois,$jour,$annee);
|
||||
do
|
||||
{
|
||||
$eventarray[$daykey][]=$event;
|
||||
$daykey+=60*60*24;
|
||||
if ($daykey > $event->date_end_in_calendar) $loop=false;
|
||||
}
|
||||
while ($loop);
|
||||
//}
|
||||
}
|
||||
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
$maxlength=16;
|
||||
$cachethirdparties=array();
|
||||
$cachecontacts=array();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user