示例#1
0
 /**
  * Helper function for SingleCalendar::storeEvent().
  *
  * @param CalendarEvent $event The ecent to store.
  * @param type $attendee_ids The user ids of the attendees.
  * @return bool|int The number of stored events or false if an error occured.
  */
 private function storeAttendeeEvents(CalendarEvent $event, $attendee_ids)
 {
     $ret = 0;
     $new_attendees = array();
     foreach ($attendee_ids as $attendee_id) {
         if (trim($attendee_id)) {
             $attendee_calendar = new SingleCalendar($attendee_id);
             if ($attendee_calendar->havePermission(Calendar::PERMISSION_WRITABLE)) {
                 $attendee_event = new CalendarEvent(array($attendee_calendar->getRangeId(), $event->event_id));
                 $attendee_event->event = $event->event;
                 $is_new = $attendee_event->isNew();
                 $stored = $attendee_event->store();
                 if ($stored !== false) {
                     // send message if not own calendar
                     if (!$attendee_calendar->havePermission(Calendar::PERMISSION_OWN)) {
                         $this->sendStoreMessage($attendee_event, $is_new);
                     }
                     $new_attendees[] = $attendee_event->range_id;
                     $ret += $stored;
                 } else {
                     return false;
                 }
             }
         }
     }
     $events_delete = CalendarEvent::findBySQL('event_id = ? AND range_id NOT IN(?)', array($event->event_id, $new_attendees));
     foreach ($events_delete as $event_delete) {
         $calendar = new SingleCalendar($event_delete->range_id);
         $calendar->deleteEvent($event_delete);
     }
     return $ret;
 }