public function getExamples() { global $wgVersion; // attempt to find a valid feed name // if none available, just use an example value $availableFeeds = array_keys(FeaturedFeeds::getFeeds(false)); $feed = reset($availableFeeds); if (!$feed) { $feed = 'featured'; } if (version_compare($wgVersion, '1.19alpha', '>=')) { return array("api.php?action=featuredfeed&feed={$feed}" => "Retrieve feed ``{$feed}'"); } else { return array("Retrieve feed `{$feed}'", " api.php?action=featuredfeed&feed={$feed}"); } }
public function execute($par = '') { global $wgMemc; $this->setHeaders(); $out = $this->getOutput(); $parts = explode('/', $par); if (count($parts) != 3) { $out->showErrorPage('error', 'ffeed-no-feed'); return; } list($feedName, $date, $langCode) = $parts; $feeds = FeaturedFeeds::getFeeds($langCode); if (!isset($feeds[$feedName])) { $out->showErrorPage('error', 'ffeed-feed-not-found', array($feedName)); return; } $feed = $feeds[$feedName]; $timestamp = wfTimestamp(TS_UNIX, $date); if (!$timestamp) { $out->showErrorPage('error', 'ffeed-invalid-timestamp'); return; } $date = FeaturedFeeds::startOfDay($timestamp); // First, search in the general cache foreach ($feed->getFeedItems() as $item) { if ($item->getRawDate() == $date) { $this->displayItem($item); return; } } $key = wfMemcKey('featured', $feedName, $date, $feed->getLanguage()->getCode(), FeaturedFeedItem::CACHE_VERSION); $item = $wgMemc->get($key); if (!$item) { $item = $feed->getFeedItem($date); if ($item) { $wgMemc->set($key, $item, 3600 * 24); } } if ($item) { $this->displayItem($item); } else { $out->showErrorPage('error', 'ffeed-entry-not-found', array($this->getLanguage()->date($date))); } }