3 use MediaWiki\MediaWikiServices
;
6 * Content handler for File: files
7 * TODO: this handler s not used directly now,
8 * but instead manually called by WikitextHandler.
9 * This should be fixed in the future.
11 class FileContentHandler
extends WikitextContentHandler
{
13 public function getFieldsForSearchIndex( SearchEngine
$engine ) {
15 $fields['file_media_type'] =
16 $engine->makeSearchFieldMapping( 'file_media_type', SearchIndexField
::INDEX_TYPE_KEYWORD
);
17 $fields['file_media_type']->setFlag( SearchIndexField
::FLAG_CASEFOLD
);
18 $fields['file_mime'] =
19 $engine->makeSearchFieldMapping( 'file_mime', SearchIndexField
::INDEX_TYPE_SHORT_TEXT
);
20 $fields['file_mime']->setFlag( SearchIndexField
::FLAG_CASEFOLD
);
21 $fields['file_size'] =
22 $engine->makeSearchFieldMapping( 'file_size', SearchIndexField
::INDEX_TYPE_INTEGER
);
23 $fields['file_width'] =
24 $engine->makeSearchFieldMapping( 'file_width', SearchIndexField
::INDEX_TYPE_INTEGER
);
25 $fields['file_height'] =
26 $engine->makeSearchFieldMapping( 'file_height', SearchIndexField
::INDEX_TYPE_INTEGER
);
27 $fields['file_bits'] =
28 $engine->makeSearchFieldMapping( 'file_bits', SearchIndexField
::INDEX_TYPE_INTEGER
);
29 $fields['file_resolution'] =
30 $engine->makeSearchFieldMapping( 'file_resolution', SearchIndexField
::INDEX_TYPE_INTEGER
);
31 $fields['file_text'] =
32 $engine->makeSearchFieldMapping( 'file_text', SearchIndexField
::INDEX_TYPE_TEXT
);
36 public function getDataForSearchIndex(
38 ParserOutput
$parserOutput,
43 $title = $page->getTitle();
44 if ( NS_FILE
!= $title->getNamespace() ) {
47 $file = MediaWikiServices
::getInstance()->getRepoGroup()->getLocalRepo()
49 if ( !$file ||
!$file->exists() ) {
53 $handler = $file->getHandler();
55 $fields['file_text'] = $handler->getEntireText( $file );
57 $fields['file_media_type'] = $file->getMediaType();
58 $fields['file_mime'] = $file->getMimeType();
59 $fields['file_size'] = $file->getSize();
60 $fields['file_width'] = $file->getWidth();
61 $fields['file_height'] = $file->getHeight();
62 $fields['file_bits'] = $file->getBitDepth();
63 $fields['file_resolution'] =
64 (int)floor( sqrt( $fields['file_width'] * $fields['file_height'] ) );