Mercurial > hg > cmmr2012-drupal-site
diff core/modules/image/src/ImageEffectBase.php @ 0:c75dbcec494b
Initial commit from drush-created site
author | Chris Cannam |
---|---|
date | Thu, 05 Jul 2018 14:24:15 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/modules/image/src/ImageEffectBase.php Thu Jul 05 14:24:15 2018 +0000 @@ -0,0 +1,168 @@ +<?php + +namespace Drupal\image; + +use Drupal\Core\Plugin\ContainerFactoryPluginInterface; +use Drupal\Core\Plugin\PluginBase; +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 PluginBase 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->setConfiguration($configuration); + $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 defaultConfiguration() { + return []; + } + + /** + * {@inheritdoc} + */ + public function calculateDependencies() { + return []; + } + +}