You are here

function _picture_filter_prepare_image in Picture 7

Same name and namespace in other branches
  1. 7.2 picture.module \_picture_filter_prepare_image()

Prepares a Render Array for theme_picture_formatter(). It is similar to picture_field_formatter_view() with modifications for inline images.

Parameters

$image: An img tag

See also

picture_field_formatter_view()

1 call to _picture_filter_prepare_image()
_picture_filter_process in ./picture.module
Process callback for inline image filter.

File

./picture.module, line 1227
Picture formatter.

Code

function _picture_filter_prepare_image($image) {

  // Make sure the closing tag is right.
  $image = str_replace('/>', '>', $image);
  $image = str_replace('>', ' />', $image);
  $image = htmlspecialchars($image);

  // Parse the tag as xml.
  $xml = simplexml_load_string('<image>' . html_entity_decode($image, ENT_QUOTES, "utf-8") . '</image>');
  if (isset($xml->img[0]) && is_object($xml->img[0])) {
    $attributes = array();
    foreach ($xml->img[0]
      ->attributes() as $a => $b) {
      $attributes[$a] = (string) $b;
    }
  }
  $fallback_image_style = '';
  $mappings = picture_mapping_load($attributes['data-picture-group']);
  $breakpoint_styles = picture_get_mapping_breakpoints($mappings, $fallback_image_style);

  // Make sure we have a src attribute.
  if (!isset($attributes['src'])) {
    return FALSE;
  }
  $src = $attributes['src'];

  // Make sure we have map src to uri.
  $uri = picture_image_uri($src);
  if (!$uri) {
    return FALSE;
  }
  $image_info = image_get_info($uri);
  if (!$image_info) {

    // It's not an image.
    return FALSE;
  }
  $picture_groups = variable_get('picture_ckeditor_groups', array());
  $image_render_array = array(
    '#theme' => 'picture_formatter',
    '#item' => array(
      'style_name' => $picture_groups[$attributes['data-picture-group']]['fallback'],
      'uri' => $uri,
      'width' => $image_info['width'],
      'height' => $image_info['height'],
      'data-picture-group' => $attributes['data-picture-group'],
      'data-picture-align' => isset($attributes['data-picture-align']) ? $attributes['data-picture-align'] : '',
      'alt' => isset($attributes['alt']) ? $attributes['alt'] : '',
      'title' => isset($attributes['title']) ? $attributes['title'] : '',
      'filemime' => $image_info['mime_type'],
    ),
    '#image_style' => $picture_groups[$attributes['data-picture-group']]['fallback'],
    '#breakpoints' => $breakpoint_styles,
    '#path' => '',
  );
  return $image_render_array;
}