PHP COM() access to Outlook Calendar

by justin carlson on 12/11/2009
PHPIn this article you will find sample code for accessing Microsoft Outlook Calendar events using PHP and COM(). This sample includes recurring events and was tested on Windows XP with Outlook 2003.


<?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!
?>

Trackback

Trackback URL for this entry: http://www.tehuber.com/trackback.php?id=20091211163614550

No trackback comments for this entry.
PHP COM() access to Outlook Calendar | 0 comments | Create New Account
The following comments are owned by whomever posted them. This site is not responsible for what they say.