<?php

Goweb::loadClass('Goweb_Setup');

/**
 * Goweb Sitemanager 5 Framework
 * @version    5.0.0
 * @category   Frontoffice
 * @package    Utilizadores
 * @subpackage Setup
 * @author     I&D <dev@goweb.pt>, Pedro Pinto <ppinto@goweb.pt>
 * @copyright  2009 (c) Goweb (http://www.goweb.pt)
 *
 * As classes _Setup sao utilizadas para a criacao das tabelas
 * relativas aos Models dos Modulos.
 * Para cada Modulo existente no sistema existem ficheiros (Models)
 * que modelam a base de dados.
 * A partir destes Models que o Setup cria as tabelas referentes
 * aos modulos do sistema a ser instalado.
 *
 */
class Utilizadores_Setup extends Goweb_Setup {

    /**
     * Nome do modulo
     *
     * @var string
     */
    protected $_nome       = 'Utilizadores';

    /**
     * Titulo do modulo
     *
     * @var string
     */
    protected $_titulo;

    /**
     * Modulo pertence ao menu do backoffice
     *
     * @var boolean
     */
    protected $_menu       = true;

    /**
     * Permitir inclusao de componentes
     *
     * @var boolean
     */
    protected $_componente = true;

    /**
     * Permitir pesquisa no modulo
     *
     * @var boolean
     */
    protected $_pesquisa   = false;

    /**
     * Modulo sujeito a permissoes de utilizadores
     *
     * @var boolean
     */
    protected $_permissao  = true;

    public function __construct(){
        $this->_titulo     = translate('Utilizadores');
    }

    /**
     * Este metodo adiciona os Models necessarios ao
     * setup do modulo.
     */
    public function initModels() {
        $this->addModel('Utilizadores_Model_Utilizador');
        $this->addModel('Utilizadores_Model_Perfil');
        $this->addModel('Utilizadores_Model_Pais');
    }


    /**
     * Este metodo faz uma inicializacao default dos dados necessaria
     * ao funcionamento do Modulo e/ou com intuito de
     * facilitar o Cliente.
     */
    public function initDefaultData() {
        $perfilModel = Goweb::getModelInstance('Utilizadores_Model_Perfil', 'db');
        if (!$perfilModel->find(1)){
            $perfilModel->nome = 'Utilizador';
            $perfilModel->activo = '1';
            $perfilModel->save();
        }
        $locale = goweb::registry('Zend_Locale');
        $paisModel = Goweb::getModelInstance('Utilizadores_Model_Pais', 'db');
        $config = goweb::registry('config');
        foreach ($paisModel->getLangs() as $lang) {
            $paisModel->setLang($lang);
            $paisModel->initLang();
            $locale_lang = $config->languages->{$lang};
            $paises = ($locale->getTranslationList('Territory', $locale_lang, 2));
            
            foreach ($paises as $key => $pais){
                if (!$paisModel->findBy('prefix', $key)){
                    $paisModel->reset();
                    $paisModel->prefix = $key;
                }
                $paisModel->nome = html_entity_decode($pais, ENT_COMPAT, CHARSET);
                $paisModel->save();
            }
        }
    }
}