PHP Classes

File: ArvorePastas_class02_ptbr.inc.class.php

Recommend this page to a friend!
  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: 17 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']) >= 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" **********

?>