From 90d440d610040e60e11390e5b6bc272a0f0dd4b2 Mon Sep 17 00:00:00 2001 From: Jason Oster Date: Wed, 27 May 2009 16:06:58 +0000 Subject: Handle attendee/organizer parsing better --- functions/ical_parser.php | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'functions') diff --git a/functions/ical_parser.php b/functions/ical_parser.php index 0aa6f50..9baa247 100644 --- a/functions/ical_parser.php +++ b/functions/ical_parser.php @@ -425,15 +425,28 @@ foreach ($cal_filelist as $cal_key=>$filename) { } break; case 'ATTENDEE': - $attendee[] = array ('name' => ereg_replace(".*;CN=([^;]*).*", "\\1", $field), - 'email' => str_replace ("mailto:", "", $data), - 'RSVP' => ereg_replace(".*;RSVP=([^;]*).*", "\\1", $field), - 'PARTSTAT' => ereg_replace(".*;PARTSTAT=([^;]*).*", "\\1", $field), - 'ROLE' => ereg_replace(".*;ROLE=([^;]*).*", "\\1", $field)); + $name = preg_match("/CN=([^;]*)/i", $field, $matches1); + $email = str_replace("mailto:", "", $data); + $rsvp = preg_match("/RSVP=([^;]*)/i", $field, $matches2); + $partstat = preg_match("/PARTSTAT=([^;]*)/i", $field, $matches3); + $role = preg_match("/ROLE=([^;]*)/i", $field, $matches4); + + $name = ($name ? $matches1[1] : $email); + $rsvp = ($rsvp ? $matches2[1] : ''); + $partstat = ($partstat ? $matches3[1] : ''); + $role = ($role ? $matches4[1] : ''); + + $attendee[] = array ('name' => stripslashes($name), + 'email' => stripslashes($email), + 'RSVP' => stripslashes($rsvp), + 'PARTSTAT' => stripslashes($partstat), + 'ROLE' => stripslashes($role) + ); break; case 'ORGANIZER': - $field = ereg_replace(".*;CN=([^;]*).*", "\\1", $field); - $data = str_replace ("mailto:", "", $data); + $data = str_replace ("mailto:", "", $data); + $field = preg_match("/CN=([^;]*)/i", $field, $matches); + $field = ($field ? $matches[1] : $data); $organizer[] = array ('name' => stripslashes($field), 'email' => stripslashes($data)); break; case 'LOCATION': -- cgit v1.2.3