MediaWiki REL1_35
MWFileProps.php
Go to the documentation of this file.
1<?php
30 private $magic;
31
35 public function __construct( MimeAnalyzer $magic ) {
36 $this->magic = $magic;
37 }
38
63 public function getPropsFromPath( $path, $ext ) {
64 $fsFile = new FSFile( $path );
65
66 $info = $this->newPlaceholderProps();
67 $info['fileExists'] = $fsFile->exists();
68 if ( $info['fileExists'] ) {
69 $info['size'] = $fsFile->getSize(); // bytes
70 $info['sha1'] = $fsFile->getSha1Base36();
71
72 # MIME type according to file contents
73 $info['file-mime'] = $this->magic->guessMimeType( $path, false );
74 # Logical MIME type
76
77 # XXX: MimeAnalyzer::improveTypeFromExtension() may return null (T253483).
78 # Unclear if callers of this method expect that.
79 $info['mime'] = $this->magic->improveTypeFromExtension( $info['file-mime'], $ext );
80
81 list( $info['major_mime'], $info['minor_mime'] ) = File::splitMime( $info['mime'] );
82 $info['media_type'] = $this->magic->getMediaType( $path, $info['mime'] );
83
84 # Height, width and metadata
85 $handler = MediaHandler::getHandler( $info['mime'] );
86 if ( $handler ) {
87 $info['metadata'] = $handler->getMetadata( $fsFile, $path );
88 // @phan-suppress-next-line PhanParamTooMany
89 $gis = $handler->getImageSize( $fsFile, $path, $info['metadata'] );
90 if ( is_array( $gis ) ) {
91 $info = $this->extractImageSizeInfo( $gis ) + $info;
92 }
93 }
94 }
95
96 return $info;
97 }
98
105 private function extractImageSizeInfo( array $gis ) {
106 $info = [];
107 # NOTE: $gis[2] contains a code for the image type. This is no longer used.
108 $info['width'] = $gis[0];
109 $info['height'] = $gis[1];
110 $info['bits'] = $gis['bits'] ?? 0;
111
112 return $info;
113 }
114
135 public function newPlaceholderProps() {
136 return FSFile::placeholderProps() + [
137 'metadata' => '',
138 'width' => 0,
139 'height' => 0,
140 'bits' => 0,
141 'media_type' => MEDIATYPE_UNKNOWN
142 ];
143 }
144}
Class representing a non-directory file on the file system.
Definition FSFile.php:32
static placeholderProps()
Placeholder file properties to use for files that don't exist.
Definition FSFile.php:150
static extensionFromPath( $path, $case='lowercase')
Get the final extension from a storage or FS path.
MimeMagic helper wrapper.
getPropsFromPath( $path, $ext)
Get an associative array containing information about a file with the given storage path.
newPlaceholderProps()
Empty place holder props for non-existing files.
MimeAnalyzer $magic
extractImageSizeInfo(array $gis)
Exract image size information.
__construct(MimeAnalyzer $magic)
static getHandler( $type)
Get a MediaHandler for a given MIME type from the instance cache.
const MEDIATYPE_UNKNOWN
Definition defines.php:26
return true
Definition router.php:92
if(!is_readable( $file)) $ext
Definition router.php:48