/** * Newest articles in a specified category */ protected function makeNewestArticlesInCategory(GenericXmlSyndicationFeed &$feed, $category, $count = self::DEFAULT_COUNT) { $catTitle = Title::newFromText($category, NS_CATEGORY); $feed->title = wfMsg('wikifeeds_feed_newestarticlesincategory_title', $catTitle->getText()); $feed->description = wfMsg('wikifeeds_feed_newestarticlesincategory_description', $catTitle->getText()); $db = wfGetDB(DB_SLAVE); extract($db->tableNames('page', 'categorylinks')); $sql = "SELECT\n page_id AS page\n FROM {$page},{$categorylinks}\n WHERE cl_to='{$catTitle->getDBkey()}' AND cl_from=page_id\n ORDER BY cl_timestamp DESC LIMIT {$count}"; if ($result = $db->query($sql, __METHOD__)) { if ($db->numRows($result)) { while ($row = $db->fetchRow($result)) { $title = Title::newFromID($row['page']); $item = new MediaWikiFeedItem($title); $feed->addItem($item); } } } }
/** * Newest articles NOT in a specified category */ protected function makeNewestArticlesNotInCategory(GenericXmlSyndicationFeed &$feed, $category, $namespace, $count = self::DEFAULT_COUNT) { $catTitle = Title::newFromText($category, NS_CATEGORY); $feed->title = wfMsg('wikifeeds_feed_newestarticlesnotincategory_title', $catTitle->getText()); $feed->description = wfMsg('wikifeeds_feed_newestarticlesnotincategory_description', $catTitle->getText()); $pagesIn = $this->getPagesInCategory($category); // filter namespace if (isset($namespace)) { $namespace_sql = "AND page_namespace = {$namespace}"; } else { $namespace_sql = ""; } $db = wfGetDB(DB_SLAVE); extract($db->tableNames('page', 'recentchanges')); $sql = "SELECT page_id AS page\nFROM {$recentchanges},{$page}\nWHERE page_id NOT IN (" . implode(',', $pagesIn) . ") AND rc_cur_id=page_id AND rc_new=1 AND page_is_redirect=0 {$namespace_sql}\nORDER BY rc_timestamp DESC LIMIT {$count}"; if ($result = $db->query($sql)) { if ($db->numRows($result)) { while ($row = $db->fetchRow($result)) { $title = Title::newFromID($row['page']); $item = new MediaWikiFeedItem($title); if (!($title->isRestricted() or NS_USER == $title->getNamespace())) { $feed->addItem($item); } } } } }