<?php
//include_once ("db/dbImagem.class.php");
include_once ("base/elemento.class.php");
include_once ("base/categoria.class.php");
include_once ("base/lista.class.php");
include_once ("include/utils.inc.php");

class user extends elemento{
	
	var $idCat=1;
	
	function user() {  }

    function enviarMail($nome, $mail, $login, $password) {
		$quebra="\r\n";
		$subject="Actualizar dados de utilizador";
		$from="";
		$texto="Caro(a) $nome $quebra";
		$texto.="O seu registo no site SITE encontra-se activo $quebra";
		$texto.="O seu login é: $login $quebra";
		$texto.="A sua password é: $password $quebra";
		$texto.="Por favor complete os seus dados pessoais fazendo login em: $quebra";
		$texto.="http://www.farmaciainternacional.pt $quebra";
	
		mail($mail, $subject, $texto, $from);

	return 0;
	}
    
    function isLogin($login){
    	if (empty($login)){parent::novo(0); exit;}
		$db= new dbElemento;		
		if ($db->getLinhaCampo($this->tipo,"login", $login )) return true;
		return false;
	}
	
	function gerarPassword($word) {
		srand((double)microtime()*1000000); 
		$temppass = md5($word . rand(0,9999999)); 
		$mypassword=substr($temppass, 1, 8);
		return $mypassword; 
	}

function testaPasswordNova(){
		$password1=$this->req['password1'];	
		$password2=$this->req['password2'];	
	
		if (empty($password1) && empty($password2)){
			set_msg("Campos password vazios.<br> Vai ser gerada uma password que depois tem de ser mudada.<br><br>");
			/*print "<br>Aviso: Campos password vazios .<br> " .
					"Vai ser gerada uma password que depois tem de ser mudada.<br><br>";*/
			
			$password1=$this->gerarPassword($this->req['login']);
			$password2=$password1;
		}else {
			if ($password1!=$password2){
				set_msg("Campos password diferentes .<br>A password não será mudada.<br><br>");
				/*print "Aviso :Campos password diferentes .<br> " .
					"A password nao sera mudada.<br><br>";*/
				return false;
			}
		}
		//$this->enviarMail($this->req['nome'], $this->req['email'], $this->req['login'], $password1);
		return md5($password1);	
	}
	
    function testaPasswordEdit($id){
    	$db= new dbElemento;
    	$password1=$this->req['password1'];	
		$password2=$this->req['password2'];	
    
    	if (empty($password1) && empty($password2)){
    		set_msg("Campos password vazios.<br>A password não será mudada.<br><br>");
			/*print "<div class='avisoPassword'><br>Aviso: Campos password vazios .<br> " .
					"A password não será mudada.<br><br></div>";*/			
			$linha = $db->getLinha($this->tipo, $id);				
			return $linha['password'];
		}
		else if ($password1!=$password2){
			set_msg("Campos password diferentes.<br> A password não será mudada.<br><br>");
			/*print "<div class='avisoPassword'>Aviso :Campos password diferentes .<br> " .
					"A password nao sera mudada.<br><br></div>";*/
			return false;
		}	
		//$this->enviar_mail($nome, $email, $login, $password1);
		return md5($password1);
    }
    
	function guardar($id=""){
		$this->req['idCat']=$this->idCat;
	
		if ($id){
			if (!($this->req['password']=$this->testaPasswordEdit($id))) exit;
		}
		else{
			if ($this->isLogin($this->req['login'])) exit;
			if (!($this->req['password']=$this->testaPasswordNova())) exit;
		}
		$novoTema = $this->req['idTema'];
		parent::guardar($id);

		if($this->req['oldtema'] != $novoTema){
			?><script>window.location.reload(true);</script><?
		}		
	}
   	
/*	function guardarNovo(){
		$this->req['idCat']=$this->idCat;
		if ($this->isLogin($this->req['login'])) exit;
		if (!($this->req['password']=$this->testaPasswordNova())) exit;
		parent::guardarNovo();
	}
	
	function guardarEdit($id){
		$this->req['idCat']=$this->idCat;
		if (!($this->req['password']=$this->testaPasswordEdit($id))) exit;
		parent::guardarEdit($id);
	}
*/
    	
	function editar($id="") {
        $db= new dbElemento;

        if(!testaUser($id))
        	$this->listar();
        
        $linha = @$db->getLinha($this->tipo, $id);
		$f= new form($id, $linha , $this->req);
		$f->toolbars();
		$f->titulo("Utilizadores / ",1);
		$f->campoTexto("Login","login", "required" );
		/*if ($id) {
			$f->mudaPassword($id);
		} else {*/
		$f->campoPassword("Password","password1");
		$f->campoPassword("Confirme Password","password2");
		//}
		$f->campoValor("id_grupo",1);
		$f->campoValor("idCat",1);
		$f->campoValor("admin",1);
		$f->campoTexto("Nome","nome");
		$f->campoTexto("Email","email");
		$f->campoTexto("Telefone","telefone");
		$f->campoTexto("Fax","fax");
		
		if($_SESSION['authdata']['super'])
			$f->campoSimNao("Pode Aprovar", "super", 0);
		
		if($this->req['pref']){
			$sql="select * from tema";
			$temas = $db->get($sql);

			$f->campoValor("pref", $this->req['pref']);
			$f->campoValor("oldtema", $linha['idTema']); //so para fazer o refresh no guardar
			
			$f->campoSeleccao2("Tema", 'idTema', $temas,"id","nome",$linha['idTema']);
		}
		$f->campoSimNao("Usar Repositorio", "repositorio");
		//$f->campoSimNao("Activo", "activo", 0);
		if ($id) {
			$f->label("","Para mudar a password insira os dois campos. Caso não queira mudar deixe em branco.<br>");
		}		
		$f->mostra();
    }

	function listar() {
        $campos=array("Nº"=>"id","login"=>"login","Nome"=>"nome");
        
        $db= new dbElemento;
        
        $dados=$db->getLista($this->tipo, $this->idCat, $campos , "login", $this->req['ordem'] ,$this->req['offset'], $this->req['limit'], $this->req['procurar'], $this->req['filtro'] );
        $this->req['total']=$db->getTotal($this->tipo, $this->idCat , $this->req['procurar'], $this->req['filtro']);
                
        $f= new lista($campos, $dados, $this->req);
		//$f->toolbars();
		$toolbar= new toolbar(); 
		$toolbar->botao_l("Novo");
		$toolbar->botao2_l("Apagar");
		$toolbar->ini();
		$toolbar->nav($this->req['offset'], $this->req['limit'], $this->req['total']);
		$toolbar->ini();
		$toolbar->procurar($this->req['procurar']);   //mudar para campo
		$toolbar->botao("procurar", 90);
		$toolbar->fim();
		//$f->cabeca();
		$f->titulo("Utilizadores / ");
		$f->cabecaSimples("Logs");
        //$f->filtros();
        //$f->tabela(false, true);
        
		if ($_SESSION['authdata']['id'] == 1)
			$f->tabela(false, true, true, 2, true,'log', 'idUser', '', "Ver log");
		else
			$f->tabela(false, false, false,2);
		$f->mostra();
	
    }


}
?>
