Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line source
<?php namespace Drupal\Core\ImageToolkit; use Drupal\Core\Cache\CacheBackendInterface; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Plugin\DefaultPluginManager; /** * Manages image toolkit plugins. * * @see \Drupal\Core\ImageToolkit\Annotation\ImageToolkit * @see \Drupal\Core\ImageToolkit\ImageToolkitInterface * @see \Drupal\Core\ImageToolkit\ImageToolkitBase * @see plugin_api */ class ImageToolkitManager extends DefaultPluginManager { /** * The config factory. * * @var \Drupal\Core\Config\ConfigFactoryInterface */ protected $configFactory; /** * Constructs the ImageToolkitManager object. * * @param \Traversable $namespaces * An object that implements \Traversable which contains the root paths * keyed by the corresponding namespace to look for plugin implementations. * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend * Cache backend instance to use. * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler * The module handler. * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory * The config factory. */ public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ConfigFactoryInterface $config_factory) { parent::__construct('Plugin/ImageToolkit', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkit'); $this->setCacheBackend($cache_backend, 'image_toolkit_plugins'); $this->configFactory = $config_factory; } /** * Gets the default image toolkit ID. * * @return string|bool * ID of the default toolkit, or FALSE on error. */ public function getDefaultToolkitId() { $toolkit_id = $this->configFactory->get('system.image')->get('toolkit'); $toolkits = $this->getAvailableToolkits(); if (!isset($toolkits[$toolkit_id]) || !class_exists($toolkits[$toolkit_id]['class'])) { // The selected toolkit isn't available so return the first one found. If // none are available this will return FALSE. reset($toolkits); $toolkit_id = key($toolkits); } return $toolkit_id; } /** * Gets the default image toolkit. * * @return \Drupal\Core\ImageToolkit\ImageToolkitInterface * Object of the default toolkit, or FALSE on error. */ public function getDefaultToolkit() { if ($toolkit_id = $this->getDefaultToolkitId()) { return $this->createInstance($toolkit_id); } return FALSE; } /** * Gets a list of available toolkits. * * @return array * An array with the toolkit names as keys and the descriptions as values. */ public function getAvailableToolkits() { // Use plugin system to get list of available toolkits. $toolkits = $this->getDefinitions(); $output = []; foreach ($toolkits as $id => $definition) { // Only allow modules that aren't marked as unavailable. if (call_user_func($definition['class'] . '::isAvailable')) { $output[$id] = $definition; } } return $output; } }