101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?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();
 | 
						|
    }
 | 
						|
} |