function getFeed($feedID, $force = FALSE) { global $tp, $e107, $sql, $eArrayStorage, $admin_log; $this->readFeedList(); // Make sure we've got the feed data. if (!isset($this->feedList[$feedID])) { if (NEWSFEED_DEBUG) { echo "Invalid feed number: {$feedID}<br />"; } return FALSE; } if ($force || !isset($this->newsList[$feedID]['newsfeed_data']) || !$this->newsList[$feedID]['newsfeed_data']) { // No data already in memory if ($force || !($this->newsList[$feedID]['newsfeed_data'] = $e107->ecache->retrieve(NEWSFEED_NEWS_CACHE_TAG . $feedID, $this->feedList[$feedID]['newsfeed_updateint'] / 60))) { // Need to re-read from source - either no cached data yet, or cache expired if (NEWSFEED_DEBUG) { $admin_log->e_log_event(10, debug_backtrace(), "DEBUG", "Newsfeed update", "Refresh item: " . $feedID, FALSE, LOG_TO_ROLLING); } require_once e_HANDLER . 'xml_class.php'; $xml = new xmlClass(); require_once e_HANDLER . 'magpie_rss.php'; $dbData = array(); // In case we need to update DB if ($rawData = $xml->getRemoteFile($this->feedList[$feedID]['newsfeed_url'])) { // Need to update feed $rss = new MagpieRSS($rawData); list($newsfeed_image, $newsfeed_showmenu, $newsfeed_showmain) = explode("::", $this->feedList[$feedID]['newsfeed_image']); $temp['channel'] = $rss->channel; if ($newsfeed_showmenu == 0 || $newsfeed_showmain == 0) { $temp['items'] = $rss->items; // Unlimited items } else { $temp['items'] = array_slice($rss->items, 0, max($newsfeed_showmenu, $newsfeed_showmain)); // Limited items } $newsfeed_des = FALSE; if ($this->feedList[$feedID]['newsfeed_description'] == 'default') { $temp['newsfeed_description'] = 'default'; // This prevents db writes if no better data found if ($rss->channel['description']) { $newsfeed_des = $tp->toDB($rss->channel['description']); $temp['newsfeed_description'] = $newsfeed_des; } else { if ($rss->channel['tagline']) { $newsfeed_des = $tp->toDB($rss->channel['tagline']); $temp['newsfeed_description'] = $newsfeed_des; } } if ($temp['newsfeed_description'] != $this->feedList[$feedID]['newsfeed_description']) { // Need to write updated feed name to DB $this->feedList[$feedID]['newsfeed_description'] = $temp['newsfeed_description']; $dbData['newsfeed_description'] = $temp['newsfeed_description']; if ($this->useCache) { $e107->ecache->clear(NEWSFEED_LIST_CACHE_TAG); // Clear the newsfeed cache so its re-read next time } } } if ($newsfeed_image == 'default') { $temp['newsfeed_image_link'] = "<a href='" . $rss->image['link'] . "' rel='external'><img src='" . $rss->image['url'] . "' alt='" . $rss->image['title'] . "' style='vertical-align: middle;' /></a>"; } else { $temp['newsfeed_image_link'] = "<img src='" . $this->feedList[$feedID]['newsfeed_image'] . "' alt='' />"; } $serializedArray = $eArrayStorage->WriteArray($temp, FALSE); $now = time(); $this->newsList[$feedID]['newsfeed_data'] = $serializedArray; $this->newsList[$feedID]['newsfeed_timestamp'] = $now; if ($this->useCache) { $e107->ecache->set(NEWSFEED_NEWS_CACHE_TAG . $feedID, $serializedArray); } else { $dbData['newsfeed_data'] = addslashes($serializedArray); $dbData['newsfeed_timestamp'] = $now; } if (count($dbData)) { // Only write the feed data to DB if not using cache. Write description if changed if (FALSE === $sql->db_UpdateArray('newsfeed', $dbData, " WHERE newsfeed_id=" . $feedID)) { if (NEWSFEED_DEBUG) { echo NFLAN_48 . "<br /><br />" . var_dump($dbData); } } } unset($rss); } else { if (NEWSFEED_DEBUG) { echo $xml->error; } return FALSE; } } } return $eArrayStorage->ReadArray($this->newsList[$feedID]['newsfeed_data']); }