RE: Displaying an Outlook Calendar on a webpage using PHP

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

 



Still no luck I am afraid. Same thing happens - it kicks off an instance
of Outlook.exe on the server, but the page never loads, it just stays
blank with a never-ending progress bar.

I thought it could be security related but have shared out my Calendar
with default having reviewer access.

I am using an Exchange server but don't want to follow the route of
sharing Calendars and accessing them in Outlook. 

Is the problem with the script that it has to access an Exchange server
to read the Calendar, even while Outlook is installed on the server and
configured with the same profile?

Thanks
Justin

-----Original Message-----
From: tg-php@xxxxxxxxxxxxxxxxxxxxxx
[mailto:tg-php@xxxxxxxxxxxxxxxxxxxxxx] 
Sent: Tuesday, 7 June 2005 1:01 AM
To: php-general@xxxxxxxxxxxxx
Cc: Baiocchi, Justin (CSIRO IT, Armidale)
Subject: Re:  Displaying an Outlook Calendar on a webpage using PHP


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