MediaWiki REL1_31
SearchResult.php
Go to the documentation of this file.
1<?php
25
33
37 protected $mRevision = null;
38
42 protected $mImage = null;
43
47 protected $mTitle;
48
52 protected $mText;
53
57 protected $searchEngine;
58
63 protected $extensionData;
64
72 public static function newFromTitle( $title, SearchResultSet $parentSet = null ) {
73 $result = new static();
74 $result->initFromTitle( $title );
75 if ( $parentSet ) {
76 $parentSet->augmentResult( $result );
77 }
78 return $result;
79 }
80
87 protected function initFromTitle( $title ) {
88 $this->mTitle = $title;
89 if ( !is_null( $this->mTitle ) ) {
90 $id = false;
91 Hooks::run( 'SearchResultInitFromTitle', [ $title, &$id ] );
92 $this->mRevision = Revision::newFromTitle(
93 $this->mTitle, $id, Revision::READ_NORMAL );
94 if ( $this->mTitle->getNamespace() === NS_FILE ) {
95 $this->mImage = wfFindFile( $this->mTitle );
96 }
97 }
98 $this->searchEngine = MediaWikiServices::getInstance()->newSearchEngine();
99 }
100
106 function isBrokenTitle() {
107 return is_null( $this->mTitle );
108 }
109
115 function isMissingRevision() {
116 return !$this->mRevision && !$this->mImage;
117 }
118
122 function getTitle() {
123 return $this->mTitle;
124 }
125
130 function getFile() {
131 return $this->mImage;
132 }
133
137 protected function initText() {
138 if ( !isset( $this->mText ) ) {
139 if ( $this->mRevision != null ) {
140 $this->mText = $this->searchEngine->getTextFromContent(
141 $this->mTitle, $this->mRevision->getContent() );
142 } else { // TODO: can we fetch raw wikitext for commons images?
143 $this->mText = '';
144 }
145 }
146 }
147
152 function getTextSnippet( $terms ) {
154 $this->initText();
155
156 // TODO: make highliter take a content object. Make ContentHandler a factory for SearchHighliter.
157 list( $contextlines, $contextchars ) = $this->searchEngine->userHighlightPrefs();
158
159 $h = new SearchHighlighter();
160 if ( count( $terms ) > 0 ) {
162 return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
163 } else {
164 return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
165 }
166 } else {
167 return $h->highlightNone( $this->mText, $contextlines, $contextchars );
168 }
169 }
170
174 function getTitleSnippet() {
175 return '';
176 }
177
182 return '';
183 }
184
188 function getRedirectTitle() {
189 return null;
190 }
191
195 function getSectionSnippet() {
196 return '';
197 }
198
203 function getSectionTitle() {
204 return null;
205 }
206
210 public function getCategorySnippet() {
211 return '';
212 }
213
217 function getTimestamp() {
218 if ( $this->mRevision ) {
219 return $this->mRevision->getTimestamp();
220 } elseif ( $this->mImage ) {
221 return $this->mImage->getTimestamp();
222 }
223 return '';
224 }
225
229 function getWordCount() {
230 $this->initText();
231 return str_word_count( $this->mText );
232 }
233
237 function getByteSize() {
238 $this->initText();
239 return strlen( $this->mText );
240 }
241
246 return '';
247 }
248
253 return '';
254 }
255
260 function isFileMatch() {
261 return false;
262 }
263
269 public function getExtensionData() {
270 return $this->extensionData;
271 }
272
279 public function setExtensionData( array $extensionData ) {
280 $this->extensionData = $extensionData;
281 }
282
283}
$wgAdvancedSearchHighlighting
Set to true to have nicer highlighted text in search results, by default off due to execution overhea...
wfFindFile( $title, $options=[])
Find a file.
Implements some public methods and some protected utility functions which are required by multiple ch...
Definition File.php:51
MediaWikiServices is the service locator for the application scope of MediaWiki.
Contain a class for special pages.
Highlight bits of wikitext.
initText()
Lazy initialization of article text from DB.
getExtensionData()
Get the extension data as: augmentor name => data.
Revision $mRevision
isMissingRevision()
Check if target page is missing, happens when index is out of date.
getFile()
Get the file for this page, if one exists.
initFromTitle( $title)
Initialize from a Title and if possible initializes a corresponding Revision and File.
isFileMatch()
Did this match file contents (eg: PDF/DJVU)?
isBrokenTitle()
Check if this is result points to an invalid title.
setExtensionData(array $extensionData)
Set extension data for this result.
static newFromTitle( $title, SearchResultSet $parentSet=null)
Return a new SearchResult and initializes it with a title.
array[] $extensionData
A set of extension data.
getTextSnippet( $terms)
SearchEngine $searchEngine
Represents a title within MediaWiki.
Definition Title.php:39
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global list
Definition deferred.txt:11
namespace being checked & $result
Definition hooks.txt:2323
namespace and then decline to actually register it file or subcat img or subcat $title
Definition hooks.txt:964
const NS_FILE
Definition Defines.php:80