MediaWiki  master
MediaHandlerFactory.php
Go to the documentation of this file.
1 <?php
30 
36  private const CORE_HANDLERS = [
37  'image/jpeg' => JpegHandler::class,
38  'image/png' => PNGHandler::class,
39  'image/gif' => GIFHandler::class,
40  'image/tiff' => TiffHandler::class,
41  'image/webp' => WebPHandler::class,
42  'image/x-ms-bmp' => BmpHandler::class,
43  'image/x-bmp' => BmpHandler::class,
44  'image/x-xcf' => XCFHandler::class,
45  'image/svg+xml' => SvgHandler::class, // official
46  'image/svg' => SvgHandler::class, // compat
47  'image/vnd.djvu' => DjVuHandler::class, // official
48  'image/x.djvu' => DjVuHandler::class, // compat
49  'image/x-djvu' => DjVuHandler::class, // compat
50  ];
51 
55  private $registry;
56 
62  private $handlers;
63 
64  public function __construct( array $registry ) {
65  $this->registry = $registry + self::CORE_HANDLERS;
66  }
67 
68  protected function getHandlerClass( $type ) {
69  return $this->registry[$type] ?? false;
70  }
71 
76  public function getHandler( $type ) {
77  if ( isset( $this->handlers[$type] ) ) {
78  return $this->handlers[$type];
79  }
80 
81  $class = $this->getHandlerClass( $type );
82  if ( $class !== false ) {
84  $handler = new $class;
85  if ( !$handler->isEnabled() ) {
86  wfDebug( __METHOD__ . ": $class is not enabled\n" );
87  $handler = false;
88  }
89  } else {
90  wfDebug( __METHOD__ . ": no handler found for $type.\n" );
91  $handler = false;
92  }
93 
94  $this->handlers[$type] = $handler;
95  return $handler;
96  }
97 }
wfDebug( $text, $dest='all', array $context=[])
Sends a line to the debug log if enabled or, optionally, to a comment in output.
MediaHandler [] $handlers
Instance cache of MediaHandler objects by mimetype.
__construct(array $registry)