class MimeMapManager in Sophron 8
Provides a sensible mapping between filename extensions and MIME types.
Hierarchy
- class \Drupal\sophron\MimeMapManager implements MimeMapManagerInterface uses StringTranslationTrait
Expanded class hierarchy of MimeMapManager
1 string reference to 'MimeMapManager'
1 service uses MimeMapManager
File
- src/
MimeMapManager.php, line 23
Namespace
Drupal\sophronView source
class MimeMapManager implements MimeMapManagerInterface {
use StringTranslationTrait;
/**
* The event dispatcher.
*
* @var \Symfony\Component\EventDispatcher\EventDispatcherInterface
*/
protected $eventDispatcher;
/**
* The configuration factory.
*
* @var \Drupal\Core\Config\ConfigFactoryInterface
*/
protected $configFactory;
/**
* The module handler service.
*
* @var \Drupal\Core\Extension\ModuleHandlerInterface
*/
protected $moduleHandler;
/**
* The module configuration settings.
*
* @var \Drupal\Core\Config\ImmutableConfig
*/
protected $sophronSettings;
/**
* The FQCN of the map currently in use.
*
* @var string
*/
protected $currentMapClass;
/**
* The array of initialized map classes.
*
* Keyed by FQCN, each value stores the array of initialization errors.
*
* @var array
*/
protected $initializedMapClasses = [];
/**
* Constructs a MimeMapManager object.
*
* @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
* The config factory.
* @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher
* The event dispatcher.
* @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
* The module handler service.
*/
public function __construct(ConfigFactoryInterface $config_factory, EventDispatcherInterface $dispatcher, ModuleHandlerInterface $module_handler) {
$this->configFactory = $config_factory;
$this->sophronSettings = $this->configFactory
->get('sophron.settings');
$this->eventDispatcher = $dispatcher;
$this->moduleHandler = $module_handler;
}
/**
* {@inheritdoc}
*/
public function isMapClassValid($map_class) {
if (class_exists($map_class) && in_array(AbstractMap::class, class_parents($map_class))) {
return TRUE;
}
return FALSE;
}
/**
* {@inheritdoc}
*/
public function getMapClass() {
if (!$this->currentMapClass) {
switch ($this->sophronSettings
->get('map_option')) {
case static::DRUPAL_MAP:
$this
->setMapClass(DrupalMap::class);
break;
case static::DEFAULT_MAP:
$this
->setMapClass(DefaultMap::class);
break;
case static::CUSTOM_MAP:
$map_class = $this->sophronSettings
->get('map_class');
$this
->setMapClass($this
->isMapClassValid($map_class) ? $map_class : DrupalMap::class);
break;
}
}
return $this->currentMapClass;
}
/**
* {@inheritdoc}
*/
public function setMapClass($map_class) {
$this->currentMapClass = $map_class;
if (!isset($this->initializedMapClasses[$map_class])) {
$event = new MapEvent($map_class);
$this->eventDispatcher
->dispatch(MapEvent::INIT, $event);
$this->initializedMapClasses[$map_class] = $event
->getErrors();
}
return $this;
}
/**
* {@inheritdoc}
*/
public function getMappingErrors($map_class) {
$this
->setMapClass($map_class);
return isset($this->initializedMapClasses[$map_class]) ? $this->initializedMapClasses[$map_class] : [];
}
/**
* {@inheritdoc}
*/
public function listTypes() {
return MapHandler::map($this
->getMapClass())
->listTypes();
}
/**
* {@inheritdoc}
*/
public function getType($type) {
try {
return new Type($type, $this
->getMapClass());
} catch (MalformedTypeException $e) {
return NULL;
} catch (MappingException $e) {
return NULL;
}
}
/**
* {@inheritdoc}
*/
public function listExtensions() {
return MapHandler::map($this
->getMapClass())
->listExtensions();
}
/**
* {@inheritdoc}
*/
public function getExtension($extension) {
try {
return new Extension($extension, $this
->getMapClass());
} catch (MappingException $e) {
return NULL;
}
}
/**
* {@inheritdoc}
*/
public function requirements($phase) {
$is_sophron_guessing = $this->moduleHandler
->moduleExists('sophron_guesser');
return [
'mime_type_guessing_sophron' => [
'title' => $this
->t('MIME type guessing'),
'value' => $is_sophron_guessing ? $this
->t('Sophron') : $this
->t('Drupal core'),
'description' => $is_sophron_guessing ? $this
->t('The <strong>Sophron guesser</strong> module is providing MIME type guessing. <a href=":url">Uninstall the module</a> to revert to Drupal core guessing.', [
':url' => Url::fromRoute('system.modules_uninstall')
->toString(),
]) : $this
->t('Drupal core is providing MIME type guessing. <a href=":url">Install the <strong>Sophron guesser</strong> module</a> to allow the enhanced guessing provided by Sophron.', [
':url' => Url::fromRoute('system.modules_list')
->toString(),
]),
],
];
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
MimeMapManager:: |
protected | property | The configuration factory. | |
MimeMapManager:: |
protected | property | The FQCN of the map currently in use. | |
MimeMapManager:: |
protected | property | The event dispatcher. | |
MimeMapManager:: |
protected | property | The array of initialized map classes. | |
MimeMapManager:: |
protected | property | The module handler service. | |
MimeMapManager:: |
protected | property | The module configuration settings. | |
MimeMapManager:: |
public | function |
Gets a file extension. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Gets the FQCN of map currently in use by the manager. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Gets the initialization errors of a map class. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Gets a MIME type. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Determines if a FQCN is a valid map class. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Gets the list of file extensions. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Gets the list of MIME types. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Check installation requirements and do status reporting. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function |
Sets the map class to use by the manager. Overrides MimeMapManagerInterface:: |
|
MimeMapManager:: |
public | function | Constructs a MimeMapManager object. | |
MimeMapManagerInterface:: |
constant | Option to use a custom defined map. | ||
MimeMapManagerInterface:: |
constant | Option to use MimeMap's default map. | ||
MimeMapManagerInterface:: |
constant | Option to use Sophron's Drupal-compatible map. | ||
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. |