Skip to content

A little class to synchronize vtiger events towards a kerio calendar

Notifications You must be signed in to change notification settings

preexo/vtiger-kerio-calendar-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vtiger kerio caldav exchange calendar synchronization

A little class to synchronize vtiger events towards a kerio calendar. We have a Kerio Mailserver which comes with a caldav server. We wanted to have our vtiger events in the kerio server, so I wrote a small adapter which synchronizes the vtiger events into the kerio calendar. Create/Update/Delete. We now have all our vtiger events in our Kerio calendar plus the original Kerio calendar events from before.

I put it all here in case someone else is interested.

It's not self explanatory, it's not plug and play and it needs to be highly adjusted and well tested before usage in production. But I put it up there, because I tried many different libraries, frameworks and whatsoever solutions and that one was the only one which worked without any problems... Have fun, let me know if anyone needs help with it.

Dependencies

awl

On debian install libawl-php to have access to these classes:

  • XMLDocument
  • CalendarInfo
  • CalDAVClient

Composer

  • Install composer
  • Install composer dependencies

MSACustomizations

MSACustomizations is a vtiger module, here is only the necessary part committed to the repository

Example Usage

As a workflow function on every update of an event

require_once 'caldav/caldavClient.php';
require_once 'modules/MSACustomizations/MSACustomizations.php';
$entity_id = vtws_getIdComponents($entity->getId());
$entity_id = $entity_id[1];
$eventRecord = Vtiger_Record_Model::getInstanceById($entity_id, "Events");
$eventData = $eventRecord->getData();
$userModel = Vtiger_Record_Model::getInstanceById($eventData['assigned_user_id'], "Users");
$userData = $userModel->getData();
$summary = $userModel->get('user_name').": {$eventData['subject']}";
$dateTimeStart = $eventData['date_start']." ".$eventData['time_start'];
$dateTimeEnd = $eventData['due_date']." ".$eventData['time_end'];
$dtStart = new \DateTime($dateTimeStart, new \DateTimeZone($userData['time_zone']));
$dtEnd = new \DateTime($dateTimeEnd, new \DateTimeZone($userData['time_zone']));
$uid = MSACustomizations::getCaldavUID($entity_id, $eventData['record_module']);
$msaClient = new MSACalendarConnector("caldavserverhostaddress", "username", "password", "Calendar Name", 'UTC');
$vCalendarObject = $msaClient->createVCalendarEventObject($uid, $summary, $dtStart->format("Y-m-d H:i:s"), $dtEnd->format("Y-m-d H:i:s"));
$existingEvent = $msaClient->getFirstEventByUID($uid);
if(isset($existingEvent['href'])){
	$msaClient->updateEventByUID($uid, $vCalendarObject);
} else {
	$msaClient->createEvent($vCalendarObject);
}

About

A little class to synchronize vtiger events towards a kerio calendar

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages