You are here

public static function BlazyMedia::mediaItem in Blazy 8.2

2 calls to BlazyMedia::mediaItem()
BlazyMedia::imageItem in src/BlazyMedia.php
Extracts image from non-media entities for the main background/ stage.
BlazyOEmbed::getMediaItem in src/BlazyOEmbed.php
Gets the Media item thumbnail.

File

src/BlazyMedia.php, line 82

Class

BlazyMedia
Provides extra utilities to work with core Media.

Namespace

Drupal\blazy

Code

public static function mediaItem(array &$data, $media) {
  $item = NULL;
  $settings =& $data['settings'];
  $settings['bundle'] = $media
    ->bundle();
  $settings['source_field'] = $media
    ->getSource()
    ->getConfiguration()['source_field'];
  $settings['media_url'] = $media
    ->toUrl()
    ->toString();
  $settings['media_id'] = $media
    ->id();
  $settings['media_source'] = $media
    ->getSource()
    ->getPluginId();
  $settings['view_mode'] = empty($settings['view_mode']) ? 'default' : $settings['view_mode'];

  // Prioritize custom high-res or poster image such as (remote|file) video.
  if (!empty($settings['image'])) {
    $item = $media
      ->hasField($settings['image']) ? $media
      ->get($settings['image'])
      ->first() : NULL;
    $settings['_hires'] = !empty($item);
  }

  // If Media has a defined thumbnail, add it to data item, not all has this.
  if (!$item && $media
    ->hasField('thumbnail')) {

    /** @var Drupal\image\Plugin\Field\FieldType\ImageItem $item */

    // Title is NULL from thumbnail, likely core bug, so use source.
    $item = $media
      ->get($settings['media_source'] == 'image' ? $settings['source_field'] : 'thumbnail')
      ->first();
  }

  // Checks if Image item is available.
  if ($item) {
    $settings['file_tags'] = [
      'file:' . $item->target_id,
    ];
    $settings['uri'] = Blazy::uri($item);

    // Pass through image item including poster image overrides.
    $data['item'] = $item;
  }
}