Simplify SearchUpdate constructor and hard deprecate some param types

Change-Id: I5677041169402014f1afc1a9012460c760ca24b6
This commit is contained in:
David Causse 2019-08-01 12:13:45 +02:00
parent c6b4bdf0ab
commit bc0de57e75
5 changed files with 25 additions and 25 deletions

View file

@ -428,6 +428,8 @@ because of Phabricator reports.
$contextlines and $contextchars to the SearchHighlighter methods, they will
use proper defaults defined in SearchHighlighter::DEFAULT_CONTEXT_LINES and
DEFAULT_CONTEXT_CHARS.
* SearchUpdate constructor: passing a string as the title param and or a boolean
or a string as the content will produce a deprecation warning.
=== Other changes in 1.34 ===
* …

View file

@ -1484,7 +1484,6 @@ class DerivedPageDataUpdater implements IDBAccessObject, LoggerAwareInterface {
$id = $this->getPageId();
$title = $this->getTitle();
$dbKey = $title->getPrefixedDBkey();
$shortTitle = $title->getDBkey();
if ( !$title->exists() ) {
@ -1522,7 +1521,7 @@ class DerivedPageDataUpdater implements IDBAccessObject, LoggerAwareInterface {
// TODO: make search infrastructure aware of slots!
$mainSlot = $this->revision->getSlot( SlotRecord::MAIN );
if ( !$mainSlot->isInherited() && !$this->isContentDeleted() ) {
DeferredUpdates::addUpdate( new SearchUpdate( $id, $dbKey, $mainSlot->getContent() ) );
DeferredUpdates::addUpdate( new SearchUpdate( $id, $title, $mainSlot->getContent() ) );
}
// If this is another user's talk page, update newtalk.

View file

@ -37,7 +37,7 @@ class SearchUpdate implements DeferrableUpdate {
/** @var Title Title we're updating */
private $title;
/** @var Content|bool Content of the page (not text) */
/** @var Content|null Content of the page (not text) */
private $content;
/** @var WikiPage **/
@ -45,30 +45,30 @@ class SearchUpdate implements DeferrableUpdate {
/**
* @param int $id Page id to update
* @param Title|string $title Title of page to update
* @param Content|string|bool $c Content of the page to update. Default: false.
* If a Content object, text will be gotten from it. String is for back-compat.
* Passing false tells the backend to just update the title, not the content
* @param Title $title Title of page to update
* @param Content|null $c Content of the page to update.
*/
public function __construct( $id, $title, $c = false ) {
public function __construct( $id, $title, $c = null ) {
if ( is_string( $title ) ) {
$nt = Title::newFromText( $title );
wfDeprecated( __METHOD__ . " with a string for the title", 1.34 );
$this->title = Title::newFromText( $title );
if ( $this->title === null ) {
throw new InvalidArgumentException( "Cannot construct the title: $title" );
}
} else {
$nt = $title;
$this->title = $title;
}
if ( $nt ) {
$this->id = $id;
// is_string() check is back-compat for ApprovedRevs
if ( is_string( $c ) ) {
$this->content = new TextContent( $c );
} else {
$this->content = $c ?: false;
}
$this->title = $nt;
} else {
wfDebug( "SearchUpdate object created with invalid title '$title'\n" );
$this->id = $id;
// is_string() check is back-compat for ApprovedRevs
if ( is_string( $c ) ) {
wfDeprecated( __METHOD__ . " with a string for the content", 1.34 );
$c = new TextContent( $c );
} elseif ( is_bool( $c ) ) {
wfDeprecated( __METHOD__ . " with a boolean for the content", 1.34 );
$c = null;
}
$this->content = $c;
}
/**
@ -94,7 +94,7 @@ class SearchUpdate implements DeferrableUpdate {
if ( $this->getLatestPage() === null ) {
$search->delete( $this->id, $normalTitle );
continue;
} elseif ( $this->content === false ) {
} elseif ( $this->content === null ) {
$search->updateTitle( $this->id, $normalTitle );
continue;
}

View file

@ -1529,7 +1529,7 @@ abstract class Maintenance {
$title = $titleObj->getPrefixedDBkey();
$this->output( "$title..." );
# Update searchindex
$u = new SearchUpdate( $pageId, $titleObj->getText(), $rev->getContent() );
$u = new SearchUpdate( $pageId, $titleObj, $rev->getContent() );
$u->doUpdate();
$this->output( "\n" );
}

View file

@ -12,8 +12,7 @@ class SearchUpdateTest extends MediaWikiTestCase {
protected function setUp() {
parent::setUp();
$this->setMwGlobals( 'wgSearchType', 'MockSearch' );
$this->su = new SearchUpdate( 0, "" );
$this->su = new SearchUpdate( 0, Title::newMainPage() );
}
public function updateText( $text ) {