Reputation: 2909
Good day,
I am working or basically coding with my own calendar application and I want to add my outlook calendar or sync
the events from my outlook to my own calendar.
Is this possible ? if YES
Is there any good PHP
plugins that I can use to do this kind of thing.
if NO
Can you explain why and can I know some alternatives or better solution to solve my problem. ?
Thank you.
Upvotes: 0
Views: 832
Reputation: 1974
Are you familiar with PHP COM Objects? Something like below would be ideal:
<?php
/**
* This example uses COM() to Access Appointments
* Requires Windows, Outlook
*
* @author justin DOT carlson AT gmail DOT com
* @license none/free - sample code
**/
// define appointments array
$appointments = array();
// folder types (calendar, etc)
define('olFolderDeleted', 3);
define('olFolderOutbox', 4);
define('olFolderSent', 5);
define('olFolderInBox', 6);
define('olFolderCalendar', 9);
define('olFolderContacts', 10);
define('olFolderJournal', 11);
define('olFolderNotes', 12);
define('olFolderTasks', 13);
define('olFolderDrafts', 16);
// start instance
$outlook = new COM("Outlook.Application");
$namespace = $outlook->getNameSpace("MAPI");
$namespace->Logon();
// get calendar folder
$calendar = $namespace->GetDefaultFolder(olFolderCalendar);
// gather, sort, and configure entries
$entries = $calendar->Items;
$entries->Sort("[Start]");
$entries->IncludeRecurrences = True;
// search filter, change these YYYY/MM/DD values for your date range
$search = '[Start] >= "YYYY/MM/DD 12:00 am" AND [Start]<= "YYYY/MM/DD 11:59 pm"';
// find entries
$schedule = $entries->Find($search);
while ( ! is_null($schedule) ) {
$appointment = array();
$appointment['allday'] = $schedule->AllDayEvent;
$appointment['subject'] = $schedule->Subject;
$appointment['hours'] = ($schedule->Duration / 60);
$appointment['location'] = $schedule->Location;
$appointment['subject'] = $schedule->Subject;
$appointment['body'] = $schedule->Body;
$appointment['categories'] = $schedule->Categories;
$appointment['start'] = date('m/d/Y h:i:s a', variant_date_to_timestamp($schedule->Start));
$appointment['end'] = date('m/d/Y h:i:s a', variant_date_to_timestamp($schedule->End));
$appointment['stamp'] = variant_date_to_timestamp($schedule->Start);
$appointments[] = $appointment;
$schedule = $entries->FindNext();
}
// $appointments now contains your entries, enjoy!
?>
Upvotes: 1