<?php
include_once ("base/elemento.class.php");
//include_once ("base/toolbar.class.php");
include_once ("db/dbCategoria.class.php");
//include_once ("include/titulo/titulo.php");
include ("include/seo.php");
include_once("include/css.inc.php");
//include ("include/images/images_mod.class.php");

class categoria extends elemento{
	
    var $campos=array("Nr"=>"id","Pai"=>"idPai","Categoria"=>"categoria", "Ordem"=>"ordem");
    var $idPai;

	
	var $link="main.php?tipo=categoria";
	
	function categoria() {
        $this->tipo="categoria";
    }
    
	function novo(){
        $this->editar();
    }
	
	function guardar($id=""){
		if ($id==$_REQUEST['idPai']) {	
			?><script>alert("A categoria nao pode estar dentro dela propria...")</script><?
			$this->editar($id);
			exit;
		}


			
		if ($id)
			parent::guardar($id);
		else parent::guardar();
		/*?><script>$("#nav").load("nav.php");	</script><?*/
	}
	
	function guardarNovo(){
		$db= new dbCategoria;
		$id=$db->setInsert($this->tipo, $this->idCat, $this->req);
		

		$permalink=generate_seo_link("", $id);
		
		$sql="update categoria set permalink ='$permalink' where id='$id'" ;
		$db->set($sql);
		
		return $id;
    }
    
	function guardarEdit($id){
        $db= new dbCategoria;

        $db->setUpdate($this->tipo, $this->idCat, $this->req , $id);

        $permalink=generate_seo_link("", $id);
		
		$sql="update categoria set permalink ='$permalink' where id='$id'" ;
		$db->set($sql);
        
        $this->saveFilhos($id);
        $this->saveCatFilhos($id);

		return $id;
	}
	
	/*********************************************************************/
	function saveCatFilhos($idCat){
		$db= new dbCategoria;
		$sql="select * from categoria where idPai='$idCat'";
		$lista=$db->get($sql);
		$tam=sizeof($lista);
		for ($i=0; $i< $tam; $i++){
			$id=$lista[$i]['id'];
        	$permalink=generate_seo_link("", $id);
			if ($permalink=="/inicio/") $this->req['permalink']="/";
			$sql="update categoria set permalink ='$permalink' where id='$id'" ;
			$db->set($sql);
			
			//print "<b>subcategoria novo link : " . $permalink . "</b><br>";
			
			$this->saveFilhos($id);
			$this->saveCatFilhos($id);
		}
		
	}
	
	function saveFilhos($idCat, $tabela="artigo"){
		$db= new dbCategoria;
		$sql="select * from $tabela where idCat='$idCat'";
		$lista=$db->get($sql);
		$tam=sizeof($lista);
		for ($i=0; $i< $tam; $i++){
			$id=$lista[$i]['id'];
			$titulo=$lista[$i]['titulo'];
			$data=$lista[$i]['data'];
			$permatitulo=generate_seo_titulo($titulo);
			$permalink=generate_seo_link($permatitulo, $idCat, $data);
			
			//print "artigo novo link : " . $permalink . "<br>";
			
			$sql="update $tabela set permalink ='$permalink' where id='$id'" ;
			$db->set($sql);
			
		
		}
		
	}
	/*********************************************************************/
	
	
	function acima($id=""){
        $db= new dbCategoria;
		$db->setAcima($this->tipo, $this->req['idPai'], $id);
		set_msg("Registo movido para cima.<br>");
		?><script>	$("#nav").load("nav.php");	</script><?
		$this->listar();
	}
	
	function abaixo($id=""){
        $db= new dbCategoria;
		$db->setAbaixo($this->tipo, $this->req['idPai'], $id);
		set_msg("Registo movido para baixo.<br>");
		?><script>	$("#nav").load("nav.php");	</script><?
		$this->listar();
	}
      
	function editar($id=""){

        $d= new dbCategoria;

        $dados = @$d->getLinha($this->tipo, $id);
        $f= new form($id, $dados, $this->req);
		$f->toolbars();
		$f->titulo("Categorias \ ",1);
		
        include "config/tiposcategorias.inc.php";
        
        $f->campoSeleccao("Tipo", "tipo1", $tipos, $dados['tipo1'], "required");
		
		$idPai=$dados['idPai']?$dados['idPai']:$this->req['idPai'];

		$dados2=$d->getListaCategorias($this->tipo, $this->campos, "idPai,ordem");
		$tam=sizeof($dados2);
		
		for($i=0;$i<$tam;$i++){
			if ($dados2[$i]['id']==$dados['id']) continue;
			$list[$dados2[$i]['id']]= $this->path($dados2[$i]['id']);
		}
		$list[0]="/";
		
		$f->campoSeleccao("Categoria Acima", "idPai",$list, $idPai);       
        $f->campoTexto("Categoria","categoria", "required");
		$f->campoValor("ordem", $dados["ordem"]);
		$f->campoTexto("SEO: Palavras chave","tagpalavras");
		$f->campoTexto("SEO: Descrição","tagdescricao" );
		$f->campoSimNao("Activo", "activo", 1);
		$f->campoValor("nav",$this->req['nav']);
		?><p class="conteudoCategoria">
			<label>Conteúdo da categoria</label><a style="text-decoration: underline;" href="?tipo=<?=$dados['tipo1']?>&idCat=<?=$dados['id']?>">Ver</a>
		  </p><? 
		
		
		$f->mostra();
	}

	
	function listar($id=0){
    ?>
		<form enctype="multipart/form-data" name="dataform" action="main.php" method="post">
        <table cellspacing="0" cellpadding="2" border="0" width="100%" id="lista" class="rebordos">
        <tr>
        <td width="100%" align="left">
	<?

        //$f= new lista($campos, $dados, $this->req);
        $t= new toolbar();
		//$t->ini();
        $t->botao_l(); 
		$t->fim();
        ?>
<!--        <table cellspacing="0" cellpadding="0" border="0" width="100%" class="rebordos">-->
<!--        <tr>-->
<!--        <td class="formTitulo">Categorias</td>-->
<!--        -->
<!--        </tr>-->
<!--        </table>-->
        
        <div id="divTopoCategoriaLista" style="margin-bottom: 1px">
	        <table cellspacing="0" cellpadding="0" border="0" width="100%" >
		        <tr>
		        	<td height="28" colspan=1 class="formTitulo">&nbsp;Categorias</td>
		        </tr>
	        </table>
        </div>
        
        <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" >
		    <?
			$link="";
		    $traco="|_";
		    $nivel=0;
			$i=0;
		    echo $this->filhos(0);
		    ?>
        </table>	
        	</table>
    	</form>
    <?
    }
	
