public function updateEvent($params)
 {
     $filter = array(CalendarManager::CALENDAR_KEY_ID => $params['calendarId']);
     $calendarData = self::retrieveCalendarData($filter);
     $cal = self::getRemoteCalendar($calendarData);
     $urls = explode('_', $params['id']);
     $url = $urls[0];
     foreach ($cal as $obj1) {
         if ($url == $obj1->getUrl()) {
             $thisEvent = $obj1;
         }
     }
     $props = $thisEvent->getBaseComponent()->getProperties();
     foreach ($props as $prop) {
         if ($prop->name == "DTSTART") {
             $dtstartzone = isset($prop->parameters["TZID"]) ? $prop->parameters["TZID"] : "";
             $params['dtstartzone'] = $dtstartzone;
             $dtStartForAll = $prop->content;
         }
         if ($prop->name == "DTEND") {
             $dtEndForAll = $prop->content;
         }
     }
     //if (!$params['isEditAll'] && $params['eventGroup'] > 0)
     if (!$params['isEditAll']) {
         // edit on only this.
         $thisEvent = $cal->newComponent('VEVENT');
         $thisEvent->update($params, $cal);
         $repeated = false;
         /*$startDate=  date("Ymd\THis\Z",$params['timeStart']);  
         		$endDate=  date("Ymd\THis\Z",$params['timeEnd']); */
         $startDate = date("Ymd\\THis\\Z", CalDavConverter::dateCalDavToEyeos($dtStartForAll) - $params['gmtTimeDiffrence'] * 3600);
         $endDate = date("Ymd\\THis\\Z", CalDavConverter::dateCalDavToEyeos($dtEndForAll) - $params['gmtTimeDiffrence'] * 3600);
     } else {
         // edit all events
         $newValues = array('DTSTART' => $params['dtstart'], 'DTEND' => $params['dtend'], 'SUMMARY' => $params['subject'], 'LOCATION' => $params['location'], 'DESCRIPTION' => $params['description']);
         $thisEvent->setAllProperties($newValues);
         $cal->update($thisEvent->getUrl(), $thisEvent->getEtag());
         $repeated = true;
         $startDate = date("Ymd\\THis\\Z", CalDavConverter::dateCalDavToEyeos($dtStartForAll) - $params['gmtTimeDiffrence'] * 3600);
         $endDate = date("Ymd\\THis\\Z", CalDavConverter::dateCalDavToEyeos($dtEndForAll) - $params['gmtTimeDiffrence'] * 3600);
     }
     $creator = ProcManager::getInstance()->getCurrentProcess()->getLoginContext()->getEyeosUser();
     $start = new When();
     $start->recur($startDate)->rrule($rrule);
     $end = new When();
     $end->recur($endDate)->rrule($rrule);
     /*$repeated=false;
     		if($params['repeatType']!='n'){
     			$repeated=true;
     		}*/
     $maxRepeatLimit = CalendarManager::MAX_REPEAT_LIMIT;
     $repeated = true;
     if ($repeated) {
         for ($i = 0; $i < $maxRepeatLimit; $i++) {
             $sDate = $start->next();
             if (!is_object($sDate)) {
                 break;
             }
             $timeStart = $sDate->getTimestamp();
             $eDate = $end->next();
             $timeEnd = $eDate->getTimestamp();
             $newEvent = CalendarManager::getInstance()->getNewEvent();
             $eventId = $url . '_' . $i;
             $newEvent->setId($eventId);
             $newEvent->setSubject($params['subject']);
             $newEvent->setTimeStart($timeStart);
             $newEvent->setTimeEnd($timeEnd);
             $newEvent->setCalendarId($params['calendarId']);
             $newEvent->setIsAllDay($params['isAllDay']);
             $newEvent->setRepetition($params['repetition']);
             $newEvent->setRepeatType($params['repeatType']);
             $newEvent->setLocation($params['location']);
             $newEvent->setDescription($params['description']);
             $newEvent->setFinalType($params['finalType']);
             $newEvent->setFinalValue($params['finalValue']);
             //$newEvent->seteventGroup(1);	// its repeat event so we need to set it to greater then 0
             $newEvent->setCreatorId($creator->getId());
             $newEvent->setEventGroup(1);
             $newRepeatEventArr[] = $newEvent;
         }
     } else {
         $newEvent = CalendarManager::getInstance()->getNewEvent();
         $eventId = $url;
         $newEvent->setId($eventId);
         $newEvent->setSubject($params['subject']);
         $newEvent->setTimeStart($params['timeStart']);
         $newEvent->setTimeEnd($params['timeEnd']);
         $newEvent->setCalendarId($params['calendarId']);
         $newEvent->setIsAllDay($params['isAllDay']);
         $newEvent->setRepetition($params['repetition']);
         $newEvent->setRepeatType($params['repeatType']);
         $newEvent->setLocation($params['location']);
         $newEvent->setDescription($params['description']);
         $newEvent->setFinalType($params['finalType']);
         $newEvent->setFinalValue($params['finalValue']);
         //$newEvent->seteventGroup(1);	// its repeat event so we need to set it to greater then 0
         $newEvent->setCreatorId($creator->getId());
         $newEvent->setEventGroup(0);
         $newRepeatEventArr[] = $newEvent;
     }
     //print_r($newRepeatEventArr);
     return $newRepeatEventArr;
 }
Example #2
0
 function update($params, $cal)
 {
     //print_r($params); die;
     $uids = explode('_', $params['id']);
     $uid = substr($uids[0], 0, -4);
     $uid = str_replace('%40', '@', $uid);
     //echo html_entity($uid); die;
     if (!$params['isEditAll'] && $params['eventGroup'] > 0) {
         $newValues = array('DTSTART' => CalDavConverter::toCalDavDateNew($params['timeStart'], $params['isAllDay'], $params['gmtTimeDiffrence']), 'DTEND' => CalDavConverter::toCalDavDateNew($params['timeEnd'], $params['isAllDay'], $params['gmtTimeDiffrence']), 'UID' => $uid, 'SUMMARY' => $params['subject'], 'LOCATION' => $params['location'], 'DESCRIPTION' => $params['description']);
         $this->setAllProperties($newValues);
         if (!empty($params['dtstartzone'])) {
             $this->addProperty('RECURRENCE-ID', CalDavConverter::toCalDavDateNew($params['timeStart'], $params['isAllDay'], $params['gmtTimeDiffrence']), array('TZID' => $params['dtstartzone']));
         } else {
             $this->addProperty('RECURRENCE-ID', CalDavConverter::toCalDavDateNew($params['timeStart'], $params['isAllDay'], $params['gmtTimeDiffrence']), array('VALUE' => 'DATE'));
         }
         foreach ($cal as $obj) {
             //print_r($obj->getBaseComponent()->Render());
         }
         //echo $this->getUrl().'---'.$this->getEtag();
         $cal->update($this->getUrl(), $this->getEtag());
     } else {
         $newValues = array('DTSTART' => CalDavConverter::toCalDavDate($params['timeStart'], $params['isAllDay'], $params['gmtTimeDiffrence']), 'DTEND' => CalDavConverter::toCalDavDate($params['timeEnd'], $params['isAllDay'], $params['gmtTimeDiffrence']), 'UID' => $uid, 'SUMMARY' => $params['subject'], 'LOCATION' => $params['location'], 'DESCRIPTION' => $params['description']);
         $this->setAllProperties($newValues);
         $cal->update($this->getUrl(), $this->getEtag());
         //$cal->update($this->getUrl(),$this->getEtag());
     }
 }