You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.4 KiB
101 lines
2.4 KiB
<?php
|
|
namespace dimti\Image;
|
|
|
|
abstract class Image extends File
|
|
{
|
|
public $width;
|
|
public $height;
|
|
public $type;
|
|
public $size;
|
|
|
|
public $original_filename;
|
|
|
|
/**
|
|
* @var ImageVariant[]
|
|
*/
|
|
public $variants = array();
|
|
|
|
protected static $max_width;
|
|
|
|
protected static $max_height;
|
|
|
|
protected static $sizes = array();
|
|
|
|
protected static $watermarks = array();
|
|
|
|
public static function getClassName()
|
|
{
|
|
return get_called_class();
|
|
}
|
|
|
|
/**
|
|
* @param $class string|\StdClass
|
|
* @throws \ErrorException
|
|
*/
|
|
public static function checkSubClass($class)
|
|
{
|
|
if (!self::getIsSubClass($class)) {
|
|
throw new \ErrorException('Class "' . $class . '" mast be extend of "Image".');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param $class string|\StdClass
|
|
* @return bool
|
|
*/
|
|
public static function getIsSubClass($class)
|
|
{
|
|
$parent_class = get_parent_class($class);
|
|
if ($parent_class == __CLASS__) {
|
|
return true;
|
|
}
|
|
if (get_parent_class($parent_class)) {
|
|
return self::getIsSubClass($parent_class);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function getSizes()
|
|
{
|
|
return static::$sizes;
|
|
}
|
|
|
|
public static function getWatermark($size)
|
|
{
|
|
return (isset(static::$watermarks[$size])) ? static::$watermarks[$size] : false;
|
|
}
|
|
|
|
public static function getMaxWidth()
|
|
{
|
|
return static::$max_width;
|
|
}
|
|
|
|
public static function getMaxHeight()
|
|
{
|
|
return static::$max_height;
|
|
}
|
|
|
|
/**
|
|
* @param $size
|
|
* @param bool $force_create
|
|
* @param bool $important_create
|
|
*
|
|
* @return ImageVariant
|
|
*/
|
|
public function getVariant($size, $force_create = false, $important_create = null)
|
|
{
|
|
if ($force_create && $important_create === null && is_array($this->variants) && array_key_exists($size, $this->variants) && is_array($this->variants[$size])
|
|
&& $this->variants[$size]['size'] === null) {
|
|
$important_create = true;
|
|
}
|
|
|
|
return parent::getImageVariant($size, $force_create, $important_create);
|
|
}
|
|
|
|
public function getThumb($width = 0, $height = 0, $crop_method = null) {
|
|
if ( $width == 0 && $height == 0 ) {
|
|
return \Majestic\Config::get('static_url') . $this->getWebName();
|
|
}
|
|
return \Majestic\Config::get('static_url') . $this->getVariant($width . 'x' . $height)->getWebName();
|
|
}
|
|
}
|