"Fossies" - the Fresh Open Source Software Archive

Member "drupal-8.9.9/core/lib/Drupal/Core/ImageToolkit/ImageToolkitManager.php" (18 Nov 2020, 3222 Bytes) of package /linux/www/drupal-8.9.9.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) PHP source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "ImageToolkitManager.php" see the Fossies "Dox" file reference documentation.

    1 <?php
    2 
    3 namespace Drupal\Core\ImageToolkit;
    4 
    5 use Drupal\Core\Cache\CacheBackendInterface;
    6 use Drupal\Core\Config\ConfigFactoryInterface;
    7 use Drupal\Core\Extension\ModuleHandlerInterface;
    8 use Drupal\Core\Plugin\DefaultPluginManager;
    9 
   10 /**
   11  * Manages image toolkit plugins.
   12  *
   13  * @see \Drupal\Core\ImageToolkit\Annotation\ImageToolkit
   14  * @see \Drupal\Core\ImageToolkit\ImageToolkitInterface
   15  * @see \Drupal\Core\ImageToolkit\ImageToolkitBase
   16  * @see plugin_api
   17  */
   18 class ImageToolkitManager extends DefaultPluginManager {
   19 
   20   /**
   21    * The config factory.
   22    *
   23    * @var \Drupal\Core\Config\ConfigFactoryInterface
   24    */
   25   protected $configFactory;
   26 
   27   /**
   28    * Constructs the ImageToolkitManager object.
   29    *
   30    * @param \Traversable $namespaces
   31    *   An object that implements \Traversable which contains the root paths
   32    *   keyed by the corresponding namespace to look for plugin implementations.
   33    * @param \Drupal\Core\Cache\CacheBackendInterface $cache_backend
   34    *   Cache backend instance to use.
   35    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
   36    *   The module handler.
   37    * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
   38    *   The config factory.
   39    */
   40   public function __construct(\Traversable $namespaces, CacheBackendInterface $cache_backend, ModuleHandlerInterface $module_handler, ConfigFactoryInterface $config_factory) {
   41     parent::__construct('Plugin/ImageToolkit', $namespaces, $module_handler, 'Drupal\Core\ImageToolkit\ImageToolkitInterface', 'Drupal\Core\ImageToolkit\Annotation\ImageToolkit');
   42 
   43     $this->setCacheBackend($cache_backend, 'image_toolkit_plugins');
   44     $this->configFactory = $config_factory;
   45   }
   46 
   47   /**
   48    * Gets the default image toolkit ID.
   49    *
   50    * @return string|bool
   51    *   ID of the default toolkit, or FALSE on error.
   52    */
   53   public function getDefaultToolkitId() {
   54     $toolkit_id = $this->configFactory->get('system.image')->get('toolkit');
   55     $toolkits = $this->getAvailableToolkits();
   56 
   57     if (!isset($toolkits[$toolkit_id]) || !class_exists($toolkits[$toolkit_id]['class'])) {
   58       // The selected toolkit isn't available so return the first one found. If
   59       // none are available this will return FALSE.
   60       reset($toolkits);
   61       $toolkit_id = key($toolkits);
   62     }
   63 
   64     return $toolkit_id;
   65   }
   66 
   67   /**
   68    * Gets the default image toolkit.
   69    *
   70    * @return \Drupal\Core\ImageToolkit\ImageToolkitInterface
   71    *   Object of the default toolkit, or FALSE on error.
   72    */
   73   public function getDefaultToolkit() {
   74     if ($toolkit_id = $this->getDefaultToolkitId()) {
   75       return $this->createInstance($toolkit_id);
   76     }
   77     return FALSE;
   78   }
   79 
   80   /**
   81    * Gets a list of available toolkits.
   82    *
   83    * @return array
   84    *   An array with the toolkit names as keys and the descriptions as values.
   85    */
   86   public function getAvailableToolkits() {
   87     // Use plugin system to get list of available toolkits.
   88     $toolkits = $this->getDefinitions();
   89 
   90     $output = [];
   91     foreach ($toolkits as $id => $definition) {
   92       // Only allow modules that aren't marked as unavailable.
   93       if (call_user_func($definition['class'] . '::isAvailable')) {
   94         $output[$id] = $definition;
   95       }
   96     }
   97 
   98     return $output;
   99   }
  100 
  101 }