<?php 

class Imagen extends AppObjeto{
	
	
	protected static $_aliasTabla = 'a';
	protected static $_nombreTabla = 'imagen';
	protected static $_campoPK = 'id_imagen';
	
	
	
	protected $fichero;
	protected $title;
	protected $alt;
	
	public $imagen;
	public $info;
	protected $_estilo;
	
	public function setEstilo($valor){
		$this->_estilo= $valor;
	}
	
	public static function loadByName($fichero){
		$select = self::camposConsulta();
		$select->where('a.fichero=?',$fichero);
		$resultado = self::fetchAll($select);
		
		if(count($resultado)== 1){
			$resultado = $resultado->toArray();
			$imagen = new Imagen($resultado[0]['id_imagen']);
			return $imagen;
		}
		
	}
	public function getRuta($id_estilo = null){
		$baseUrl = APPLICATION_PATH .'/../imagen/';
		
		if($id_estilo == null){
			$source = $baseUrl.'default/'.$this->fichero;
		}else{
			$estilo = new Estilo($id_estilo);
			$source = $baseUrl.$estilo->getNombre().'/'.$this->fichero;
		}
		return $source;
	}
	
	public function getUrl($id_estilo = null){
		$baseUrl = PUBLICURL .'/../imagen/';
	
		if($id_estilo == null){
			$source = $baseUrl.'default/'.$this->fichero;
		}else{
			$estilo = new Estilo($id_estilo);
			$source = $baseUrl.$estilo->getNombre().'/'.$this->fichero;
		}
		return $source;
	}
	
	
	public function render(){
		$html = '<img src="'.$this->getUrl($this->_estilo).'" alt="'.$this->getAlt().'" title="'.$this->getTitle().'"/>';
		return $html;
	}
	
	public function cargaImagen($id_estilo = null){
		
			
		$baseUrl = APPLICATION_PATH .'/../imagen/';
		$source = $baseUrl.'default/'.$this->fichero;
		$image = new stdClass();
		$image->source = $source;
		$image->info = AppHerramientasImagen::image_get_info($source); 
		
		
		
		 
		
		
		$image->resource = AppHerramientasImagen::image_gd_load($image);
		
		
		if($id_estilo != null){
			$estilo = new Estilo($id_estilo);
			$destino = $baseUrl.$estilo->getNombre();
			if(!file_exists($destino)){
				mkdir($destino);
			}
			
			$destino .='/'.$this->fichero;;
			$lista_efectos = $estilo->getEfectos();
			foreach ($lista_efectos as $efecto){
				if($efecto instanceof EstiloEfecto){
					switch ($efecto->getEfecto()) {
						case 1:
							AppHerramientasImagen::image_scale($image, $efecto->getAncho(), $efecto->getAlto());
							break;
						case 2:
							$x= $efecto->getAncho()/2;
							$y= $efecto->getAlto()/2;
							AppHerramientasImagen::image_crop($image, $x, $y, $efecto->getAncho(), $efecto->getAlto());
							break;
						default:
							;
						break;
					}
					
				}
			}
			AppHerramientasImagen::image_gd_save($image, $destino);
		}
		
		
	}
	
	public function setFichero($fichero){
		$this->fichero = $fichero;
	}
	public function getFichero(){
		return $this->fichero;
	}
	
	public function setTitle($title){
		$this->title = $title;
	}
	public function getTitle(){
		return $this->title;
	}
	
	public function setAlt($alt){
		$this->alt = $alt;
	}
	public function getAlt(){
		return $this->alt;
	}
}