Ejemplo n.º 1
0
 function getGoogleCalendarFeeds($startDate, $endDate, $projection = null)
 {
     GCalendarUtil::ensureSPIsLoaded();
     $results = $this->getDBCalendars();
     if (empty($results)) {
         return null;
     }
     $params = $this->getState('parameters.menu');
     $useCache = false;
     $calendarids = array();
     if ($params != null) {
         $useCache = $params->get('cache', 'no') == 'yes';
         $tmp = $params->get('calendarids');
         if (is_array($tmp)) {
             $calendarids = $tmp;
         } else {
             if (!empty($tmp)) {
                 $calendarids[] = $tmp;
             }
         }
     }
     $calendars = array();
     foreach ($results as $result) {
         if (empty($result->calendar_id)) {
             continue;
         }
         if (!empty($calendarids) && !in_array($result->id, $calendarids)) {
             continue;
         }
         $feed = new SimplePie_GCalendar();
         $feed->set_show_past_events(FALSE);
         $feed->set_sort_ascending(TRUE);
         $feed->set_orderby_by_start_date(TRUE);
         $feed->set_expand_single_events(TRUE);
         $feed->enable_order_by_date(FALSE);
         $feed->enable_cache($useCache);
         if ($useCache) {
             // check if cache directory exists and is writeable
             $cacheDir = JPATH_BASE . DS . 'cache' . DS . 'com_gcalendar';
             JFolder::create($cacheDir, 0755);
             if (!is_writable($cacheDir)) {
                 JError::raiseWarning(500, "Created cache at " . $cacheDir . " is not writable, disabling cache.");
                 $cache_exists = false;
             } else {
                 $cache_exists = true;
             }
             //check and set caching
             $feed->enable_cache($cache_exists);
             if ($cache_exists) {
                 $feed->set_cache_location($cacheDir);
                 $cache_time = intval($params->get('cache_time', 3600));
                 $feed->set_cache_duration($cache_time);
             }
         }
         $feed->set_projection($projection);
         $feed->set_start_date($startDate);
         $feed->set_end_date($endDate);
         $feed->set_max_events(100);
         $feed->put('gcid', $result->id);
         $feed->put('gccolor', $result->color);
         $feed->put('gcname', $result->name);
         $feed->set_cal_language(GCalendarUtil::getFrLanguage());
         $feed->set_timezone(GCalendarUtil::getComponentParameter('timezone'));
         $url = SimplePie_GCalendar::create_feed_url($result->calendar_id, $result->magic_cookie);
         $feed->set_feed_url($url);
         $feed->init();
         $feed->handle_content_type();
         $calendars[] = $feed;
     }
     return $calendars;
 }