<?php

/**
 * Goweb Sitemanager 5 Framework
 * 
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Db
 * @subpackage Model
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 */

/**
 * Goweb_Db_Model_Col
 */
Goweb::loadClass('Goweb_Db_Model_Col');

/**
 * Classe para representar um campo do tipo Image
 *
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Db
 * @subpackage Model
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 */
class Goweb_Db_Model_Col_Image extends Goweb_Db_Model_Col {

    /**
     * Constructor
     * 
     * Paremetros extra:
     *
     * <code>
     * maxlength         => (string) Nemero meximo de carecteres
     * target            => (string) Directerio de upload
     * prefix            => (string) O prefixo para o nome
     * original          => (int) 1 para gravar a original
     * max_size          => (int) O tamanho meximo em bytes
     * max_width         => (int) Largura mexima da imagem
     * max_height        => (int) Altura mexima da imagem
     * small_max_width   => (int) Lagura mexima da imagem pequena
     * small_max_height  => (int) Altura mexima da imagem pequena
     * medium_max_width  => (int) Lagura mexima da imagem media
     * medium_max_height => (int) Altura mexima da imagem pequena
     * big_max_width     => (int) Lagura mexima da imagem media
     * big_max_height    => (int) Altura mexima da imagem pequena
     * </code>
     *
     * @param  array  $param  Paremetros do campo
     */
    public function __construct($params) {
        $this->_params['type'] = 'Image';        
        $this->_params['maxlength'] = 100;        
        $this->_params['target'] = null;
        $this->_params['prefix'] = null;
        $this->_params['original'] = null;
        $this->_params['max_size'] = null;
        $this->_params['sizes'] = array('small', 'medium', 'big');
        $this->_params['max_width'] = null;
        $this->_params['max_height'] = null;
        $this->_params['type_resize'] = null;
        /**
         * Tamanhos dinâmicos
         */
        if (isset($params['sizes'])){
            if (is_string($params['sizes'])){
                $params['sizes'] = explode(',', $params['sizes']);
            }
            if (is_array($params['sizes'])){
                $this->_params['sizes'] = $params['sizes'];
            } else {
                 throw new Goweb_Exception('o parâmetro "sizes" para a coluna do tipo "Goweb_Db_Model_Col_Image" não é válido.');
            }
        }
        foreach ($this->_params['sizes'] as $size){
            foreach (array('max_width', 'max_height', 'watermark', 'type_resize') as $type){
                $this->_params[$size . '_' . $type] = null;
            }
        }       
        parent::__construct($params);
    }
}