	//// funcoes da categoria recursiva

    function filhos($id=0){
        global $nivel, $link, $i, $css;
    	$d= new dbCategoria;
    	$sql = "select * from categoria where idpai=$id order by ordem";
    	$lista =  $d->get( $sql );

    	$nivel++;
    	if ($lista){
        	foreach($lista as $row	){
				
				$linha=($i++ % 2)?"1":"0";	
				$indice=$row['indice']?"(indice)":"";		
        		$link.='<tr class="linha' . $linha . '">
        					<td width=350 height=30 >' ;
        		
		        			$sql="select min(ordem) as MINTEMP, max(ordem) as MAXTEMP from " .$this->tipo ." where idPai=".$row['idPai'];
							$arrTemp=$d->get($sql);
							$minOrdem=$arrTemp[0]['MINTEMP'];
							$maxOrdem=$arrTemp[0]['MAXTEMP'];
							$link.='<div class="esq" style="margin-right:15px">';
								if($nivel>1) $style = "style='margin-left:50px'";
								if ($row['ordem']>$minOrdem){
									$link.='<a '. $style.' href="?id='.$row['id']. '&idPai='.$row['idPai'] . '&cmd=acima">
			                		<img src="images/'.$css.'/acima.gif" alt="acima" height="16" border=0/></a>';
								} else $link.='<img src="images/spacer.gif" alt="acima" height="16" border=0 />';
								
								if($nivel>1 && !($row['ordem']>$minOrdem)) $style = "style='margin-left:50px'";
								else $style = "";
								if ($row['ordem']<$maxOrdem){
									$link.='<a '. $style.' href="?id='.$row['id']. '&idPai='.$row['idPai'] . '&cmd=abaixo">
			                		<img src="images/'.$css.'/abaixo.gif" alt="abaixo" height="16" border=0 /></a>';
								} else $link.='<img src="images/spacer.gif" alt="acima" height="16" width="19" border=0/>';
								
        					$link.='</div>';
        					$link.='<div style="margin-left:'.(($nivel-1)*80).'px;">
	                					<span><img src="images/'.$css.'/'.$row['tipo1'].'.gif" border=0 /></span>
	                					<span style="vertical-align:top;"><a href="'.$this->link.'&cmd=editar&id='.$row['id'].'">'
	                					.($nivel==1?"<b>":"").$row['categoria']." $indice".($nivel==1?"</b>":"").'</a></span>
                					</div>
                			</td>
                			<td >
								<a href="'.$this->link.'&cmd=novo&idPai='.$row['id'].'" style="margin-right:5px">
									<img src="images/'.$css.'/novo16.gif" height=16 border=0 />
								</a>
                				<a href="?id='.$row['id'].'&cmd=apagar" './*onclick="return delchk()"*/"".'>
								<img src="images/'.$css.'/apagar16.gif" alt="apagar" height="16" border=0 /></a>';
				//if ($nivel>1){	
				//}
                $link.='</td><tr>';
        		$this->filhos($row['id']);
        	}
        }
    	$nivel--;
    	return $link;
    }
    
    function path($id, $cat="categoria"){
      $path="";	  		
	  	
      if ($id){
    		$sql = "select * from $cat where id=$id";
            $d= new dbCategoria;
    		$lista =  $d->get( $sql );
    		
    		
      		$path .=$this->path($lista[0]['idPai'], $cat) . $lista[0]['categoria'] ." / ";
    		
        } else $path="/";
		return $path;
    }
    
    function seo_path($id, $cat="categoria"){
      $path="";

	  	
      if ($id){
    		$sql = "select * from $cat where id=$id";
            $d= new dbCategoria;
    		$lista =  $d->get( $sql );
    		
    		
      		$path .= $this->seo_path($lista[0]['idPai'], $cat) . trim($lista[0]['categoria']) ."/";
        } else $path="/";
		return $path;
    }
	
	function getCategoriasMesmoTipo($tipo){
    		$sql = "select * from categoria where tipo1='$tipo' order by ordem";
    		//print $sql;
            $d= new dbCategoria;
    		$lista =  $d->get( $sql );
    		$tam= sizeof ($lista);
    		for ($i=0;$i<$tam;$i++){
    			$listaPath[$lista[$i]['id']]=$this->path($lista[$i]['id']);
    		}
    		return $listaPath;
    		
	}
	

}
?>
