Version 1
[yaffs-website] / web / modules / contrib / slick / src / Plugin / Field / FieldFormatter / SlickEntityReferenceFormatterBase.php
1 <?php
2
3 namespace Drupal\slick\Plugin\Field\FieldFormatter;
4
5 use Drupal\Core\Field\FieldDefinitionInterface;
6 use Drupal\Core\Logger\LoggerChannelFactoryInterface;
7 use Drupal\Core\Entity\EntityStorageInterface;
8 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
9 use Drupal\blazy\Dejavu\BlazyEntityReferenceBase;
10 use Drupal\slick\SlickFormatterInterface;
11 use Drupal\slick\SlickManagerInterface;
12 use Symfony\Component\DependencyInjection\ContainerInterface;
13
14 /**
15  * Base class for slick entity reference formatters with field details.
16  *
17  * @see \Drupal\slick_media\Plugin\Field\FieldFormatter
18  * @see \Drupal\slick_paragraphs\Plugin\Field\FieldFormatter
19  */
20 abstract class SlickEntityReferenceFormatterBase extends BlazyEntityReferenceBase implements ContainerFactoryPluginInterface {
21
22   use SlickFormatterTrait;
23
24   /**
25    * The logger factory.
26    *
27    * @var \Drupal\Core\Logger\LoggerChannelFactoryInterface
28    */
29   protected $loggerFactory;
30
31   /**
32    * The image style entity storage.
33    *
34    * @var \Drupal\Core\Entity\EntityStorageInterface
35    */
36   protected $imageStyleStorage;
37
38   /**
39    * Constructs a SlickMediaFormatter instance.
40    */
41   public function __construct($plugin_id, $plugin_definition, FieldDefinitionInterface $field_definition, array $settings, $label, $view_mode, array $third_party_settings, LoggerChannelFactoryInterface $logger_factory, EntityStorageInterface $image_style_storage, SlickFormatterInterface $formatter, SlickManagerInterface $manager) {
42     parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
43     $this->loggerFactory     = $logger_factory;
44     $this->imageStyleStorage = $image_style_storage;
45     $this->formatter         = $formatter;
46     $this->manager           = $manager;
47   }
48
49   /**
50    * {@inheritdoc}
51    */
52   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
53     return new static(
54       $plugin_id,
55       $plugin_definition,
56       $configuration['field_definition'],
57       $configuration['settings'],
58       $configuration['label'],
59       $configuration['view_mode'],
60       $configuration['third_party_settings'],
61       $container->get('logger.factory'),
62       $container->get('entity.manager')->getStorage('image_style'),
63       $container->get('slick.formatter'),
64       $container->get('slick.manager')
65     );
66   }
67
68 }