function _picture_filter_prepare_image in Picture 7
Same name and namespace in other branches
- 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;
}