Re: Displaying an Outlook Calendar on a webpage using PHP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



That looks like some of my code.. or a derivative of my code.   For some reason, my PC at work here is having issues with PHP instantiating with COM so I can't test this, but the code you posted is conspicuously missing all the braces { }.  I'm guessing that's not your issue though... or else you'd be getting some kind of error maybe.

Anyway, here's a re-braced version of the code.   It should produce something when run through a web browser, but you might View Source and see what shows up there.

This does require Outlook to be installed on the PC that PHP is running on, as that's how COM works.   I never messed around with remote COM calls, but I'm sure there's some way to do that.

If someone wants to try this code and see if there are other issues besides the missing braces.  I don't see anything obviously wrong with it (besides maybe some sloppy programming on my part :).  I'll see about checking it when I get home tonight if I have time.

<?php
$comobjOutlook = new COM("outlook.application") or die("Outlook not loaded");

//$comobjOutlook -> Activate;

# This is your mailbox name just like it appears in your Folders view.
# It might be 'Inbox' or something else.
$targetmailboxname = "Mailbox - Baiocchi, Justin (CSIRO IT, Armidale)";


# This is the folder you're looking for. In this case, I'm looking for calendar
# items, but you can look for any folder. You need to add another loop to look
# for subfolders. Although there's probably a better way, that's how I did it when 
# I needed to get to Personal Folders/Inbox/Subfoldername
$targetfoldername = "Calendar";

$objNamespace = $comobjOutlook->GetNameSpace("MAPI");
$objFolders = $objNamespace->Folders();
$mailboxcount = $objFolders -> Count();


$foundmailbox = FALSE;
for ($i=1; $i<=$mailboxcount; $i++) {
  $folderitem = $objFolders ->Item($i);
  if ($folderitem -> Name == $targetmailboxname) {
    $objMailbox = $folderitem;
    $foundmailbox = TRUE;

    $foundcal = FALSE;
    if ($foundmailbox) {
      $objFolders = $objMailbox->Folders();
      $foldercount = $objFolders -> Count();

      for ($i=1; $i<=$foldercount; $i++) {
        $folderitem = $objFolders -> Item($i);
        if ($folderitem -> Name == $targetfoldername) {
          $objCalendar = $folderitem;
          $foundcal = TRUE;
        }
      }
    }


    if ($foundcal) {
      $objItems = $objCalendar->Items();
      $itemcount = $objItems->Count();

      for ($i=1; $i<=$itemcount; $i++) {
        $apptitem = $objItems -> Item($i);
        $apptstart = $apptitem -> Start();
        $apptend = $apptitem -> End();
        $apptallday = $apptitem -> AllDayEvent();
        $apptrecur = $apptitem -> IsRecurring();
        $apptsubject = $apptitem -> Subject();
        $apptlocation = $apptitem -> Location();

        $secondsadj = $apptstart - 14400;
        $startadj = date("m/d/Y H:i:s", mktime(0,0,$secondsadj,1,1,1970));

        $secondsadj = $apptend - 14400;
        $endadj = date("m/d/Y H:i:s", mktime(0,0,$secondsadj,1,1,1970));

        if($apptallday)  $allday = "All Day";  else  $allday = "";
        if($apptrecur)  $recurring = "Recurring";  else  $recurring = "";

        echo "$apptsubject @ $apptlocation\r\nFrom: $startadj To: $endadj\r\n";

        if ($allday <> "" OR $recurring <> "") echo "$allday $recurring\r\n";
        echo "\r\n\r\n";
      }
    } else {
      die ("Did not find calendar folder");
    }
  } else {
    die("Did not find target mailbox: $targetmailboxname");
  }
}
?>



= = = Original message = = =

Hello all,
 
I am trying to publish an Outlook Calendar on a web page using PHP and
COM. I have managed to track down on the net some examples of how it
could be done. The most promising is the code below. However, all that
happens is that outlook.exe is started on the server, but nothing is
displayed on the web page and it just times-out.
 
I am running PHP 4.0.18 on Windows 2003 server and I have Outlook 2002
installed on the server.
Does anybody know why it doesn't work?
 
Thanks 
Justin


___________________________________________________________
Sent by ePrompter, the premier email notification software.
Free download at http://www.ePrompter.com.

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux