<?php namespace Drupal\image; use Drupal\Core\Plugin\ContainerFactoryPluginInterface; use Drupal\Core\Plugin\ConfigurablePluginBase; use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** * Provides a base class for image effects. * * @see \Drupal\image\Annotation\ImageEffect * @see \Drupal\image\ImageEffectInterface * @see \Drupal\image\ConfigurableImageEffectInterface * @see \Drupal\image\ConfigurableImageEffectBase * @see \Drupal\image\ImageEffectManager * @see plugin_api */ abstract class ImageEffectBase extends ConfigurablePluginBase implements ImageEffectInterface, ContainerFactoryPluginInterface { /** * The image effect ID. * * @var string */ protected $uuid; /** * The weight of the image effect. * * @var int|string */ protected $weight = ''; /** * A logger instance. * * @var \Psr\Log\LoggerInterface */ protected $logger; /** * {@inheritdoc} */ public function __construct(array $configuration, $plugin_id, $plugin_definition, LoggerInterface $logger) { parent::__construct($configuration, $plugin_id, $plugin_definition); $this->logger = $logger; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('logger.factory')->get('image') ); } /** * {@inheritdoc} */ public function transformDimensions(array &$dimensions, $uri) { // Most image effects will not change the dimensions. This base // implementation represents this behavior. Override this method if your // image effect does change the dimensions. } /** * {@inheritdoc} */ public function getDerivativeExtension($extension) { // Most image effects will not change the extension. This base // implementation represents this behavior. Override this method if your // image effect does change the extension. return $extension; } /** * {@inheritdoc} */ public function getSummary() { return [ '#markup' => '', '#effect' => [ 'id' => $this->pluginDefinition['id'], 'label' => $this->label(), 'description' => $this->pluginDefinition['description'], ], ]; } /** * {@inheritdoc} */ public function label() { return $this->pluginDefinition['label']; } /** * {@inheritdoc} */ public function getUuid() { return $this->uuid; } /** * {@inheritdoc} */ public function setWeight($weight) { $this->weight = $weight; return $this; } /** * {@inheritdoc} */ public function getWeight() { return $this->weight; } /** * {@inheritdoc} */ public function getConfiguration() { return [ 'uuid' => $this->getUuid(), 'id' => $this->getPluginId(), 'weight' => $this->getWeight(), 'data' => $this->configuration, ]; } /** * {@inheritdoc} */ public function setConfiguration(array $configuration) { $configuration += [ 'data' => [], 'uuid' => '', 'weight' => '', ]; $this->configuration = $configuration['data'] + $this->defaultConfiguration(); $this->uuid = $configuration['uuid']; $this->weight = $configuration['weight']; return $this; } /** * {@inheritdoc} */ public function calculateDependencies() { return []; } }