/**
  * @return Zend_Gdata_App_Feed|NULL
  */
 public static function internalGetEvents($calendar, $startDate = null, $endDate = null, $max = 1000, $filter = null, $orderBy = GCalendarZendHelper::ORDER_BY_START_TIME, $pastEvents = false, $sortOrder = GCalendarZendHelper::SORT_ORDER_ASC, $startIndex = 1)
 {
     try {
         $client = new Zend_Http_Client();
         if (!empty($calendar->username) && !empty($calendar->password)) {
             $client = Zend_Gdata_ClientLogin::getHttpClient($calendar->username, $calendar->password, Zend_Gdata_Calendar::AUTH_SERVICE_NAME);
         }
         $service = new Zend_Gdata_Calendar($client);
         $query = $service->newEventQuery();
         $query->setUser($calendar->calendar_id);
         if ($calendar->magic_cookie != null) {
             $query->setVisibility('private-' . $calendar->magic_cookie);
         }
         $query->setProjection('full');
         $query->setOrderBy($orderBy);
         $query->setSortOrder($sortOrder);
         $query->setSingleEvents('true');
         if (!empty($filter)) {
             $query->setQuery($filter);
         }
         if ($startDate != null) {
             $query->setStartMin(JFactory::getDate($startDate)->format('Y-m-d\\TH:i:s'));
         }
         if ($endDate != null) {
             $query->setStartMax(JFactory::getDate($endDate)->format('Y-m-d\\TH:i:s'));
         }
         if ($startDate == null && $endDate == null) {
             $query->setFutureEvents($pastEvents ? 'false' : 'true');
         }
         $query->setMaxResults($max);
         $query->setStartIndex($startIndex);
         $query->setParam('ctz', 'UTC');
         $query->setParam('hl', GCalendarUtil::getFrLanguage());
         $feed = $service->getFeed($query, 'GCalendar_Feed');
         foreach ($feed as $event) {
             $event->setParam('gcid', $calendar->id);
             $event->setParam('gccolor', $calendar->color);
             $event->setParam('gcname', $calendar->name);
         }
         return $feed;
     } catch (Zend_Gdata_App_Exception $e) {
         JError::raiseWarning(200, $e->getMessage());
         return null;
     }
 }