protected function _getEventAttendee($_egwEventData) { $tineAttendee = new Tinebase_Record_RecordSet('Calendar_Model_Attender'); foreach ($_egwEventData['attendee'] as $idx => $egwAttender) { try { $tineAttenderArray = array('quantity' => $egwAttender['cal_quantity'], 'role' => Calendar_Model_Attender::ROLE_REQUIRED, 'status' => isset($this->_attenderStatusMap[$egwAttender['cal_status']]) || array_key_exists($egwAttender['cal_status'], $this->_attenderStatusMap) ? $this->_attenderStatusMap[$egwAttender['cal_status']] : Calendar_Model_Attender::STATUS_NEEDSACTION, 'status_authkey' => Calendar_Model_Attender::generateUID()); switch ($egwAttender['cal_user_type']) { case 'u': // user and group if ($egwAttender['cal_user_id'] > 0) { $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_USER; $tineAttenderArray['user_id'] = Tinebase_User::getInstance()->getUserById($this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']))->contact_id; $tineAttenderArray['displaycontainer_id'] = $this->getPersonalContainer($this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']))->getId(); } else { $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_GROUP; $tineAttenderArray['user_id'] = $this->mapAccountIdEgw2Tine($egwAttender['cal_user_id']); } break; case 'c': // try to find contact in tine (NOTE: id is useless, as contacts get new ids during migration) $contact_id = $this->_getContactIdByEmail($egwAttender['email'], $this->mapAccountIdEgw2Tine($_egwEventData['cal_owner'])); if (!$contact_id) { continue 2; } $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_USER; $tineAttenderArray['user_id'] = $contact_id; break; case 'r': $resource_id = $this->_getResourceId($egwAttender['cal_user_id']); if (!$resource_id) { continue 2; } $tineAttenderArray['user_type'] = Calendar_Model_Attender::USERTYPE_RESOURCE; $tineAttenderArray['user_id'] = $resource_id; break; default: throw new Exception("unsupported attender type: {$egwAttender['cal_user_type']}"); break; } $tineAttendee->addRecord(new Calendar_Model_Attender($tineAttenderArray)); } catch (Exception $e) { $this->_log->warn(__METHOD__ . '::' . __LINE__ . ' skipping attender for event "' . $_egwEventData['cal_id'] . '"cause: ' . $e->getMessage()); // skip attender } } // resolve groupmembers Calendar_Model_Attender::resolveGroupMembers($tineAttendee); $groupMembers = $tineAttendee->filter('user_type', Calendar_Model_Attender::USERTYPE_GROUPMEMBER); foreach ($groupMembers as $groupMember) { $groupMember->status_authkey = Calendar_Model_Attender::generateUID(); $contact = Addressbook_Controller_Contact::getInstance()->get($groupMember->user_id); $groupMember->displaycontainer_id = $this->getPersonalContainer($contact->account_id)->getId(); } return $tineAttendee; }