Upgrade to 3.7.1

This commit is contained in:
Bastian Allgeier
2022-07-12 13:33:21 +02:00
parent 7931eb5e47
commit 1ad1eaf387
377 changed files with 63981 additions and 63824 deletions

View File

@@ -22,230 +22,230 @@ use Kirby\Toolkit\Html;
*/
class Image extends File
{
/**
* @var \Kirby\Image\Exif|null
*/
protected $exif;
/**
* @var \Kirby\Image\Exif|null
*/
protected $exif;
/**
* @var \Kirby\Image\Dimensions|null
*/
protected $dimensions;
/**
* @var \Kirby\Image\Dimensions|null
*/
protected $dimensions;
/**
* @var array
*/
public static $resizableTypes = [
'jpg',
'jpeg',
'gif',
'png',
'webp'
];
/**
* @var array
*/
public static $resizableTypes = [
'jpg',
'jpeg',
'gif',
'png',
'webp'
];
/**
* @var array
*/
public static $viewableTypes = [
'avif',
'jpg',
'jpeg',
'gif',
'png',
'svg',
'webp'
];
/**
* @var array
*/
public static $viewableTypes = [
'avif',
'jpg',
'jpeg',
'gif',
'png',
'svg',
'webp'
];
/**
* Validation rules to be used for `::match()`
*
* @var array
*/
public static $validations = [
'maxsize' => ['size', 'max'],
'minsize' => ['size', 'min'],
'maxwidth' => ['width', 'max'],
'minwidth' => ['width', 'min'],
'maxheight' => ['height', 'max'],
'minheight' => ['height', 'min'],
'orientation' => ['orientation', 'same']
];
/**
* Validation rules to be used for `::match()`
*
* @var array
*/
public static $validations = [
'maxsize' => ['size', 'max'],
'minsize' => ['size', 'min'],
'maxwidth' => ['width', 'max'],
'minwidth' => ['width', 'min'],
'maxheight' => ['height', 'max'],
'minheight' => ['height', 'min'],
'orientation' => ['orientation', 'same']
];
/**
* Returns the `<img>` tag for the image object
*
* @return string
*/
public function __toString(): string
{
return $this->html();
}
/**
* Returns the `<img>` tag for the image object
*
* @return string
*/
public function __toString(): string
{
return $this->html();
}
/**
* Returns the dimensions of the file if possible
*
* @return \Kirby\Image\Dimensions
*/
public function dimensions()
{
if ($this->dimensions !== null) {
return $this->dimensions;
}
/**
* Returns the dimensions of the file if possible
*
* @return \Kirby\Image\Dimensions
*/
public function dimensions()
{
if ($this->dimensions !== null) {
return $this->dimensions;
}
if (in_array($this->mime(), [
'image/jpeg',
'image/jp2',
'image/png',
'image/gif',
'image/webp'
])) {
return $this->dimensions = Dimensions::forImage($this->root);
}
if (in_array($this->mime(), [
'image/jpeg',
'image/jp2',
'image/png',
'image/gif',
'image/webp'
])) {
return $this->dimensions = Dimensions::forImage($this->root);
}
if ($this->extension() === 'svg') {
return $this->dimensions = Dimensions::forSvg($this->root);
}
if ($this->extension() === 'svg') {
return $this->dimensions = Dimensions::forSvg($this->root);
}
return $this->dimensions = new Dimensions(0, 0);
}
return $this->dimensions = new Dimensions(0, 0);
}
/**
* Returns the exif object for this file (if image)
*
* @return \Kirby\Image\Exif
*/
public function exif()
{
return $this->exif ??= new Exif($this);
}
/**
* Returns the exif object for this file (if image)
*
* @return \Kirby\Image\Exif
*/
public function exif()
{
return $this->exif ??= new Exif($this);
}
/**
* Returns the height of the asset
*
* @return int
*/
public function height(): int
{
return $this->dimensions()->height();
}
/**
* Returns the height of the asset
*
* @return int
*/
public function height(): int
{
return $this->dimensions()->height();
}
/**
* Converts the file to html
*
* @param array $attr
* @return string
*/
public function html(array $attr = []): string
{
return Html::img($this->url(), $attr);
}
/**
* Converts the file to html
*
* @param array $attr
* @return string
*/
public function html(array $attr = []): string
{
return Html::img($this->url(), $attr);
}
/**
* Returns the PHP imagesize array
*
* @return array
*/
public function imagesize(): array
{
return getimagesize($this->root);
}
/**
* Returns the PHP imagesize array
*
* @return array
*/
public function imagesize(): array
{
return getimagesize($this->root);
}
/**
* Checks if the dimensions of the asset are portrait
*
* @return bool
*/
public function isPortrait(): bool
{
return $this->dimensions()->portrait();
}
/**
* Checks if the dimensions of the asset are portrait
*
* @return bool
*/
public function isPortrait(): bool
{
return $this->dimensions()->portrait();
}
/**
* Checks if the dimensions of the asset are landscape
*
* @return bool
*/
public function isLandscape(): bool
{
return $this->dimensions()->landscape();
}
/**
* Checks if the dimensions of the asset are landscape
*
* @return bool
*/
public function isLandscape(): bool
{
return $this->dimensions()->landscape();
}
/**
* Checks if the dimensions of the asset are square
*
* @return bool
*/
public function isSquare(): bool
{
return $this->dimensions()->square();
}
/**
* Checks if the dimensions of the asset are square
*
* @return bool
*/
public function isSquare(): bool
{
return $this->dimensions()->square();
}
/**
* Checks if the file is a resizable image
*
* @return bool
*/
public function isResizable(): bool
{
return in_array($this->extension(), static::$resizableTypes) === true;
}
/**
* Checks if the file is a resizable image
*
* @return bool
*/
public function isResizable(): bool
{
return in_array($this->extension(), static::$resizableTypes) === true;
}
/**
* Checks if a preview can be displayed for the file
* in the Panel or in the frontend
*
* @return bool
*/
public function isViewable(): bool
{
return in_array($this->extension(), static::$viewableTypes) === true;
}
/**
* Checks if a preview can be displayed for the file
* in the Panel or in the frontend
*
* @return bool
*/
public function isViewable(): bool
{
return in_array($this->extension(), static::$viewableTypes) === true;
}
/**
* Returns the ratio of the asset
*
* @return float
*/
public function ratio(): float
{
return $this->dimensions()->ratio();
}
/**
* Returns the ratio of the asset
*
* @return float
*/
public function ratio(): float
{
return $this->dimensions()->ratio();
}
/**
* Returns the orientation as string
* landscape | portrait | square
*
* @return string
*/
public function orientation(): string
{
return $this->dimensions()->orientation();
}
/**
* Returns the orientation as string
* landscape | portrait | square
*
* @return string
*/
public function orientation(): string
{
return $this->dimensions()->orientation();
}
/**
* Converts the object to an array
*
* @return array
*/
public function toArray(): array
{
$array = array_merge(parent::toArray(), [
'dimensions' => $this->dimensions()->toArray(),
'exif' => $this->exif()->toArray(),
]);
/**
* Converts the object to an array
*
* @return array
*/
public function toArray(): array
{
$array = array_merge(parent::toArray(), [
'dimensions' => $this->dimensions()->toArray(),
'exif' => $this->exif()->toArray(),
]);
ksort($array);
ksort($array);
return $array;
}
return $array;
}
/**
* Returns the width of the asset
*
* @return int
*/
public function width(): int
{
return $this->dimensions()->width();
}
/**
* Returns the width of the asset
*
* @return int
*/
public function width(): int
{
return $this->dimensions()->width();
}
}