/**
  * 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);
                 }
             }
         }
     }
 }