From 9b3fb58b9f85cf2ce9b4e5218d0625a0b8d6324d Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 24 Mar 2010 12:15:53 +1300 Subject: [PATCH] Handle duplicate attendee lines in one VEVENT. --- inc/caldav-PUT-functions.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/inc/caldav-PUT-functions.php b/inc/caldav-PUT-functions.php index baea504c..553d7fbe 100644 --- a/inc/caldav-PUT-functions.php +++ b/inc/caldav-PUT-functions.php @@ -676,8 +676,16 @@ function write_attendees( $dav_id, $ical ) { $qry->SetSql('INSERT INTO calendar_attendee ( dav_id, status, partstat, cn, attendee, role, rsvp, property ) VALUES( '.$dav_id.', :status, :partstat, :cn, :attendee, :role, :rsvp, :property )' ); $qry->Prepare(); + $processed = array(); foreach( $attendees AS $v ) { - $qry->Bind(':attendee', $v->Value() ); + $attendee = $v->Value(); + if ( $processed[$attendee] ) { + dbg_error_log( 'LOG', 'Duplicate attendee "%s" in resource "%d"', $attendee, $dav_id ); + dbg_error_log( 'LOG', 'Original: "%s"', $processed[$attendee] ); + dbg_error_log( 'LOG', 'Duplicate: "%s"', $v->Render() ); + continue; /** @TODO: work out why we get duplicate ATTENDEE on one VEVENT */ + } + $qry->Bind(':attendee', $attendee ); $qry->Bind(':status', $v->GetParameterValue('STATUS') ); $qry->Bind(':partstat', $v->GetParameterValue('PARTSTAT') ); $qry->Bind(':cn', $v->GetParameterValue('CN') ); @@ -685,6 +693,7 @@ function write_attendees( $dav_id, $ical ) { $qry->Bind(':rsvp', $v->GetParameterValue('RSVP') ); $qry->Bind(':property', $v->Render() ); $qry->Exec('PUT',__LINE__,__FILE__); + $processed[$attendee] = $v->Render(); } }