<?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" **********
?>
|