/**
  * 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);
 }
Exemplo n.º 2
0
 /**
  * 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');
 }