Merge "maintenance: Script to rename titles for Unicode uppercasing changes"
[lhc/web/wiklou.git] / includes / content / FileContentHandler.php
1 <?php
2
3 use MediaWiki\MediaWikiServices;
4
5 /**
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.
10 */
11 class FileContentHandler extends WikitextContentHandler {
12
13 public function getFieldsForSearchIndex( SearchEngine $engine ) {
14 $fields['file_media_type'] =
15 $engine->makeSearchFieldMapping( 'file_media_type', SearchIndexField::INDEX_TYPE_KEYWORD );
16 $fields['file_media_type']->setFlag( SearchIndexField::FLAG_CASEFOLD );
17 $fields['file_mime'] =
18 $engine->makeSearchFieldMapping( 'file_mime', SearchIndexField::INDEX_TYPE_SHORT_TEXT );
19 $fields['file_mime']->setFlag( SearchIndexField::FLAG_CASEFOLD );
20 $fields['file_size'] =
21 $engine->makeSearchFieldMapping( 'file_size', SearchIndexField::INDEX_TYPE_INTEGER );
22 $fields['file_width'] =
23 $engine->makeSearchFieldMapping( 'file_width', SearchIndexField::INDEX_TYPE_INTEGER );
24 $fields['file_height'] =
25 $engine->makeSearchFieldMapping( 'file_height', SearchIndexField::INDEX_TYPE_INTEGER );
26 $fields['file_bits'] =
27 $engine->makeSearchFieldMapping( 'file_bits', SearchIndexField::INDEX_TYPE_INTEGER );
28 $fields['file_resolution'] =
29 $engine->makeSearchFieldMapping( 'file_resolution', SearchIndexField::INDEX_TYPE_INTEGER );
30 $fields['file_text'] =
31 $engine->makeSearchFieldMapping( 'file_text', SearchIndexField::INDEX_TYPE_TEXT );
32 return $fields;
33 }
34
35 public function getDataForSearchIndex(
36 WikiPage $page,
37 ParserOutput $parserOutput,
38 SearchEngine $engine
39 ) {
40 $fields = [];
41
42 $title = $page->getTitle();
43 if ( NS_FILE != $title->getNamespace() ) {
44 return [];
45 }
46 $file = MediaWikiServices::getInstance()->getRepoGroup()->getLocalRepo()
47 ->newFile( $title );
48 if ( !$file || !$file->exists() ) {
49 return [];
50 }
51
52 $handler = $file->getHandler();
53 if ( $handler ) {
54 $fields['file_text'] = $handler->getEntireText( $file );
55 }
56 $fields['file_media_type'] = $file->getMediaType();
57 $fields['file_mime'] = $file->getMimeType();
58 $fields['file_size'] = $file->getSize();
59 $fields['file_width'] = $file->getWidth();
60 $fields['file_height'] = $file->getHeight();
61 $fields['file_bits'] = $file->getBitDepth();
62 $fields['file_resolution'] =
63 (int)floor( sqrt( $fields['file_width'] * $fields['file_height'] ) );
64
65 return $fields;
66 }
67
68 }