You are here

public function BlazyManager::getBlazy in Blazy 8.2

Same name and namespace in other branches
  1. 8 src/BlazyManager.php \Drupal\blazy\BlazyManager::getBlazy()
  2. 7 src/BlazyManager.php \Drupal\blazy\BlazyManager::getBlazy()

Returns the enforced rich media content, or media using theme_blazy().

Parameters

array $build: The array containing: item, content, settings, or optional captions.

Return value

array The alterable and renderable array of enforced content, or theme_blazy().

1 call to BlazyManager::getBlazy()
BlazyManager::getImage in src/BlazyManager.php
Deprecated method.

File

src/BlazyManager.php, line 34

Class

BlazyManager
Implements a public facing blazy manager.

Namespace

Drupal\blazy

Code

public function getBlazy(array $build = []) {
  foreach (BlazyDefault::themeProperties() as $key) {
    $build[$key] = isset($build[$key]) ? $build[$key] : [];
  }
  $settings =& $build['settings'];
  $settings += BlazyDefault::itemSettings();
  $settings['uri'] = $uri = $settings['uri'] ?: Blazy::uri($build['item']);

  // Prevents _responsive_image_build_source_attributes from fatal if missing.
  // External images are invalid URI, but can still be lazyloaded.
  // The is_file seems fine against weird characters like czech ů at php 7.4,
  // recheck russian characters in general, and lower PHP. No worries if
  // transliterated, though.
  $settings['_valid'] = BlazyUtil::isValidUri($uri);
  $settings['_missing'] = $settings['_valid'] && !is_file($uri);

  // Respects content not handled by theme_blazy(), but passed through.
  // Yet allows rich contents which might still be processed by theme_blazy().
  $content = empty($uri) || $settings['_missing'] ? $build['content'] : [
    '#theme' => 'blazy',
    '#delta' => $settings['delta'],
    '#item' => $build['item'],
    '#image_style' => $settings['image_style'],
    '#build' => $build,
    '#pre_render' => [
      [
        $this,
        'preRenderBlazy',
      ],
    ],
  ];
  $this->moduleHandler
    ->alter('blazy', $content, $settings);
  return $content;
}