From 4c83e9b6b49061cbd87ddb5e09976625e43c8394 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Tue, 28 Jul 2015 21:55:28 -0700 Subject: initial work on using sabre as a vcalendar parser --- include/event.php | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/event.php b/include/event.php index 784da0545..af828495b 100644 --- a/include/event.php +++ b/include/event.php @@ -1,4 +1,6 @@ VEVENT as $event) { + event_import_ical($event,$uid); + + } + } + + date_default_timezone_set($saved_timezone); + + logger('vobject: ' . print_r($ical,true)); + return true; + +// require_once('library/ical.php'); $ical = new ICal($f); if($ical) { $events = $ical->events(); @@ -400,6 +427,28 @@ function event_import_ical($ical, $uid) { $channel = $c[0]; $ev = array(); + + + + $dtstart = $event->DTSTART->getDateTime(); + if(($dtstart['timezone_type'] == 2) || (($dtstart['timezone_type'] == 3) && ($dtstart['timezone'] === 'UTC'))) { + $ev['adjust'] = 1; + } + else { + $ev['adjust'] = 0; + } + + $ev['start'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC', + $dtstart->format(\DateTime::W3C)); + + + +// logger('event: ' . print_r($event->DTSTART->getDateTime(),true)); + + + + + if($ical['CREATED']) $ev['created'] = datetime_convert('UTC','UTC',$ical['CREATED']); if($ical['LAST-MODIFIED']) -- cgit v1.2.3 From 00fa2e2fe889d1f65f858d4dcb93ede4fdaa8636 Mon Sep 17 00:00:00 2001 From: redmatrix Date: Wed, 29 Jul 2015 18:57:52 -0700 Subject: convert ics import to sabre/vobject --- include/event.php | 71 ++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 29 deletions(-) (limited to 'include') diff --git a/include/event.php b/include/event.php index af828495b..a1fae617d 100644 --- a/include/event.php +++ b/include/event.php @@ -395,7 +395,7 @@ require_once('vendor/autoload.php'); date_default_timezone_set($saved_timezone); - logger('vobject: ' . print_r($ical,true)); +// logger('vobject: ' . print_r($ical,true)); return true; // require_once('library/ical.php'); @@ -428,10 +428,16 @@ function event_import_ical($ical, $uid) { $ev = array(); + if(! isset($ical->DTSTART)) { + logger('no event start'); + return false; + } + $dtstart = $ical->DTSTART->getDateTime(); - $dtstart = $event->DTSTART->getDateTime(); - if(($dtstart['timezone_type'] == 2) || (($dtstart['timezone_type'] == 3) && ($dtstart['timezone'] === 'UTC'))) { +// logger('dtstart: ' . var_export($dtstart,true)); + + if(($dtstart->timezone_type == 2) || (($dtstart->timezone_type == 3) && ($dtstart->timezone === 'UTC'))) { $ev['adjust'] = 1; } else { @@ -442,49 +448,56 @@ function event_import_ical($ical, $uid) { $dtstart->format(\DateTime::W3C)); - -// logger('event: ' . print_r($event->DTSTART->getDateTime(),true)); + if(isset($ical->DTEND)) { + $dtend = $ical->DTEND->getDateTime(); + $ev['finish'] = datetime_convert((($ev['adjust']) ? 'UTC' : date_default_timezone_get()),'UTC', + $dtend->format(\DateTime::W3C)); + } + else + $ev['nofinish'] = 1; + if($ev['start'] === $ev['finish']) + $ev['nofinish'] = 1; + if(isset($ical->CREATED)) { + $created = $ical->CREATED->getDateTime(); + $ev['created'] = datetime_convert('UTC','UTC',$created->format(\DateTime::W3C)); + } + if(isset($ical->{'LAST-MODIFIED'})) { + $edited = $ical->{'LAST-MODIFIED'}->getDateTime(); + $ev['edited'] = datetime_convert('UTC','UTC',$edited->format(\DateTime::W3C)); + } - if($ical['CREATED']) - $ev['created'] = datetime_convert('UTC','UTC',$ical['CREATED']); - if($ical['LAST-MODIFIED']) - $ev['edited'] = datetime_convert('UTC','UTC',$ical['LAST-MODIFIED']); - if($ical['LOCATION']) - $ev['location'] = $ical['LOCATION']; - if($ical['DESCRIPTION']) - $ev['description'] = $ical['DESCRIPTION']; - if($ical['SUMMARY']) - $ev['summary'] = $ical['SUMMARY']; - if($ical['DTEND']) - $ev['finish'] = datetime_convert('UTC','UTC', $ical['DTEND']); - else - $ev['nofinish'] = 1; - $ev['start'] = datetime_convert('UTC','UTC',$ical['DTSTART']); - if(substr($ical['DTSTART'],-1) === 'Z') - $ev['adjust'] = 1; + if(isset($ical->LOCATION)) + $ev['location'] = (string) $ical->LOCATION; + if(isset($ical->DESCRIPTION)) + $ev['description'] = (string) $ical->DESCRIPTION; + if(isset($ical->SUMMARY)) + $ev['summary'] = (string) $ical->SUMMARY; - if($ical['UID']) { + if(isset($ical->UID)) { + $evuid = (string) $ical->UID; $r = q("SELECT * FROM event WHERE event_hash = '%s' AND uid = %d LIMIT 1", - dbesc($ical['UID']), - intval($arr['uid']) + dbesc($evuid), + intval($uid) ); if($r) - $ev['event_hash'] = $ical['UID']; + $ev['event_hash'] = $evuid; else - $ev['external_id'] = $ical['UID']; + $ev['external_id'] = $evuid; } - if($ical['SUMMARY'] && $ical['DTSTART']) { + if($ev['summary'] && $ev['start']) { $ev['event_xchan'] = $channel['channel_hash']; $ev['uid'] = $channel['channel_id']; $ev['account'] = $channel['channel_account_id']; $ev['private'] = 1; + $ev['allow_cid'] = '<' . $channel['channel_hash'] . '>'; + - logger('storing event: ' . print_r($ev,true), LOGGER_ALL); +// logger('storing event: ' . print_r($ev,true), LOGGER_ALL); $event = event_store_event($ev); if($event) { $item_id = event_store_item($ev,$event); -- cgit v1.2.3