Passed
Push — master ( 49c0d4...ffd40d )
by Aimeos
19:25 queued 16:39
created

Standard   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 44
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 24
dl 0
loc 44
rs 10
c 0
b 0
f 0
wmc 4

1 Method

Rating   Name   Duplication   Size   Complexity  
A transform() 0 33 4
1
<?php
2
3
/**
4
 * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0
5
 * @copyright Aimeos (aimeos.org), 2020-2022
6
 * @package MW
7
 * @subpackage View
8
 */
9
10
11
namespace Aimeos\Base\View\Helper\Image;
12
13
14
/**
15
 * View helper class for creating an HTML image tag
16
 *
17
 * @package MW
18
 * @subpackage View
19
 */
20
class Standard
21
	extends \Aimeos\Base\View\Helper\Base
22
	implements \Aimeos\Base\View\Helper\Image\Iface
23
{
24
	/**
25
	 * Returns the HTML image tag for the given media item
26
	 *
27
	 * @param \Aimeos\MShop\Media\Item\Iface $media Media item
28
	 * @param string $sizes Preferred image srcset sizes
29
	 * @return string HTML image tag
30
	 */
31
	public function transform( \Aimeos\MShop\Media\Item\Iface $media, string $sizes = '' ) : string
32
	{
33
		$view = $this->view();
34
		$enc = $view->encoder();
35
36
		$sources = [];
37
		foreach( $media->getPreviews() as $type => $path ) {
38
			$sources[$type] = $view->content( $path, 'fs-media' );
39
		}
40
41
		$variant = '';
42
		foreach( $media->getRefItems( 'attribute', null, 'variant' ) as $id => $item ) {
43
			$variant .= ' data-variant-' . $item->getType() . '="' . $enc->attr( $id ) . '"';
44
		}
45
46
		if( !strncmp( $media->getMimetype(), 'video/', 6 ) )
47
		{
48
			return '<video autoplay muted class="item" id="image-' . $media->getId() . '"
49
				itemscope itemtype="http://schema.org/VideoObject"
50
				poster="' . $enc->attr( $view->content( $media->getPreview( 600 ) ) ) . '"
51
				src="' . $enc->attr( $view->content( $media->getUrl() ) ) . '"
52
				alt="' . $enc->attr( $media->getProperties( 'title' )->first( $media->getName() ) ) . '"
53
				' . $variant . '></video>';
54
		}
55
56
		return '<img class="item" id="image-' . $media->getId() . '"
57
			itemscope itemprop="image" itemtype="http://schema.org/ImageObject"
58
			src="' . $enc->attr( $view->content( $media->getPreview() ) ) . '"
59
			srcset="' . $enc->attr( $view->imageset( $media->getPreviews() ) ) . '"
60
			data-image="' . $enc->attr( $view->content( $media->getPreview() ) ) . '"
61
			data-sources="' . $enc->attr( json_encode( $sources, JSON_FORCE_OBJECT ) ) . '"
62
			alt="' . $enc->attr( $media->getProperties( 'title' )->first( $media->getName() ) ) . '"
63
			sizes="' . $sizes . '" ' . $variant . ' />';
64
	}
65
}
66