<?php

Goweb::loadClass('Form_Generic', APPLICATION_PATH . '_admin' . DIRECTORY_SEPARATOR . 'Index');

/**
 * Goweb Sitemanager 5 Framework
 * @version    5.0.15
 * @category   Frontoffice
 * @package    Utilizadores
 * @subpackage Form
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 */
class Form_Utilizador extends Form_Generic {
    /**
     * Utilizadores_Model_Utilizador
     *
     * @var Utilizadores_Model_Utilizador
     */
    protected $_model    = null;

    /**
     * Construtor
     *
     * @param int $id
     */
    public function __construct($name = 'goweb_form', $action = null, $id = 0) {
        if (is_null($action)){
            $action = '/utilizadores/save-registo';
        }
        $this->_model = Goweb::getModelInstance('Utilizadores_Model_Utilizador', 'db');
        parent::__construct(get_class($this->_model), $action);

        /**
         * o model precisa de já ir para o setup carregado com os dados por causa das validações
         */
        if ($id) {
            $this->_model->find($id);
        }

        $cols = $this->_model->getColsLabelsWithAliases();
        $this->setup(get_class($this), $cols, $this->_model);

        if ($id) {
            if ($this->_model->find($id)) {
                foreach ($this->getElementsNames() as $element){
                    if ($this->_model->colExists($element)){
                        $this->{$element}->setValue(strpos($this->_model->{$element}, 'a:') === 0 ? unserialize($this->_model->{$element}) : $this->_model->{$element});
                    }
                }
            }
        }
        if(strcmp($action, '/utilizadores/save/') === 0){
            $this->password->removeValidator('Goweb_Validate_Required');
            $this->password->setRequired(false);
            $this->password_confirm->removeValidator('Goweb_Validate_Required');
            $this->password_confirm->setRequired(false);
        } else {
            $baseUrl = str_replace('/admin', '', Zend_Controller_Front::getInstance()->getBaseUrl());
            goweb::loadClass('Goweb_Form_Element_Captcha');
            $captcha = new Goweb_Form_Element_Captcha('verificacao', array(
                        'label' => translate("Por favor introduza o c&oacute;digo na imagem"),
                        'captcha' => 'Image',
                        'captchaOptions' => array(
                            'captcha' => 'Image',
                            'wordLen' => 6,
                            'timeout' => 300,
                            'font' => ROOT_PATH . '/Ubuntu-Title.ttf',
                            'imgurl' => $baseUrl . '/uploads/captcha',
                            'imgDir' => WWW_PATH . '/uploads/captcha',
                            'dotNoiseLevel' => 50,  
                            'lineNoiseLevel' => 0,  
            )));
            $this->addElement($captcha);
        }

        /**
         * remover desnecessários
         */
        $this->removeElement('activo');
        $this->removeElement('submit');
        $this->removeElement('submit_and_new');
        $this->removeElement('submit_and_continue');
    }
}
