From: addshore Date: Wed, 10 Jan 2018 12:23:06 +0000 (+0000) Subject: Revert "Revert "[MCR] Add and use $title param to RevisionStoregetPrevious/Next"" X-Git-Tag: 1.31.0-rc.0~943^2 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=3e2fdb71ed8dab35934ce289d5e559153326028c Revert "Revert "[MCR] Add and use $title param to RevisionStoregetPrevious/Next"" This is a partial revert of a revert that reverted a fix believed to have had its underlying issue fixed in: https://gerrit.wikimedia.org/r/#/c/400577/ The compat layer (Revision), now passes a Title object into the RevisionStore, and this title is used to construct the Record and also any new Revision objects. Bug: T184559 Bug: T183548 Change-Id: Id073265c173f60aa8c456550fdb4bb5196013be8 --- diff --git a/includes/Revision.php b/includes/Revision.php index 10b896b9fd..0844e89286 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -923,8 +923,9 @@ class Revision implements IDBAccessObject { * @return Revision|null */ public function getPrevious() { - $rec = self::getRevisionStore()->getPreviousRevision( $this->mRecord ); - return $rec === null ? null : new Revision( $rec ); + $title = $this->getTitle(); + $rec = self::getRevisionStore()->getPreviousRevision( $this->mRecord, $title ); + return $rec === null ? null : new Revision( $rec, self::READ_NORMAL, $title ); } /** @@ -933,8 +934,9 @@ class Revision implements IDBAccessObject { * @return Revision|null */ public function getNext() { - $rec = self::getRevisionStore()->getNextRevision( $this->mRecord ); - return $rec === null ? null : new Revision( $rec ); + $title = $this->getTitle(); + $rec = self::getRevisionStore()->getNextRevision( $this->mRecord, $title ); + return $rec === null ? null : new Revision( $rec, self::READ_NORMAL, $title ); } /** diff --git a/includes/Storage/RevisionLookup.php b/includes/Storage/RevisionLookup.php index afe0f816d3..45cd1841f0 100644 --- a/includes/Storage/RevisionLookup.php +++ b/includes/Storage/RevisionLookup.php @@ -84,10 +84,11 @@ interface RevisionLookup extends IDBAccessObject { * MCR migration note: this replaces Revision::getPrevious * * @param RevisionRecord $rev + * @param Title $title if known (optional) * * @return RevisionRecord|null */ - public function getPreviousRevision( RevisionRecord $rev ); + public function getPreviousRevision( RevisionRecord $rev, Title $title = null ); /** * Get next revision for this title @@ -95,10 +96,11 @@ interface RevisionLookup extends IDBAccessObject { * MCR migration note: this replaces Revision::getNext * * @param RevisionRecord $rev + * @param Title $title if known (optional) * * @return RevisionRecord|null */ - public function getNextRevision( RevisionRecord $rev ); + public function getNextRevision( RevisionRecord $rev, Title $title = null ); /** * Load a revision based on a known page ID and current revision ID from the DB diff --git a/includes/Storage/RevisionStore.php b/includes/Storage/RevisionStore.php index 3101aea754..e0ee06ad85 100644 --- a/includes/Storage/RevisionStore.php +++ b/includes/Storage/RevisionStore.php @@ -1707,11 +1707,14 @@ class RevisionStore implements IDBAccessObject, RevisionFactory, RevisionLookup * MCR migration note: this replaces Revision::getPrevious * * @param RevisionRecord $rev + * @param Title $title if known (optional) * * @return RevisionRecord|null */ - public function getPreviousRevision( RevisionRecord $rev ) { - $title = $this->getTitle( $rev->getPageId(), $rev->getId() ); + public function getPreviousRevision( RevisionRecord $rev, Title $title = null ) { + if ( $title === null ) { + $title = $this->getTitle( $rev->getPageId(), $rev->getId() ); + } $prev = $title->getPreviousRevisionID( $rev->getId() ); if ( $prev ) { return $this->getRevisionByTitle( $title, $prev ); @@ -1725,11 +1728,14 @@ class RevisionStore implements IDBAccessObject, RevisionFactory, RevisionLookup * MCR migration note: this replaces Revision::getNext * * @param RevisionRecord $rev + * @param Title $title if known (optional) * * @return RevisionRecord|null */ - public function getNextRevision( RevisionRecord $rev ) { - $title = $this->getTitle( $rev->getPageId(), $rev->getId() ); + public function getNextRevision( RevisionRecord $rev, Title $title = null ) { + if ( $title === null ) { + $title = $this->getTitle( $rev->getPageId(), $rev->getId() ); + } $next = $title->getNextRevisionID( $rev->getId() ); if ( $next ) { return $this->getRevisionByTitle( $title, $next );