예제 #1
0
 public function __construct(ICalendarManager $calendarManager = NULL, ApiManager $apiManager = NULL)
 {
     if (!$calendarManager) {
         $calendarManager = CalendarManager::getInstance();
     }
     $this->calendarManager = $calendarManager;
     if (!$apiManager) {
         $apiManager = new ApiManager();
     }
     $this->apiManager = $apiManager;
 }
 public function &getShareableObjectData(IShareable $object, array &$shareableObjectData)
 {
     if (!$object instanceof ICalendar) {
         throw new EyeInvalidClassException('$object must be an instance of ICalendar.');
     }
     try {
         CalendarManager::getInstance()->getCalendarById($object->getId());
     } catch (EyeCalendarNotFoundException $e) {
         throw new EyeSharingException('Unable to share non-existing calendar ' . $object->getId() . '.', 0, $e);
     }
     $shareableObjectData[self::OBJECTDATA_KEY_ID] = $object->getId();
     return $shareableObjectData;
 }
예제 #3
0
 public function userCreated(UMEvent $e)
 {
     $newUser = $e->getSource();
     if ($newUser instanceof AbstractEyeosUser) {
         $calendar = CalendarManager::getInstance()->getNewCalendar();
         $calendar->setOwnerId($newUser->getId());
         $calendar->setName($newUser->getName());
         $calendar->setDescription($newUser->getName() . '\'s personal calendar.');
         $calendar->setTimezone(0);
         CalendarManager::getInstance()->saveCalendar($calendar);
         $prefs = CalendarManager::getInstance()->getCalendarPreferences($newUser->getId(), $calendar->getId());
         $prefs->setVisible(true);
         CalendarManager::getInstance()->saveCalendarPreferences($prefs);
     }
 }
예제 #4
0
 public static function getMaxEventLimit($params)
 {
     return CalendarManager::getInstance()->getMaxEventLimit();
 }
예제 #5
0
 public function deleteCalendar($params)
 {
     if (!isset($params['calendarId']) || !is_string($params['calendarId'])) {
         throw new EyeMissingArgumentException('Missing or invalid $params[\'calendarId\'].');
     }
     $cal = CalendarManager::getInstance()->getCalendarById($params['calendarId']);
     CalendarManager::getInstance()->deleteCalendar($cal);
 }
 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;
 }
예제 #7
0
 public function getShareOwner()
 {
     $calendar = CalendarManager::getInstance()->getCalendarById($this->getCalendarId());
     return UMManager::getInstance()->getUserById($calendar->getOwnerId());
 }