ischedule: make invites and replies work

This commit is contained in:
Rob Ostensen 2012-01-31 00:19:45 -06:00
parent 86cfed0dd0
commit 5359e6fb98
3 changed files with 28 additions and 5 deletions

View File

@ -80,7 +80,7 @@ function handle_freebusy_request( $ic ) {
if ( $qry->rows() == 0 ) {
$remote = new iSchedule ();
$answer = $remote->sendRequest ( $attendee->Value(), 'VFREEBUSY/REQUEST', $ical->Render() );
if ( $a === false ) {
if ( $answer === false ) {
$reply->CalDAVElement($response, "request-status", "3.7;Invalid Calendar User" );
$reply->CalDAVElement($response, "calendar-data" );
continue;

View File

@ -19,6 +19,7 @@ require_once('AwlCache.php');
require_once('vComponent.php');
require_once('vCalendar.php');
require_once('WritableCollection.php');
include_once('iSchedule.php');
$bad_events = null;
@ -532,6 +533,27 @@ function do_scheduling_requests( vCalendar $resource, $create, $old_data = null
}
}
}
else {
$remote = new iSchedule ();
$answer = $remote->sendRequest ( $email, 'VEVENT/REQUEST', $schedule_request->Render() );
if ( $answer === false ) {
$response = "3.7;Invalid Calendar User" ;
}
else {
foreach ( $answer as $a ) // should only be one element in array
{
if ( $a === false ) {
$response = "3.7;Invalid Calendar User" ;
}
elseif ( substr( $a, 0, 1 ) >= 1 ) {
$response = $a ;
}
else {
$response = "2.0;Success" ;
}
}
}
}
dbg_error_log( 'PUT', 'Status for attendee <%s> set to "%s"', $attendee->Value(), $response );
$attendee->SetParameterValue( 'SCHEDULE-STATUS', $response );
$scheduling_actions = true;

View File

@ -138,6 +138,7 @@ function ischedule_freebusy_request( $ic, $attendees, $attendees_fail) {
$vcal = new vCalendar( array('METHOD' => 'REPLY') );
$vcal->AddComponent( $fb );
$vcal->AddComponent( $fb );
$response = $reply->NewXMLElement( "response", false, false, 'urn:ietf:params:xml:ns:ischedule' );
$response->NewElement( "recipient", 'mailto:'.$attendee->email, false, 'urn:ietf:params:xml:ns:ischedule' );
@ -159,7 +160,7 @@ function ischedule_freebusy_request( $ic, $attendees, $attendees_fail) {
function ischedule_request( $ic, $attendees, $attendees_fail ) {
global $c, $session, $request;
$reply = new XMLDocument( array("DAV:" => "", "urn:ietf:params:xml:ns:caldav" => "C", "urn:ietf:params:xml:ns:ischedule" => "I" ) );
$reply = new XMLDocument( array( "urn:ietf:params:xml:ns:ischedule" => "I" ) );
$responses = array();
$ical = $ic->GetComponents('VEVENT');
$ical = $ical[0];
@ -186,15 +187,15 @@ function ischedule_request( $ic, $attendees, $attendees_fail ) {
}
}
}
dbg_error_log( 'PUT', 'Status for attendee <%s> set to "%s"', $attendee->email, $response );
$XMLresponse->NewElement("recipient", $reply->href('mailto:'.$attendee->email), false, 'urn:ietf:params:xml:ns:ischedule' );
dbg_error_log( 'ischedule', 'Status for attendee <%s> set to "%s"', $attendee->email, $response );
$XMLresponse->NewElement("recipient", 'mailto:'.$attendee->email, false, 'urn:ietf:params:xml:ns:ischedule' );
$XMLresponse->NewElement("request-status", $response, false, 'urn:ietf:params:xml:ns:ischedule' );
$responses[] = $XMLresponse;
}
foreach ( $attendees_fail AS $k => $attendee ) {
$XMLresponse = $reply->NewXMLElement("response", false, false, 'urn:ietf:params:xml:ns:ischedule');
$XMLresponse->NewElement("recipient", $reply->href('mailto:'.$attendee->email), false, 'urn:ietf:params:xml:ns:ischedule' );
$XMLresponse->NewElement("recipient", 'mailto:'.$attendee->email, false, 'urn:ietf:params:xml:ns:ischedule' );
$XMLresponse->NewElement("request-status", '5.3;cannot schedule this user, unknown or access denied', false, 'urn:ietf:params:xml:ns:ischedule' );
$responses[] = $XMLresponse;
}