/** * creates given attender in database * * @param Calendar_Model_Attender $_attendee * @return Calendar_Model_Attender */ public function createAttendee(Calendar_Model_Attender $_attendee) { if ($_attendee->user_id instanceof Addressbook_Model_Contact) { $_attendee->user_id = $_attendee->user_id->getId(); } else { if ($_attendee->user_id instanceof Addressbook_Model_List) { $_attendee->user_id = $_attendee->user_id->group_id; } } if ($_attendee->displaycontainer_id instanceof Tinebase_Model_Container) { $_attendee->displaycontainer_id = $_attendee->displaycontainer_id->getId(); } return $this->_attendeeBackend->create($_attendee); }
/** * set container owner as attendee for events from active sync */ public function update_2() { try { Tinebase_Application::getInstance()->getApplicationByName('ActiveSync'); $tablePrefix = SQL_TABLE_PREFIX; // get all envets which came vom active sync without creator as attender $stmt = $this->_db->query("\n SELECT `cal_events`.`id`, `cal_events`.`created_by`, `contact`.`id` AS `contact_id`, `cal_events`.`container_id`, \n MAX(\n `attendee`.`user_type` = 'user' \n AND `attendee`.`user_id` != `cal_events`.`created_by`\n ) AS `creatorIsAttender` \n FROM `{$tablePrefix}cal_events` AS `cal_events`\n INNER JOIN `{$tablePrefix}acsync_content` AS `acsync_content` ON \n `acsync_content`.`class` = 'Calendar' \n AND `acsync_content`.`contentid` = `cal_events`.`id`\n AND TIMESTAMP(`acsync_content`.`creation_time`) - TIMESTAMP(`cal_events`.`creation_time`) <= 0\n LEFT JOIN `{$tablePrefix}cal_attendee` AS `attendee` ON `attendee`.`cal_event_id` = `cal_events`.`id`\n LEFT JOIN `{$tablePrefix}addressbook` AS `contact` ON `contact`.`account_id` = `cal_events`.`created_by`\n GROUP BY `cal_events`.`id`\n HAVING `creatorIsAttender` = 0 OR `creatorIsAttender` IS NULL\n "); $eventDatas = $stmt->fetchAll(Zend_Db::FETCH_ASSOC); $attendeeBE = new Calendar_Backend_Sql_Attendee(); foreach ($eventDatas as $eventData) { try { $attender = new Calendar_Model_Attender(array('cal_event_id' => $eventData['id'], 'user_id' => $eventData['contact_id'], 'user_type' => 'user', 'role' => 'REQ', 'quantity' => 1, 'status' => 'ACCEPTED', 'status_authkey' => Tinebase_Record_Abstract::generateUID(), 'displaycontainer_id' => $eventData['container_id'])); // add attender $attendeeBE->create($attender); // set modification time $this->_db->update($tablePrefix . 'cal_events', array('last_modified_time' => Tinebase_DateTime::now()->get(Tinebase_Record_Abstract::ISO8601LONG), 'last_modified_by' => $eventData['created_by'], 'seq' => new Zend_Db_Expr("seq+1")), "`id` = '{$eventData['id']}'"); } catch (Exception $e) { // ignore... } } } catch (Exception $nfe) { // active sync is not installed } $this->setApplicationVersion('Calendar', '3.3'); }