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

<?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();
}
}