<?php

/**
 * Goweb Sitemanager 5 Framework
 * 
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Db
 * @subpackage Model
 * @author     I&D <dev@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 Text
 *
 * @version    5.0.0
 * @category   Goweb
 * @package    Goweb_Db
 * @subpackage Model
 * @author     I&D <dev@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 */
class Goweb_Db_Model_Col_Text extends Goweb_Db_Model_Col {

    /**
     * Constructor
     *
     * Paremetros extra:
     *
     * <code>
     * form      => (string) Tipo de elemento do FORM(Textarea/Rte)
     * theme     => (string) Tema do Rte
     * css       => (string) Caminho do CSS a carregar no Rte
     * maxlength => (int)    Nemero meximo de caracteres
     * </code>
     *
     * @param  array  $param  Paremetros do campo
     */
    public function __construct($params) {
        $this->_params['type'] = 'Text';
        $this->_params['form'] = 'Textarea';
        $this->_params['theme'] = 'advanced';
        $this->_params['css'] = null;
        $this->_params['maxlength'] = null;
        $this->_params['width'] = '100%';
        $this->_params['height'] = '500px';
        $this->_params['cols'] = 30;
        $this->_params['rows'] = 15;
        $this->_params['coltype'] = null;
        $this->_params['auto_complete'] = array('model' => null, 'campo' => null, 
                        'where' => null, 'order' => null, 'type' => 'Local', 'minChars' => '3',
                        'choices' => 10, 'partialSearch' => true,
                        'fullSearch' => true, 'partialChars' => null, 'ignoreCase' => true);
        if (isset($params['auto_complete'])){
            if (!is_array($params['auto_complete'])){
                throw new Goweb_Exception('o parâmetro "auto_complete" para a coluna do tipo "Goweb_Db_Model_Col_Text" não é válido.');
            }
            if (!isset($params['auto_complete']['model'])){
                throw new Goweb_Exception('o parâmetro "model" para auto complete da coluna do tipo "Goweb_Db_Model_Col_Text" não é válido.');
            }
            foreach (array_keys($this->_params['auto_complete']) as $key){
                if (isset($params['auto_complete'][$key])) $this->_params['auto_complete'][$key] = $params['auto_complete'][$key];
            }
            unset($params['auto_complete']);
        } else {
            $this->_params['auto_complete'] = null;
        }
        parent::__construct($params);
        if ($this->_params['form'] != 'Textarea' && $this->_params['form'] != 'Rte') {            
            throw new Goweb_Exception('O paremetro "form" em "Goweb_Db_Model_Col_Textarea" apenas pode ser "Text" ou "Rte".');
        }
    }
}