PHP COM() access to Outlook Calendar

Friday, December 11 2009 @ 04:36 CST

Contributed by: justin carlson

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

Comments (0)


tehuber.com
http://www.tehuber.com/article.php?story=20091211163614550