Esempio n. 1
0
File: OBM.php Progetto: Kervinou/OBM
  /**
   * @return Vcalendar
   */
  function & getDocument($method = 'PUBLISH', $include_attachments = false) {
    $this->document = new Vcalendar();
    $this->setHeaders($method);
    foreach($this->eventSets as $set) {
	  if (!($set))
		  continue;
      $id = $set['event_id'];      
      if(is_null($this->vevents[$id])) {
        $this->vevents[$id] = &$this->addVevent($set);
      }
    }
     $attendees = run_query_get_events_attendee(array_keys($this->vevents));
    if ( strcasecmp($method,"REPLY") == 0 && $this->entities && is_array($this->entities) && count($this->entities) && array_key_exists("user",$this->entities) && is_array($this->entities["user"]) ) {
      $userId = reset(array_keys($this->entities["user"]));
//       print_r($this->entities);
      while($attendees->next_record()) {
//        print_r($attendees->Record);

       if ( $attendees->f('eventlink_entity_id') == $userId ) {
         $this->addAttendee($this->vevents[$attendees->f('event_id')] , $attendees->Record);
         break;
       }
      }
    } else {
     while($attendees->next_record()) {
       $this->addAttendee($this->vevents[$attendees->f('event_id')] , $attendees->Record);
     }
    }
    
    if(count($this->vevents) > 0) {
      $exceptions = run_query_get_events_exception(array_keys($this->vevents));
      while($exceptions->next_record()) {
        $date = new Of_Date($exceptions->f('eventexception_date'));
        $timezone = $exceptions->f('event_timezone');
        if ($timezone) $date->setOriginalTimeZone($timezone);
        $this->addExdate($this->vevents[$exceptions->f('eventexception_parent_id')] , $date);
        $enddate = clone $date;
        $enddate->addSecond(3600);
        $this->addExdate($this->vevents[$exceptions->f('eventexception_parent_id')] , $enddate);

      }    
    }
    foreach($this->vevents as $id => $vevent) {
      VCalendar_Utils::privatizeEvent($this->vevents[$id]);
    }
    return $this->document;
  }