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; }
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()); } }