You are here

public static function BlazyUtil::imageUrl in Blazy 8.2

Provides image url based on the given settings.

2 calls to BlazyUtil::imageUrl()
Blazy::preprocessFileVideo in src/Blazy.php
Overrides variables for file-video.html.twig templates.
Blazy::urlAndDimensions in src/Blazy.php
Builds URLs, cache tags, and dimensions for an individual image.

File

src/BlazyUtil.php, line 111

Class

BlazyUtil
Provides Blazy utilities.

Namespace

Drupal\blazy

Code

public static function imageUrl(array &$settings) {

  // Provides image_url, not URI, expected by lazyload.
  $uri = $settings['uri'];
  $valid = self::isValidUri($uri);
  $styled = $valid && empty($settings['unstyled']);

  // Image style modifier can be multi-style images such as GridStack.
  if ($valid && !empty($settings['image_style']) && ($style = ImageStyle::load($settings['image_style']))) {
    $settings['image_url'] = self::transformRelative($uri, $styled ? $style : NULL);
    $settings['cache_tags'] = $style
      ->getCacheTags();

    // Only re-calculate dimensions if not cropped, nor already set.
    if (empty($settings['_dimensions']) && empty($settings['responsive_image_style'])) {
      $settings = array_merge($settings, self::transformDimensions($style, $settings));
    }
  }
  else {
    $image_url = $valid ? self::transformRelative($uri) : $uri;
    $settings['image_url'] = empty($settings['image_url']) ? $image_url : $settings['image_url'];
  }

  // Just in case, an attempted kidding gets in the way, relevant for UGC.
  $data_uri = mb_substr($settings['image_url'], 0, 10) === 'data:image';
  if (!empty($settings['_check_protocol']) && !$data_uri) {
    $settings['image_url'] = UrlHelper::stripDangerousProtocols($settings['image_url']);
  }
}