<?php

Goweb::loadClass('Goweb_Db_Model');

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

    /**
     * Nome da Tabela
     *
     * @var string
     */
    protected $_table = 'sistema_perfil';

    /**
     * Chave Primaria
     *
     * @var string
     */
    protected $_primary = 'id';

    /**
     * Campo que sera retornado se um
     * echo do objecto for chamado
     *
     * @var string
     */
    protected $_toString = 'nome';


    /**
     * Metodo obrigatorio. Informa a definicao da tabela
     * referente ao Model em questao.
     */
    protected function _setup() {
        $this->id = $this->Auto();
        $this->nome = $this->Char(array('maxlength' => 50, 'notnull' => true));
        $this->superuser = $this->Boolean(array('default' => '0', 'show' => false));
        $this->paginas_sistema = $this->Boolean(array('default' => '0', 'label' => 'P&aacute;ginas de Sistema', 'help' => 'Acesso &agrave;s p&aacute;ginas de sistema'));
        $this->activo = $this->Boolean(array('default' => '1'));
        $this->actualizado = $this->Datetime(array('on_update' => '_currentDatetime', 'label' => 'Actualizado em'));
        $this->criado = $this->Datetime(array('on_insert' => '_currentDatetime', 'label' => 'Criado em'));
        $this->ip = $this->IpAddress(array('on_update' => '_remoteAddress'));
        $this->hasMany('Sistema_Model_Utilizador', 'perfil_id');
        $this->hasMany('Sistema_Model_Permissao', 'perfil_id');
    }

    /**
     * Devolve todos os utilizadores com excepcao do superuser
     *
     * @return Goweb_Db_Model_Rowset
     */
    public function fetchAll($cols = null) {
        if (Goweb::registry('session')->utilizador['perfil']['superuser'] == '0') {
            $this->where($this->_table . '.superuser<>?', '1');
        }
        return parent::fetchAll($cols);
    }
}