* Return a new SearchResult and initializes it with a title.
*
* @param Title $title
- * @param SearchResultSet|null $parentSet
+ * @param ISearchResultSet|null $parentSet
* @return SearchResult
*/
- public static function newFromTitle( $title, SearchResultSet $parentSet = null ) {
+ public static function newFromTitle( $title, ISearchResultSet $parentSet = null ) {
$result = new static();
$result->initFromTitle( $title );
if ( $parentSet ) {
*/
protected function initFromTitle( $title ) {
$this->mTitle = $title;
+ $services = MediaWikiServices::getInstance();
if ( !is_null( $this->mTitle ) ) {
$id = false;
Hooks::run( 'SearchResultInitFromTitle', [ $title, &$id ] );
$this->mRevision = Revision::newFromTitle(
$this->mTitle, $id, Revision::READ_NORMAL );
if ( $this->mTitle->getNamespace() === NS_FILE ) {
- $this->mImage = wfFindFile( $this->mTitle );
+ $this->mImage = $services->getRepoGroup()->findFile( $this->mTitle );
}
}
- $this->searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
+ $this->searchEngine = $services->newSearchEngine();
}
/**
*
* @return bool
*/
- function isBrokenTitle() {
+ public function isBrokenTitle() {
return is_null( $this->mTitle );
}
*
* @return bool
*/
- function isMissingRevision() {
+ public function isMissingRevision() {
return !$this->mRevision && !$this->mImage;
}
/**
* @return Title
*/
- function getTitle() {
+ public function getTitle() {
return $this->mTitle;
}
* Get the file for this page, if one exists
* @return File|null
*/
- function getFile() {
+ public function getFile() {
return $this->mImage;
}
}
/**
- * @param array $terms Terms to highlight
+ * @param string[] $terms Terms to highlight (this parameter is deprecated and ignored)
* @return string Highlighted text snippet, null (and not '') if not supported
*/
- function getTextSnippet( $terms ) {
- global $wgAdvancedSearchHighlighting;
- $this->initText();
-
- // TODO: make highliter take a content object. Make ContentHandler a factory for SearchHighliter.
- list( $contextlines, $contextchars ) = $this->searchEngine->userHighlightPrefs();
-
- $h = new SearchHighlighter();
- if ( count( $terms ) > 0 ) {
- if ( $wgAdvancedSearchHighlighting ) {
- return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
- } else {
- return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
- }
- } else {
- return $h->highlightNone( $this->mText, $contextlines, $contextchars );
- }
+ public function getTextSnippet( $terms = [] ) {
+ return '';
}
/**
* @return string Highlighted title, '' if not supported
*/
- function getTitleSnippet() {
+ public function getTitleSnippet() {
return '';
}
/**
* @return string Highlighted redirect name (redirect to this page), '' if none or not supported
*/
- function getRedirectSnippet() {
+ public function getRedirectSnippet() {
return '';
}
/**
* @return Title|null Title object for the redirect to this page, null if none or not supported
*/
- function getRedirectTitle() {
+ public function getRedirectTitle() {
return null;
}
/**
* @return string Highlighted relevant section name, null if none or not supported
*/
- function getSectionSnippet() {
+ public function getSectionSnippet() {
return '';
}
* @return Title|null Title object (pagename+fragment) for the section,
* null if none or not supported
*/
- function getSectionTitle() {
+ public function getSectionTitle() {
return null;
}
/**
* @return string Timestamp
*/
- function getTimestamp() {
+ public function getTimestamp() {
if ( $this->mRevision ) {
return $this->mRevision->getTimestamp();
} elseif ( $this->mImage ) {
/**
* @return int Number of words
*/
- function getWordCount() {
+ public function getWordCount() {
$this->initText();
return str_word_count( $this->mText );
}
/**
* @return int Size in bytes
*/
- function getByteSize() {
+ public function getByteSize() {
$this->initText();
return strlen( $this->mText );
}
/**
* @return string Interwiki prefix of the title (return iw even if title is broken)
*/
- function getInterwikiPrefix() {
+ public function getInterwikiPrefix() {
return '';
}
/**
* @return string Interwiki namespace of the title (since we likely can't resolve it locally)
*/
- function getInterwikiNamespaceText() {
+ public function getInterwikiNamespaceText() {
return '';
}
* Did this match file contents (eg: PDF/DJVU)?
* @return bool
*/
- function isFileMatch() {
+ public function isFileMatch() {
return false;
}