mirror of
https://gitlab.com/davical-project/davical.git
synced 2026-08-27 18:06:06 +00:00
ischedule freebusy should work now
This commit is contained in:
parent
86990f4538
commit
70fb506ed1
@ -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');
|
||||
|
||||
@ -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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user