MediaWiki  1.29.1
UnregisteredLocalFile.php
Go to the documentation of this file.
1 <?php
36 class UnregisteredLocalFile extends File {
38  protected $title;
39 
41  protected $path;
42 
44  protected $mime;
45 
47  protected $dims;
48 
50  protected $metadata;
51 
53  public $handler;
54 
60  static function newFromPath( $path, $mime ) {
61  return new self( false, false, $path, $mime );
62  }
63 
69  static function newFromTitle( $title, $repo ) {
70  return new self( $title, $repo, false, false );
71  }
72 
83  function __construct( $title = false, $repo = false, $path = false, $mime = false ) {
84  if ( !( $title && $repo ) && !$path ) {
85  throw new MWException( __METHOD__ .
86  ': not enough parameters, must specify title and repo, or a full path' );
87  }
88  if ( $title instanceof Title ) {
89  $this->title = File::normalizeTitle( $title, 'exception' );
90  $this->name = $repo->getNameFromTitle( $title );
91  } else {
92  $this->name = basename( $path );
93  $this->title = File::normalizeTitle( $this->name, 'exception' );
94  }
95  $this->repo = $repo;
96  if ( $path ) {
97  $this->path = $path;
98  } else {
99  $this->assertRepoDefined();
100  $this->path = $repo->getRootDirectory() . '/' .
101  $repo->getHashPath( $this->name ) . $this->name;
102  }
103  if ( $mime ) {
104  $this->mime = $mime;
105  }
106  $this->dims = [];
107  }
108 
113  private function cachePageDimensions( $page = 1 ) {
114  if ( !isset( $this->dims[$page] ) ) {
115  if ( !$this->getHandler() ) {
116  return false;
117  }
118  $this->dims[$page] = $this->handler->getPageDimensions( $this, $page );
119  }
120 
121  return $this->dims[$page];
122  }
123 
128  function getWidth( $page = 1 ) {
129  $dim = $this->cachePageDimensions( $page );
130 
131  return $dim['width'];
132  }
133 
138  function getHeight( $page = 1 ) {
139  $dim = $this->cachePageDimensions( $page );
140 
141  return $dim['height'];
142  }
143 
147  function getMimeType() {
148  if ( !isset( $this->mime ) ) {
149  $magic = MimeMagic::singleton();
150  $this->mime = $magic->guessMimeType( $this->getLocalRefPath() );
151  }
152 
153  return $this->mime;
154  }
155 
160  function getImageSize( $filename ) {
161  if ( !$this->getHandler() ) {
162  return false;
163  }
164 
165  return $this->handler->getImageSize( $this, $this->getLocalRefPath() );
166  }
167 
171  function getBitDepth() {
172  $gis = $this->getImageSize( $this->getLocalRefPath() );
173 
174  if ( !$gis || !isset( $gis['bits'] ) ) {
175  return 0;
176  }
177  return $gis['bits'];
178  }
179 
183  function getMetadata() {
184  if ( !isset( $this->metadata ) ) {
185  if ( !$this->getHandler() ) {
186  $this->metadata = false;
187  } else {
188  $this->metadata = $this->handler->getMetadata( $this, $this->getLocalRefPath() );
189  }
190  }
191 
192  return $this->metadata;
193  }
194 
198  function getURL() {
199  if ( $this->repo ) {
200  return $this->repo->getZoneUrl( 'public' ) . '/' .
201  $this->repo->getHashPath( $this->name ) . rawurlencode( $this->name );
202  } else {
203  return false;
204  }
205  }
206 
210  function getSize() {
211  $this->assertRepoDefined();
212 
213  return $this->repo->getFileSize( $this->path );
214  }
215 
224  public function setLocalReference( FSFile $fsFile ) {
225  $this->fsFile = $fsFile;
226  }
227 }
UnregisteredLocalFile\newFromTitle
static newFromTitle( $title, $repo)
Definition: UnregisteredLocalFile.php:69
File\$repo
FileRepo LocalRepo ForeignAPIRepo bool $repo
Some member variables can be lazy-initialised using __get().
Definition: File.php:96
UnregisteredLocalFile\getSize
getSize()
Definition: UnregisteredLocalFile.php:210
UnregisteredLocalFile\newFromPath
static newFromPath( $path, $mime)
Definition: UnregisteredLocalFile.php:60
false
processing should stop and the error should be shown to the user * false
Definition: hooks.txt:189
UnregisteredLocalFile\__construct
__construct( $title=false, $repo=false, $path=false, $mime=false)
Create an UnregisteredLocalFile based on a path or a (title,repo) pair.
Definition: UnregisteredLocalFile.php:83
FileRepo\getRootDirectory
getRootDirectory()
Get the public zone root storage directory of the repository.
Definition: FileRepo.php:648
UnregisteredLocalFile
A file object referring to either a standalone local file, or a file in a local repository with no da...
Definition: UnregisteredLocalFile.php:36
UnregisteredLocalFile\$title
Title $title
Definition: UnregisteredLocalFile.php:38
UnregisteredLocalFile\getMetadata
getMetadata()
Definition: UnregisteredLocalFile.php:183
UnregisteredLocalFile\getWidth
getWidth( $page=1)
Definition: UnregisteredLocalFile.php:128
UnregisteredLocalFile\getBitDepth
getBitDepth()
Definition: UnregisteredLocalFile.php:171
File\normalizeTitle
static normalizeTitle( $title, $exception=false)
Given a string or Title object return either a valid Title object with namespace NS_FILE or null.
Definition: File.php:184
php
injection txt This is an overview of how MediaWiki makes use of dependency injection The design described here grew from the discussion of RFC T384 The term dependency this means that anything an object needs to operate should be injected from the the object itself should only know narrow no concrete implementation of the logic it relies on The requirement to inject everything typically results in an architecture that based on two main types of and essentially stateless service objects that use other service objects to operate on the value objects As of the beginning MediaWiki is only starting to use the DI approach Much of the code still relies on global state or direct resulting in a highly cyclical dependency which acts as the top level factory for services in MediaWiki which can be used to gain access to default instances of various services MediaWikiServices however also allows new services to be defined and default services to be redefined Services are defined or redefined by providing a callback the instantiator that will return a new instance of the service When it will create an instance of MediaWikiServices and populate it with the services defined in the files listed by thereby bootstrapping the DI framework Per $wgServiceWiringFiles lists includes ServiceWiring php
Definition: injection.txt:35
UnregisteredLocalFile\$path
string $path
Definition: UnregisteredLocalFile.php:41
handler
this hook is for auditing only or null if authentication failed before getting that far or null if we can t even determine that probably a stub it is not rendered in wiki pages or galleries in category pages allow injecting custom HTML after the section Any uses of the hook need to handle escaping see BaseTemplate::getToolbox and BaseTemplate::makeListItem for details on the format of individual items inside of this array or by returning and letting standard HTTP rendering take place modifiable or by returning false and taking over the output modifiable modifiable after all normalizations have been except for the $wgMaxImageArea check set to true or false to override the $wgMaxImageArea check result gives extension the possibility to transform it themselves set to a MediaTransformOutput the error message to be returned in an array you should do so by altering $wgNamespaceProtection and $wgNamespaceContentModels outside the handler
Definition: hooks.txt:783
File
Implements some public methods and some protected utility functions which are required by multiple ch...
Definition: File.php:51
MWException
MediaWiki exception.
Definition: MWException.php:26
File\getLocalRefPath
getLocalRefPath()
Get an FS copy or original of this file and return the path.
Definition: File.php:433
UnregisteredLocalFile\getURL
getURL()
Definition: UnregisteredLocalFile.php:198
UnregisteredLocalFile\getImageSize
getImageSize( $filename)
Definition: UnregisteredLocalFile.php:160
UnregisteredLocalFile\setLocalReference
setLocalReference(FSFile $fsFile)
Optimize getLocalRefPath() by using an existing local reference.
Definition: UnregisteredLocalFile.php:224
$page
do that in ParserLimitReportFormat instead use this to modify the parameters of the image and a DIV can begin in one section and end in another Make sure your code can handle that case gracefully See the EditSectionClearerLink extension for an example zero but section is usually empty its values are the globals values before the output is cached $page
Definition: hooks.txt:2536
UnregisteredLocalFile\$metadata
bool string $metadata
Handler-specific metadata which will be saved in the img_metadata field.
Definition: UnregisteredLocalFile.php:50
MimeMagic\singleton
static singleton()
Get an instance of this class.
Definition: MimeMagic.php:33
FileRepo\getNameFromTitle
getNameFromTitle(Title $title)
Get the name of a file from its title object.
Definition: FileRepo.php:629
UnregisteredLocalFile\getHeight
getHeight( $page=1)
Definition: UnregisteredLocalFile.php:138
File\$fsFile
FSFile bool $fsFile
False if undefined.
Definition: File.php:111
title
title
Definition: parserTests.txt:211
FSFile
Class representing a non-directory file on the file system.
Definition: FSFile.php:29
UnregisteredLocalFile\getMimeType
getMimeType()
Definition: UnregisteredLocalFile.php:147
FileRepo\getHashPath
getHashPath( $name)
Get a relative path including trailing slash, e.g.
Definition: FileRepo.php:659
UnregisteredLocalFile\$handler
MediaHandler $handler
Definition: UnregisteredLocalFile.php:53
Title
Represents a title within MediaWiki.
Definition: Title.php:39
UnregisteredLocalFile\cachePageDimensions
cachePageDimensions( $page=1)
Definition: UnregisteredLocalFile.php:113
File\assertRepoDefined
assertRepoDefined()
Assert that $this->repo is set to a valid FileRepo instance.
Definition: File.php:2248
File\$name
string $name
The name of a file from its title object.
Definition: File.php:123
name
design txt This is a brief overview of the new design More thorough and up to date information is available on the documentation wiki at name
Definition: design.txt:12
File\getHandler
getHandler()
Get a MediaHandler instance for this file.
Definition: File.php:1365
UnregisteredLocalFile\$dims
array $dims
Dimension data.
Definition: UnregisteredLocalFile.php:47
UnregisteredLocalFile\$mime
bool string $mime
Definition: UnregisteredLocalFile.php:44
MediaHandler
Base media handler class.
Definition: MediaHandler.php:30
array
the array() calling protocol came about after MediaWiki 1.4rc1.