* @ingroup DifferenceEngine
*/
-// Deprecated, use class constant instead
+/** @deprecated use class constant instead */
define( 'MW_DIFF_VERSION', '1.11a' );
/**
*
* @param int $id Revision ID
*
- * @return mixed URL or false
+ * @return string|bool Link HTML or false
*/
public function deletedLink( $id ) {
if ( $this->getUser()->isAllowed( 'deletedhistory' ) ) {
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
$row = $dbr->selectRow( 'archive', '*',
[ 'ar_rev_id' => $id ],
__METHOD__ );
if ( $link ) {
return "[$link $id]";
} else {
- return $id;
+ return (string)$id;
}
}
Hooks::run( 'DifferenceEngineShowDiffPage', [ $out ] );
if ( !$this->loadRevisionData() ) {
- $this->showMissingRevision();
-
+ if ( Hooks::run( 'DifferenceEngineShowDiffPageMaybeShowMissingRevision', [ $this ] ) ) {
+ $this->showMissingRevision();
+ }
return;
}
*
* @return string HTML or empty string
*/
- protected function markPatrolledLink() {
+ public function markPatrolledLink() {
if ( $this->mMarkPatrolledLink === null ) {
$linkInfo = $this->getMarkPatrolledLinkInfo();
// If false, there is no patrol link needed/allowed
[
'action' => 'markpatrolled',
'rcid' => $linkInfo['rcid'],
- 'token' => $linkInfo['token'],
]
) . ']</span>';
// Allow extensions to change the markpatrolled link
Hooks::run( 'DifferenceEngineMarkPatrolledLink', [ $this,
- &$this->mMarkPatrolledLink, $linkInfo['rcid'], $linkInfo['token'] ] );
+ &$this->mMarkPatrolledLink, $linkInfo['rcid'] ] );
}
}
return $this->mMarkPatrolledLink;
* Returns an array of meta data needed to build a "mark as patrolled" link and
* adds the mediawiki.page.patrol.ajax to the output.
*
- * @return array|false An array of meta data for a patrol link (rcid & token)
+ * @return array|false An array of meta data for a patrol link (rcid only)
* or false if no link is needed
*/
protected function getMarkPatrolledLinkInfo() {
RecentChange::isInRCLifespan( $this->mNewRev->getTimestamp(), 21600 )
) {
// Look for an unpatrolled change corresponding to this diff
- $db = wfGetDB( DB_SLAVE );
+ $db = wfGetDB( DB_REPLICA );
$change = RecentChange::newFromConds(
[
'rc_timestamp' => $db->timestamp( $this->mNewRev->getTimestamp() ),
$this->getOutput()->addModules( 'mediawiki.page.patrol.ajax' );
}
- $token = $user->getEditToken( $rcid );
return [
'rcid' => $rcid,
- 'token' => $token,
];
}
}
$out->setRevisionTimestamp( $this->mNewRev->getTimestamp() );
$out->setArticleFlag( true );
- // NOTE: only needed for B/C: custom rendering of JS/CSS via hook
- if ( $this->mNewPage->isCssJsSubpage() || $this->mNewPage->isCssOrJsPage() ) {
- // This needs to be synchronised with Article::showCssOrJsPage(), which sucks
- // Give hooks a chance to customise the output
- // @todo standardize this crap into one function
- if ( ContentHandler::runLegacyHooks( 'ShowRawCssJs', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
- // NOTE: deprecated hook, B/C only
- // use the content object's own rendering
- $cnt = $this->mNewRev->getContent();
- $po = $cnt ? $cnt->getParserOutput( $this->mNewRev->getTitle(), $this->mNewRev->getId() ) : null;
- if ( $po ) {
- $out->addParserOutputContent( $po );
- }
- }
- } elseif ( !Hooks::run( 'ArticleContentViewCustom', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
- // Handled by extension
- } elseif ( !ContentHandler::runLegacyHooks( 'ArticleViewCustom', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
- // NOTE: deprecated hook, B/C only
+ if ( !Hooks::run( 'ArticleContentViewCustom', [ $this->mNewContent, $this->mNewPage, $out ] ) ) {
// Handled by extension
} else {
// Normal page
$difftext = $this->generateContentDiffBody( $this->mOldContent, $this->mNewContent );
+ // Avoid PHP 7.1 warning from passing $this by reference
+ $diffEngine = $this;
+
// Save to cache for 7 days
- if ( !Hooks::run( 'AbortDiffCache', [ &$this ] ) ) {
+ if ( !Hooks::run( 'AbortDiffCache', [ &$diffEngine ] ) ) {
wfIncrStats( 'diff_cache.uncacheable' );
} elseif ( $key !== false && $difftext !== false ) {
wfIncrStats( 'diff_cache.miss' );
return $result;
};
+ /**
+ * @param Status $status
+ * @throws FatalError
+ */
$error = function( $status ) {
throw new FatalError( $status->getWikiText() );
};
public function localiseLineNumbers( $text ) {
return preg_replace_callback(
'/<!--LINE (\d+)-->/',
- [ &$this, 'localiseLineNumbersCb' ],
+ [ $this, 'localiseLineNumbersCb' ],
$text
);
}
*
* @return string HTML fragment
*/
- protected function getRevisionHeader( Revision $rev, $complete = '' ) {
+ public function getRevisionHeader( Revision $rev, $complete = '' ) {
$lang = $this->getLanguage();
$user = $this->getUser();
$revtimestamp = $rev->getTimestamp();
}
// Load tags information for both revisions
- $dbr = wfGetDB( DB_SLAVE );
+ $dbr = wfGetDB( DB_REPLICA );
if ( $this->mOldid !== false ) {
$this->mOldTags = $dbr->selectField(
'tag_summary',
if ( $this->mNewRev ) {
$this->mNewContent = $this->mNewRev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+ Hooks::run( 'DifferenceEngineLoadTextAfterNewContentIsLoaded', [ $this ] );
if ( $this->mNewContent === null ) {
return false;
}
$this->mNewContent = $this->mNewRev->getContent( Revision::FOR_THIS_USER, $this->getUser() );
+ Hooks::run( 'DifferenceEngineAfterLoadNewText', [ $this ] );
+
return true;
}