ischedule freebusy should work now

This commit is contained in:
Rob Ostensen 2012-01-30 20:29:48 -06:00
parent 86990f4538
commit 70fb506ed1
2 changed files with 23 additions and 26 deletions

View File

@ -80,19 +80,22 @@ function handle_freebusy_request( $ic ) {
if ( $qry->rows() == 0 ) {
$remote = new iSchedule ();
$answer = $remote->sendRequest ( $attendee->Value(), 'VFREEBUSY/REQUEST', $ical->Render() );
if ( $answer === false ) {
$reply->CalDAVElement($response, "request-status", "3.7;Invalid Calendar User" );
$reply->CalDAVElement($response, "calendar-data" );
foreach ( $answer as $a )
{
if ( $a === false ) {
$reply->CalDAVElement($response, "request-status", "3.7;Invalid Calendar User" );
$reply->CalDAVElement($response, "calendar-data" );
}
elseif ( substr( $a, 0, 1 ) >= 1 ) {
$reply->CalDAVElement($response, "request-status", $a );
$reply->CalDAVElement($response, "calendar-data" );
}
else {
$reply->CalDAVElement($response, "request-status", "2.0;Success" );
$reply->CalDAVElement($response, "calendar-data", $a );
}
$responses[] = $response;
}
elseif ( substr( $answer, 0, 1 ) >= 1 ) {
$reply->CalDAVElement($response, "request-status", $answer );
$reply->CalDAVElement($response, "calendar-data" );
}
else {
$reply->CalDAVElement($response, "request-status", "2.0;Success" );
$reply->CalDAVElement($response, "calendar-data", $answer );
}
$responses[] = $response;
continue;
}
if ( ! $attendee_usr = $qry->Fetch() ) $request->DoResponse( 501, 'Database error');

View File

@ -428,7 +428,6 @@ class iSchedule
$info = curl_getinfo ( $curl );
//error_log ( print_r ( $request_headers , true ) . print_r ( $data , true ) . ' -- ' );
curl_close ( $curl );
error_log($xmlresponse."\nXXX\n" . print_r ( $info , true ));
$xml_parser = xml_parser_create_ns('UTF-8');
$xml_tags = array();
xml_parser_set_option ( $xml_parser, XML_OPTION_SKIP_WHITE, 1 );
@ -446,33 +445,28 @@ class iSchedule
dbg_error_log( 'ERROR', 'iSchedule RESPONSE body is not valid XML data!' );
return false;
}
$resp = $xmtree->GetPath ( 'response' );
error_log ( print_r ( $xmltree, true ) );
$resp = $xmltree->GetPath ( '/*/urn:ietf:params:xml:ns:ischedule:response' );
$result = array();
foreach ( $resp as $r )
{
error_log ( print_r ( $r, true ) );
$recipient = $r->GetElements ( 'urn:ietf:params:xml:ns:ischedule:recipient' );
$status = $r->GetElements ( 'urn:ietf:params:xml:ns:ischedule:request-status' );
$calendardata = $r->GetElements ( 'urn:ietf:params:xml:ns:ischedule:calendar-data' );
if ( count ( $recipient ) > 1 )
if ( count ( $recipient ) < 1 )
continue; // this should be an error
if ( count ( $calendardata ) > 1 )
if ( count ( $calendardata ) > 0 )
{
//$result [ $recipient[0]->GetContent() ] = $calendardata[0]->GetContent();
$result [ $recipient[0]->GetContent() ] = $calendardata[0]->GetContent();
}
else
{
//$result [ $recipient[0]->GetContent() ] = $status[0]->GetContent();
$result [ $recipient[0]->GetContent() ] = $status[0]->GetContent();
}
}
if ( count ( $result ) > 1 )
{
//dbg_error_log ( 'ischedule', 'no recipient data found for ' . $headers['Recipient'] );
if ( count ( $result ) < 1 )
return false;
}
//dbg_error_log ( 'ischedule', 'recipient data found for ' . $headers['Recipient'] . ' ' . print_r ( $result, true ) );
return $result;
else
return $result;
}
else
return false;