function preprocessResults( $db, $res ) {
}
- /**
- * Similar to above, but packaging in a syndicated feed instead of a web page
- * @param string $class
- * @param int $limit
- * @return bool
- */
- function doFeed( $class = '', $limit = 50 ) {
- if ( !$this->getConfig()->get( 'Feed' ) ) {
- $this->getOutput()->addWikiMsg( 'feed-unavailable' );
- return false;
- }
-
- $limit = min( $limit, $this->getConfig()->get( 'FeedLimit' ) );
-
- $feedClasses = $this->getConfig()->get( 'FeedClasses' );
- if ( isset( $feedClasses[$class] ) ) {
- /** @var RSSFeed|AtomFeed $feed */
- $feed = new $feedClasses[$class](
- $this->feedTitle(),
- $this->feedDesc(),
- $this->feedUrl() );
- $feed->outHeader();
-
- $res = $this->reallyDoQuery( $limit, 0 );
- foreach ( $res as $obj ) {
- $item = $this->feedResult( $obj );
- if ( $item ) {
- $feed->outItem( $item );
- }
- }
-
- $feed->outFooter();
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Override for custom handling. If the titles/links are ok, just do
- * feedItemDesc()
- * @param object $row
- * @return FeedItem|null
- */
- function feedResult( $row ) {
- if ( !isset( $row->title ) ) {
- return null;
- }
- $title = Title::makeTitle( intval( $row->namespace ), $row->title );
- if ( $title ) {
- $date = $row->timestamp ?? '';
- $comments = '';
- if ( $title ) {
- $talkpage = $title->getTalkPage();
- $comments = $talkpage->getFullURL();
- }
-
- return new FeedItem(
- $title->getPrefixedText(),
- $this->feedItemDesc( $row ),
- $title->getFullURL(),
- $date,
- $this->feedItemAuthor( $row ),
- $comments );
- } else {
- return null;
- }
- }
-
- function feedItemDesc( $row ) {
- return isset( $row->comment ) ? htmlspecialchars( $row->comment ) : '';
- }
-
- function feedItemAuthor( $row ) {
- return $row->user_text ?? '';
- }
-
- function feedTitle() {
- $desc = $this->getDescription();
- $code = $this->getConfig()->get( 'LanguageCode' );
- $sitename = $this->getConfig()->get( 'Sitename' );
- return "$sitename - $desc [$code]";
- }
-
- function feedDesc() {
- return $this->msg( 'tagline' )->text();
- }
-
- function feedUrl() {
- return $this->getPageTitle()->getFullURL();
- }
-
/**
* Creates a new LinkBatch object, adds all pages from the passed ResultWrapper (MUST include
* title and optional the namespace field) and executes the batch. This operation will pre-cache