<?
/**
  * Classe para lidar com tabela de categorias hierarquicas adjacency
  *
  * João Vieira: No frontiers, no limits for development
  * Copyright 1999-2009 (c) João Vieira
  * http://joaovieira.com
  * @version: classe.categorias.php [2009-05-22]
  *
  */

 //classe principal
class BD_Categorias {
    /* variáveis públicas */
    var $connectDb;
    var $tabNome    = 'categorias';
    var $tabCid     = 'id';
    var $tabCpai    = 'pai';
    var $tabCnome   = 'nome';

    /* variáveis privadas */
    var $arrIndice      = 0;
    var $resSubs        = array();
    var $resCaminho     = array();
    
    //função da classe, no fundo o constructor
    function BD_Categorias ($connectDb) {
        $this->connectDb = $connectDb;
    }

    function SetOrigem ($tabOrigem) {
        $this->tabOrigem = $tabOrigem;
    }
    
    function Caminho($node) {
	$sqlStmt               = "SELECT " . $this->tabCid . ", " . $this->tabCnome . ", " . $this->tabCpai . " FROM " . $this->tabNome . " WHERE " . $this->tabCid . "='" . $node . "'";
	$resultDb              = $this->connectDb->pedido($sqlStmt);
	if ( $resultDb->rowCount() > 0 ) {
	    $rowResultDb           = $resultDb->fetch(PDO::FETCH_ASSOC);
	    if ( $rowResultDb[$this->tabCpai] != '' ) {
		$this->resCaminho[] = $rowResultDb[$this->tabCid] . "«|»" . $rowResultDb[$this->tabCnome];
		$resArr = $this->Caminho($rowResultDb[$this->tabCpai]);
		if (is_array($resArr)) $this->resCaminho[]  = array_merge($resArr);
	    }
	}
	return true;
    }
    
    function CaminhoSubs($node) {
	$sqlStmt   = "SELECT " . $this->tabCid . ", " . $this->tabCnome . " FROM " . $this->tabNome . " WHERE " . $this->tabCpai . " = '" . $node . "'";
	$resultDb  = $this->connectDb->pedido($sqlStmt);
	if ( $resultDb->rowCount() > 0 ) {
	    while($rowResultDb = $resultDb->fetch(PDO::FETCH_ASSOC)){
		$this->resSubs[]  = $rowResultDb[$this->tabCid];
		$resArr = $this->CaminhoSubs($rowResultDb[$this->tabCid]);
		if (is_array($resArr)) $this->resSubs[]  = array_merge($resArr);
	    }
	}
	return true;
    }    
    

}

?>