From: Jack Phoenix Date: Thu, 17 Nov 2016 02:14:26 +0000 (+0200) Subject: A few more hooks in DifferenceEngine X-Git-Tag: 1.31.0-rc.0~4588 X-Git-Url: http://git.cyclocoop.org/%27-%20%20.%20url_absolue%28find_in_path%28%27spip_style.css%27%29%29%20%20%20.%20url_absolue%28find_in_path%28%27prive/spip_style.css%27%29%29%20.%20%27?a=commitdiff_plain;h=04736acd442c3d8337ee08b8f1b41e5683860347;p=lhc%2Fweb%2Fwiklou.git A few more hooks in DifferenceEngine For mucking with the class member variable mNewContent and optionally allowing the suppression of the "missing revision" message when revision data is not found for a requested revision. Originally implemented as the "GetUserMessagesDiffCurrent" hook (yes, these three separate hooks in three separate places were essentially the same) by Wikia for their SiteWideMessages extension. Change-Id: Ie0c175af2af418d4ed3de28c94df918115312da3 --- diff --git a/docs/hooks.txt b/docs/hooks.txt index 7efd5d2cad..1ecc1f82d8 100644 --- a/docs/hooks.txt +++ b/docs/hooks.txt @@ -1190,6 +1190,18 @@ $page: SpecialPage object for DeletedContributions $row: the DB row for this line &$classes: the classes to add to the surrounding
  • +'DifferenceEngineAfterLoadNewText': called in DifferenceEngine::loadNewText() +after the new revision's content has been loaded into the class member variable +$differenceEngine->mNewContent but before returning true from this function. +$differenceEngine: DifferenceEngine object + +'DifferenceEngineLoadTextAfterNewContentIsLoaded': called in +DifferenceEngine::loadText() after the new revision's content has been loaded +into the class member variable $differenceEngine->mNewContent but before +checking if the variable's value is null. +This hook can be used to inject content into said class member variable. +$differenceEngine: DifferenceEngine object + 'DifferenceEngineMarkPatrolledLink': Allows extensions to change the "mark as patrolled" link which is shown both on the diff header as well as on the bottom of a page, usually wrapped in a span element which has class="patrollink". @@ -1268,6 +1280,12 @@ $differenceEngine: DifferenceEngine object object into the diff view $out: OutputPage object +'DifferenceEngineShowDiffPageMaybeShowMissingRevision': called in +DifferenceEngine::showDiffPage() when revision data cannot be loaded. +Return false in order to prevent displaying the missing revision message +(i.e. to prevent DifferenceEngine::showMissingRevision() from being called). +$differenceEngine: DifferenceEngine object + 'DiffRevisionTools': Override or extend the revision tools available from the diff view, i.e. undo, etc. $newRev: Revision object of the "new" revision diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php index bd65fb42dc..5e40f43b5f 100644 --- a/includes/diff/DifferenceEngine.php +++ b/includes/diff/DifferenceEngine.php @@ -247,8 +247,9 @@ class DifferenceEngine extends ContextSource { Hooks::run( 'DifferenceEngineShowDiffPage', [ $out ] ); if ( !$this->loadRevisionData() ) { - $this->showMissingRevision(); - + if ( Hooks::run( 'DifferenceEngineShowDiffPageMaybeShowMissingRevision', [ $this ] ) ) { + $this->showMissingRevision(); + } return; } @@ -1369,6 +1370,7 @@ class DifferenceEngine extends ContextSource { if ( $this->mNewRev ) { $this->mNewContent = $this->mNewRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ); + Hooks::run( 'DifferenceEngineLoadTextAfterNewContentIsLoaded', [ $this ] ); if ( $this->mNewContent === null ) { return false; } @@ -1395,6 +1397,8 @@ class DifferenceEngine extends ContextSource { $this->mNewContent = $this->mNewRev->getContent( Revision::FOR_THIS_USER, $this->getUser() ); + Hooks::run( 'DifferenceEngineAfterLoadNewText', [ $this ] ); + return true; }