2015-08-17 17:00:26 -07:00
< ? php
/**
* @ file
* Contains \Drupal\image\ImageEffectBase .
*/
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 }
*/
2015-09-04 13:20:09 -07:00
public function transformDimensions ( array & $dimensions , $uri ) {
2015-08-17 17:00:26 -07:00
// 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 array (
'#markup' => '' ,
'#effect' => array (
'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 array (
'uuid' => $this -> getUuid (),
'id' => $this -> getPluginId (),
'weight' => $this -> getWeight (),
'data' => $this -> configuration ,
);
}
/**
* { @ inheritdoc }
*/
public function setConfiguration ( array $configuration ) {
$configuration += array (
'data' => array (),
'uuid' => '' ,
'weight' => '' ,
);
$this -> configuration = $configuration [ 'data' ] + $this -> defaultConfiguration ();
$this -> uuid = $configuration [ 'uuid' ];
$this -> weight = $configuration [ 'weight' ];
return $this ;
}
/**
* { @ inheritdoc }
*/
public function defaultConfiguration () {
return array ();
}
/**
* { @ inheritdoc }
*/
public function calculateDependencies () {
return array ();
}
}