addGoodLinkObj() has many optional arguments, but omitting them actually means corrupting the cache. Nearly all existing callers are in tests. So LinkCacheTestTrait::addGoodLinkObject() was created only for testing. It is better to have this method in the trait, because building the row directly in each test would make these tests brittle against schema changes. The only usage in WMF production code was in WikiPage and has been fixed. Bug: T284955 Change-Id: I03a2bd9ed64fcc0281ee29a286c8db395a9e03d9
47 lines
1.4 KiB
PHP
47 lines
1.4 KiB
PHP
<?php
|
|
|
|
use MediaWiki\Linker\LinkTarget;
|
|
use MediaWiki\MediaWikiServices;
|
|
use MediaWiki\Page\PageReference;
|
|
|
|
/**
|
|
* A trait providing utility functions for testing LinkCache.
|
|
* This trait is intended to be used on subclasses of
|
|
* MediaWikiIntegrationTestCase.
|
|
*
|
|
* @stable to use
|
|
* @since 1.37
|
|
*/
|
|
|
|
trait LinkCacheTestTrait {
|
|
|
|
/**
|
|
* Force information about a page into the cache, pretending it exists.
|
|
*
|
|
* @param int $id Page's ID
|
|
* @param LinkTarget|PageReference $page The page to set cached info for.
|
|
* @param int $len Text's length
|
|
* @param int|null $redir Whether the page is a redirect
|
|
* @param int $revision Latest revision's ID
|
|
* @param string|null $model Latest revision's content model ID
|
|
* @param string|null $lang Language code of the page, if not the content language
|
|
*/
|
|
public function addGoodLinkObject(
|
|
$id, $page, $len = -1, $redir = null, $revision = 0, $model = null, $lang = null
|
|
) {
|
|
MediaWikiServices::getInstance()->getLinkCache()->addGoodLinkObjFromRow( $page, (object)[
|
|
'page_id' => (int)$id,
|
|
'page_namespace' => $page->getNamespace(),
|
|
'page_title' => $page->getDBkey(),
|
|
'page_len' => (int)$len,
|
|
'page_is_redirect' => (int)$redir,
|
|
'page_latest' => (int)$revision,
|
|
'page_content_model' => $model ? (string)$model : null,
|
|
'page_lang' => $lang ? (string)$lang : null,
|
|
'page_restrictions' => null,
|
|
'page_is_new' => 0,
|
|
'page_touched' => '',
|
|
] );
|
|
}
|
|
|
|
}
|