public function BlazyFilter::buildImageItem in Blazy 7
Same name and namespace in other branches
- 8.2 src/Plugin/Filter/BlazyFilter.php \Drupal\blazy\Plugin\Filter\BlazyFilter::buildImageItem()
1 call to BlazyFilter::buildImageItem()
- BlazyFilter::process in src/Plugin/Filter/BlazyFilter.php
File
- src/Plugin/Filter/BlazyFilter.php, line 238
Class
- BlazyFilter
- Provides a filter to lazyload image, or iframe elements.
Namespace
Drupal\blazy\Plugin\Filter
Code
public function buildImageItem(array &$build, &$node) {
$settings =& $build['settings'];
$item = new \stdClass();
if ($src = $node
->getAttribute('src')) {
if (strpos($src, '//') === 0) {
$src = 'https:' . $src;
}
if ($node->tagName == 'img') {
$settings['uri'] = $settings['image_url'] = $src;
}
elseif ($node->tagName == 'iframe') {
$src = drupal_strip_dangerous_protocols($src);
$settings['input_url'] = $src;
$settings['uri'] = $settings['image_url'] = $this
->getVideoThumbnail($src);
$settings['scheme'] = $this
->getHost($src);
$settings['embed_url'] = $this
->getVideoEmbedUrl($src);
$settings['autoplay_url'] = $this
->getAutoplayUrl($settings['embed_url']);
$settings['ratio'] = empty($settings['width']) ? '16:9' : 'fluid';
$settings['type'] = 'video';
}
if (!empty($settings['image_url']) && ($uri = Blazy::buildUri($settings['image_url']))) {
$settings['uri'] = $item->uri = $uri;
}
}
$build['media_attributes']['class'][] = 'media-wrapper media-wrapper--blazy';
if ($node->attributes->length) {
foreach ($node->attributes as $attribute) {
if ($attribute->nodeName == 'src') {
continue;
}
if ($attribute->nodeName == 'class') {
$build['media_attributes']['class'][] = $attribute->nodeValue;
}
else {
$build['item_attributes'][$attribute->nodeName] = $attribute->nodeValue;
}
}
$build['media_attributes']['class'] = array_unique($build['media_attributes']['class']);
}
$build['item'] = $item;
}