| 
<?php
 /*
 +------------------------------------------+
 |  Sistema que monta árvore de diretórios  |
 +--                                      --+
 |  Sistema desenvolvido em: PHP            |
 +------------------------------------------+
 |  @access        restrict
 |
 |  @author        Paulo Afonso Alcântara
 |
 |  @contact        [email protected]
 |
 |  @package        WIMAJAX!
 |
 |  @version        0.1.0.0
 |
 |  @released    02.08.2006
 |
 +------------------------------------------+
 |
 | -> Esta classe é de uso livre, mas deve-se manter os créditos do autor(estão logo acima)
 | e deixar versões baseadas/derivadas desta para uso livre.
 |
 | -> Ainda não testada em PHP 5x. Se você é um usuário autorizado e quizer testar no PHP 5x,
 | por favor me informe como este sistema se sai nesta nova versão do PHP.
 |
 | -> Se você leu até aqui, obrigado.  :)
 |
 +------------------------------------------+
 */
 
 /*
 +-- Este arquivo: --+
 |
 | @name        ArvorePastas_class02_ptbr.inc.class.php
 |
 | -> Este arquivo contém uma classe que cria uma árvore de diretórios.
 |
 +-------------------+
 */
 
 // ********** COMEÇO DA CLASSE "ArvorePastas" **********
 class ArvorePastas{
 
 // Este é o construtor da classe
 function ArvorePastas($diretorio="",$html="",$ini="nu",$dif="nu") {
 $this->diretorio = $diretorio;
 $this->nivel = -1;
 $this->barra = DIRECTORY_SEPARATOR;
 $this->html = $html;
 $this->ini = $ini;
 $this->dif = $dif;
 if ( !empty($this->diretorio) ) {
 $this->LerPasta($this->diretorio,$this->nivel);
 } else {
 return false;
 }
 }
 
 // Esta função lê o diretório passado no parâmetro $nome_dir
 function LerPasta($nome_dir="",$nivel) {
 
 if ( !empty($nome_dir) ) {
 
 // O Diretorio especificado é aberto com extensão DIR do php
 $grupo = dir($nome_dir) or die("Erro: Diretório solicitado inexistente!");
 
 // Inicia um contador/iterador em zero(que é o número padrao inicial em arrays no php)
 $i_g = 1;
 
 $lista_grupo = Array();
 
 // Lê arquivo por arquivo o diretório especificado
 while (false !== ($grupo_file = $grupo->read())) {
 if( $grupo_file != "." and $grupo_file != ".." and is_dir($nome_dir . $this->barra . $grupo_file) ) {
 $lista_grupo['abs'][$i_g] = $nome_dir . $this->barra . $grupo_file;
 $lista_grupo['rel'][$i_g] = $grupo_file;
 $lista_grupo['niv'][$i_g] = $nivel + 1;
 $i_g++;
 }
 }
 $grupo->close();
 
 // Verifica se a variável que retorna o array com os diretórios e níveis está do modo esperado
 if ( isset($lista_grupo['rel']) and isset($lista_grupo['abs']) and is_array($lista_grupo['abs']) and count($lista_grupo['abs']) >= 1 ) {
 // Chama a função que monta a árvore com os diretórios com base nos seus respectivos níveis
 $this->ExibePasta($lista_grupo['abs'],$lista_grupo['rel'],$lista_grupo['niv']);
 return "Diretório lido com sucesso.";
 } else {
 return "Erro na leitura dos dados.";
 }
 
 } else {
 
 return "Erro na leitura dos dados.";
 
 }
 
 }
 
 // Função que monta e exibe a árvore de diterótios com base nos seus respectivos níveis
 function ExibePasta($caminho_dir=0, $nome_dir=0, $nivel_dir=0) {
 
 if ( is_array($caminho_dir) and is_array($nome_dir) and is_array($nivel_dir) and count($caminho_dir) >= 1 ) {
 // Inicia um iterador para ser usado nesta função e apenas na leitura do diretório especificicado
 $i_gb = 1;
 
 while ($i_gb <= count($caminho_dir)) {
 if ( $this->ini == 'pdr' ) {
 echo 'Nível do diretório: ' . $nivel_dir[$i_gb] . ' ';
 } else if ( $this->ini != 'nu' ) {
 $newini = str_replace ("{nome}", $nome_dir[$i_gb], $this->ini);
 $newini = str_replace ("{nivel}", $nivel_dir[$i_gb], $this->ini);
 echo $newini;
 unset($newini);
 }
 if ( $this->dif == 'pdr' ) {
 for ($i=$nivel_dir[$i_gb]; $i > 0; $i--) {
 echo '_';
 }
 } else if ( $this->dif != 'nu' ) {
 for ($i=$nivel_dir[$i_gb]; $i > 0; $i--) {
 echo $this->dif;
 }
 }
 
 // Exibe a árvore com XHTML
 if ( $this->html == "" ) {
 echo '<a href="' . $caminho_dir[$i_gb] . '" title="' . $caminho_dir[$i_gb] . '">' . $nome_dir[$i_gb] . '</a>';
 echo '<br />';
 } else {
 $newhtml = str_replace ("{caminho}", $caminho_dir[$i_gb], $this->html);
 $newhtml = str_replace ("{nome}", $nome_dir[$i_gb], $newhtml);
 $newhtml = str_replace ("{nivel}", $nivel_dir[$i_gb], $newhtml);
 echo $newhtml;
 unset($newhtml);
 }
 $this->LerPasta($caminho_dir[$i_gb],$nivel_dir[$i_gb]);
 $i_gb++;
 }
 unset($i_gb);
 return "Sucesso na realização.";
 } else {
 return "Erro na leitura dos dados.";
 }
 
 }
 
 }
 // ********** TÉMINO DA CLASSE "ArvorePastas" **********
 
 ?>
 |