protected function _addEventAttendee(Sabre_VObject_Component $_vevent, Calendar_Model_Event $_event) { if (version_compare($this->_version, '1.0b2', '>')) { parent::_addEventAttendee($_vevent, $_event); } else { // special handling for Lightning <= 1.0b2 // attendees get screwed up, if the CN contains commas Calendar_Model_Attender::resolveAttendee($_event->attendee, FALSE, $_event); foreach ($_event->attendee as $eventAttendee) { $attendeeEmail = $eventAttendee->getEmail(); if ($attendeeEmail) { $attendee = new Sabre_VObject_Property('ATTENDEE', (strpos($attendeeEmail, '@') !== false ? 'mailto:' : 'urn:uuid:') . $attendeeEmail); $attendee->add('CN', str_replace(',', null, $eventAttendee->getName())); $attendee->add('CUTYPE', Calendar_Convert_Event_VCalendar_Abstract::$cutypeMap[$eventAttendee->user_type]); $attendee->add('PARTSTAT', $eventAttendee->status); $attendee->add('ROLE', "{$eventAttendee->role}-PARTICIPANT"); $attendee->add('RSVP', 'FALSE'); if (strpos($attendeeEmail, '@') !== false) { $attendee->add('EMAIL', $attendeeEmail); } $_vevent->add($attendee); } } } }
/** * add event attendee to VEVENT object * * @param \Sabre\VObject\Component\VEvent $vevent * @param Calendar_Model_Event $event */ protected function _addEventAttendee(\Sabre\VObject\Component\VEvent $vevent, Calendar_Model_Event $event) { parent::_addEventAttendee($vevent, $event); if (empty($event->attendee)) { return; } // add organizer as CHAIR Attendee if he's no organizer, otherwise yosemite would add an attendee // when editing the event again. // NOTE: when the organizer edits the event he becomes attendee anyway, see comments in MSEventFacade::update if (version_compare($this->_version, '10.10', '>=')) { if (!empty($event->organizer)) { $organizerContact = $event->resolveOrganizer(); if ($organizerContact instanceof Addressbook_Model_Contact) { $organizerAttendee = Calendar_Model_Attender::getAttendee($event->attendee, new Calendar_Model_Attender(array('user_id' => $organizerContact->getId(), 'user_type' => Calendar_Model_Attender::USERTYPE_USER))); if (!$organizerAttendee) { $parameters = array('CN' => $organizerContact->n_fileas, 'CUTYPE' => 'INDIVIDUAL', 'PARTSTAT' => 'ACCEPTED', 'ROLE' => 'CHAIR'); $organizerEmail = $organizerContact->email; if (strpos($organizerEmail, '@') !== false) { $parameters['EMAIL'] = $organizerEmail; } $vevent->add('ATTENDEE', (strpos($organizerEmail, '@') !== false ? 'mailto:' : 'urn:uuid:') . $organizerEmail, $parameters); } } } } }
/** * (non-PHPdoc) * @see Calendar_Convert_Event_VCalendar_Abstract::_addEventAttendee() */ protected function _addEventAttendee(\Sabre\VObject\Component\VEvent $vevent, Calendar_Model_Event $event) { if (version_compare($this->_version, '1.0b2', '>')) { parent::_addEventAttendee($vevent, $event); } else { // special handling for Lightning <= 1.0b2 // attendees get screwed up, if the CN contains commas Calendar_Model_Attender::resolveAttendee($event->attendee, FALSE, $event); foreach ($event->attendee as $eventAttendee) { $attendeeEmail = $eventAttendee->getEmail(); if ($attendeeEmail) { $parameters = array('CN' => str_replace(',', null, $eventAttendee->getName()), 'CUTYPE' => Calendar_Convert_Event_VCalendar_Abstract::$cutypeMap[$eventAttendee->user_type], 'PARTSTAT' => $eventAttendee->status, 'ROLE' => "{$eventAttendee->role}-PARTICIPANT", 'RSVP' => 'FALSE'); if (strpos($attendeeEmail, '@') !== false) { $parameters['EMAIL'] = $attendeeEmail; } $vevent->add('ATTENDEE', (strpos($attendeeEmail, '@') !== false ? 'mailto:' : 'urn:uuid:') . $attendeeEmail, $parameters); } } } }