From 5359e6fb986c32f4b910ec82d8dc41d9c68f2d96 Mon Sep 17 00:00:00 2001 From: Rob Ostensen Date: Tue, 31 Jan 2012 00:19:45 -0600 Subject: [PATCH] ischedule: make invites and replies work --- inc/caldav-POST.php | 2 +- inc/caldav-PUT-functions.php | 22 ++++++++++++++++++++++ inc/iSchedule-POST.php | 9 +++++---- 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/inc/caldav-POST.php b/inc/caldav-POST.php index feb96c2d..301a4297 100644 --- a/inc/caldav-POST.php +++ b/inc/caldav-POST.php @@ -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; diff --git a/inc/caldav-PUT-functions.php b/inc/caldav-PUT-functions.php index 99581e17..f9be2fe7 100644 --- a/inc/caldav-PUT-functions.php +++ b/inc/caldav-PUT-functions.php @@ -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; diff --git a/inc/iSchedule-POST.php b/inc/iSchedule-POST.php index bf70aefd..050fcf9b 100644 --- a/inc/iSchedule-POST.php +++ b/inc/iSchedule-POST.php @@ -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; }