Login   Register  
PHP Classes
elePHPant
Icontem

File: ArvorePastas_class02_ptbr.inc.class.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Paulo Afonso  >  Arvore Pastas  >  ArvorePastas_class02_ptbr.inc.class.php  >  Download  
File: ArvorePastas_class02_ptbr.inc.class.php
Role: Class source
Content type: text/plain
Description: This files contais the class code.
Class: Arvore Pastas
Display directory file listing as a tree
Author: By
Last change: General update in the class.
Date: 8 years ago
Size: 4,834 bytes
 

Contents

Class file image Download
<?php

/*
    +------------------------------------------+
    |  Sistema que monta árvore de diretórios  |
    +--                                      --+
    |  Sistema desenvolvido em: PHP            |
    +------------------------------------------+
    |  @access        restrict
    |
    |  @author        Paulo Afonso Alcântara
    |
    |  @contact        pauloafonsowd@hotmail.com
    |
    |  @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']) >= ) {
                
// 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) >= ) {
            
// 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" **********

?>