]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/content/FileContentHandler.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / content / FileContentHandler.php
1 <?php
2
3 /**
4  * Content handler for File: files
5  * TODO: this handler s not used directly now,
6  * but instead manually called by WikitextHandler.
7  * This should be fixed in the future.
8  */
9 class FileContentHandler extends WikitextContentHandler {
10
11         public function getFieldsForSearchIndex( SearchEngine $engine ) {
12                 $fields['file_media_type'] =
13                         $engine->makeSearchFieldMapping( 'file_media_type', SearchIndexField::INDEX_TYPE_KEYWORD );
14                 $fields['file_media_type']->setFlag( SearchIndexField::FLAG_CASEFOLD );
15                 $fields['file_mime'] =
16                         $engine->makeSearchFieldMapping( 'file_mime', SearchIndexField::INDEX_TYPE_SHORT_TEXT );
17                 $fields['file_mime']->setFlag( SearchIndexField::FLAG_CASEFOLD );
18                 $fields['file_size'] =
19                         $engine->makeSearchFieldMapping( 'file_size', SearchIndexField::INDEX_TYPE_INTEGER );
20                 $fields['file_width'] =
21                         $engine->makeSearchFieldMapping( 'file_width', SearchIndexField::INDEX_TYPE_INTEGER );
22                 $fields['file_height'] =
23                         $engine->makeSearchFieldMapping( 'file_height', SearchIndexField::INDEX_TYPE_INTEGER );
24                 $fields['file_bits'] =
25                         $engine->makeSearchFieldMapping( 'file_bits', SearchIndexField::INDEX_TYPE_INTEGER );
26                 $fields['file_resolution'] =
27                         $engine->makeSearchFieldMapping( 'file_resolution', SearchIndexField::INDEX_TYPE_INTEGER );
28                 $fields['file_text'] =
29                         $engine->makeSearchFieldMapping( 'file_text', SearchIndexField::INDEX_TYPE_TEXT );
30                 return $fields;
31         }
32
33         public function getDataForSearchIndex(
34                 WikiPage $page,
35                 ParserOutput $parserOutput,
36                 SearchEngine $engine
37         ) {
38                 $fields = [];
39
40                 $title = $page->getTitle();
41                 if ( NS_FILE != $title->getNamespace() ) {
42                         return [];
43                 }
44                 $file = wfLocalFile( $title );
45                 if ( !$file || !$file->exists() ) {
46                         return [];
47                 }
48
49                 $handler = $file->getHandler();
50                 if ( $handler ) {
51                         $fields['file_text'] = $handler->getEntireText( $file );
52                 }
53                 $fields['file_media_type'] = $file->getMediaType();
54                 $fields['file_mime'] = $file->getMimeType();
55                 $fields['file_size'] = $file->getSize();
56                 $fields['file_width'] = $file->getWidth();
57                 $fields['file_height'] = $file->getHeight();
58                 $fields['file_bits'] = $file->getBitDepth();
59                 $fields['file_resolution'] =
60                         (int)floor( sqrt( $fields['file_width'] * $fields['file_height'] ) );
61
62                 return $fields;
63         }
64
65 }