1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
<?php
namespace Commercetools\Core\Model\Common;
class Image extends JsonObject
{
const THUMB = 'thumb';
const SMALL = 'small';
const MEDIUM = 'medium';
const LARGE = 'large';
const ZOOM = 'zoom';
public function fieldDefinitions()
{
return [
'url' => [static::TYPE => 'string'],
'dimensions' => [static::TYPE => ImageDimension::class],
'label' => [static::TYPE => 'string', static::OPTIONAL => true]
];
}
public function getSizeUrl($size = null)
{
$url = $this->getUrl();
if (empty($url) || empty($size)) {
return $url;
}
$fileInfo = pathinfo($this->getUrl());
$dirName = isset($fileInfo['dirname']) ? $fileInfo['dirname'] : '';
$fileName = isset($fileInfo['filename']) ? $fileInfo['filename'] : '';
$extension = isset($fileInfo['extension']) ? '.' . $fileInfo['extension'] : '';
$url = $dirName . '/' . $fileName . '-' . $size . $extension;
return $url;
}
public function getThumb()
{
return $this->getSizeUrl(static::THUMB);
}
public function getSmall()
{
return $this->getSizeUrl(static::SMALL);
}
public function getMedium()
{
return $this->getSizeUrl(static::MEDIUM);
}
public function getLarge()
{
return $this->getSizeUrl(static::LARGE);
}
public function getZoom()
{
return $this->getSizeUrl(static::ZOOM);
}
}