3 namespace Drupal\media\Plugin\QueueWorker;
5 use Drupal\Core\Entity\EntityTypeManagerInterface;
6 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
7 use Drupal\Core\Queue\QueueWorkerBase;
8 use Symfony\Component\DependencyInjection\ContainerInterface;
11 * Process a queue of media items to fetch their thumbnails.
14 * id = "media_entity_thumbnail",
15 * title = @Translation("Thumbnail downloader"),
16 * cron = {"time" = 60}
19 class ThumbnailDownloader extends QueueWorkerBase implements ContainerFactoryPluginInterface {
22 * The entity type manager service.
24 * @var \Drupal\Core\Entity\EntityTypeManagerInterface
26 protected $entityTypeManager;
29 * Constructs a new class instance.
31 * @param array $configuration
32 * A configuration array containing information about the plugin instance.
33 * @param string $plugin_id
34 * The plugin_id for the plugin instance.
35 * @param mixed $plugin_definition
36 * The plugin implementation definition.
37 * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager
38 * Entity type manager service.
40 public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityTypeManagerInterface $entity_type_manager) {
41 parent::__construct($configuration, $plugin_id, $plugin_definition);
42 $this->entityTypeManager = $entity_type_manager;
48 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
53 $container->get('entity_type.manager')
60 public function processItem($data) {
61 /** @var \Drupal\media\Entity\Media $media */
62 if ($media = $this->entityTypeManager->getStorage('media')->load($data['id'])) {
63 $media->updateQueuedThumbnail();