/** @var bool|Title */
protected $rclTargetTitle;
+ protected $rclTarget;
+
function __construct() {
parent::__construct( 'Recentchangeslinked' );
}
public function parseParameters( $par, FormOptions $opts ) {
$opts['target'] = $par;
+ $this->rclTarget = $par;
}
/**
$outputPage = $this->getOutput();
$title = Title::newFromText( $target );
if ( !$title || $title->isExternal() ) {
- $outputPage->addHTML( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )
- ->parse() . '</div>' );
+ $outputPage->addHTML(
+ Html::errorBox( $this->msg( 'allpagesbadtitle' )->parse() )
+ );
return false;
}
$ns = $title->getNamespace();
$dbkey = $title->getDBkey();
- $tables[] = 'recentchanges';
- $select = array_merge( RecentChange::selectFields(), $select );
+ $rcQuery = RecentChange::getQueryInfo();
+ $tables = array_merge( $tables, $rcQuery['tables'] );
+ $select = array_merge( $rcQuery['fields'], $select );
+ $join_conds = array_merge( $join_conds, $rcQuery['joins'] );
// left join with watchlist table to highlight watched rows
$uid = $this->getUser()->getId();
'wl_namespace=rc_namespace'
] ];
}
- if ( $this->getUser()->isAllowed( 'rollback' ) ) {
- $tables[] = 'page';
- $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
- $select[] = 'page_latest';
- }
+
+ // JOIN on page, used for 'last revision' filter highlight
+ $tables[] = 'page';
+ $join_conds['page'] = [ 'LEFT JOIN', 'rc_cur_id=page_id' ];
+ $select[] = 'page_latest';
$tagFilter = $opts['tagfilter'] ? explode( '|', $opts['tagfilter'] ) : [];
ChangeTags::modifyDisplayQuery(
public function prefixSearchSubpages( $search, $limit, $offset ) {
return $this->prefixSearchString( $search, $limit, $offset );
}
+
+ /**
+ * Get a self-referential title object
+ * with consideration to the given subpage.
+ *
+ * @return Title
+ * @since 1.23
+ */
+ public function getPageTitle() {
+ return parent::getPageTitle( $this->rclTarget );
+ }
}