MediaWiki REL1_33
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 if ( $this->extensionData ) {
271 return call_user_func( $this->extensionData );
272 } else {
273 return [];
274 }
275 }
276
284 public function setExtensionData( $extensionData ) {
285 if ( $extensionData instanceof Closure ) {
286 $this->extensionData = $extensionData;
288 wfDeprecated( __METHOD__ . ' with array argument', 1.32 );
289 $this->extensionData = function () use ( $extensionData ) {
290 return $extensionData;
291 };
292 } else {
297 __METHOD__ . " must be called with Closure|array, but received $type" );
298 }
299 }
300}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two and(2) offer you this license which gives you legal permission to copy
$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.
wfDeprecated( $function, $version=false, $component=false, $callerOffset=2)
Throws a warning that $function is deprecated.
Implements some public methods and some protected utility functions which are required by multiple ch...
Definition File.php:52
MediaWikiServices is the service locator for the application scope of MediaWiki.
static newFromTitle(LinkTarget $linkTarget, $id=0, $flags=0)
Load either the current, or a specified, revision that's attached to a given link target.
Definition Revision.php:137
Contain a class for special pages.
Highlight bits of wikitext.
initText()
Lazy initialization of article text from DB.
Closure null $extensionData
A function returning a set of extension data.
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.
setExtensionData( $extensionData)
Set extension data for this result.
isFileMatch()
Did this match file contents (eg: PDF/DJVU)?
isBrokenTitle()
Check if this is result points to an invalid title.
static newFromTitle( $title, SearchResultSet $parentSet=null)
Return a new SearchResult and initializes it with a title.
getTextSnippet( $terms)
SearchEngine $searchEngine
Represents a title within MediaWiki.
Definition Title.php:40
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:2340
namespace and then decline to actually register it file or subcat img or subcat $title
Definition hooks.txt:955
const NS_FILE
Definition Defines.php:79