<?php
/**
* $Id$
* $Log$
*/
/****************************************************************************************
*
* La classe suivante sert à générer l'explorateur
* Interface:
* ExplorePage(String $pwd, String $head, String $body, Array $argv) Constructeur
* boolean makeHtmlHeader()
* boolean makeHtmlBody()
*
***************************************************************************************/
Class ExplorePage extends AbstractPage
{
/** Répertoire courant */
var $_pwd = "";
/** Tables des Répertoires */
var $_folders = array();
/**
* Constructeur de la classe
* @param $pwd répertoire de travail
* @param $head paramètre de l'en-tete
* @param $head paramètre du corps de page
* @param $argv argument de l'URL
*/
function ExplorePage($pwd, $body = false, $argv = false)
{
parent::AbstractPage(MyNAME . ":Explore", $body, $argv);
$this->_pwd = $pwd;
$this->makeFoldersTable();
}/* Explore() */
/**
* Génère le corps de la page html
*/
function makeHtmlBody()
{
if(!parent::makeHtmlBody())
return(false);
// Arborecsence sous jacente
$v = $this->folderTree($this->_pwd);
for($i = 0; $i < count($v); $i++)
{
$this->_body->assign("param", $v[count($v) - $i - 1]->getParams());
$this->_body->assign("indent", $i * 5);
$this->_body->parse("main.tree_item");
}
// Liste des répertoires
reset($this->_folders);
while(list($k, $v) = each($this->_folders))
{
$this->_body->assign("param", $v->getParams());
$this->_body->parse("main.folder_item");
}
$this->_body->parse("main");
$this->_body->out("main");
return(true);
}/* makeHtmlBody() */
/**
* Construit la liste des répertoires
*/
function makeFoldersTable()
{
$realpath = BASE_dir . $this->_pwd;
$mydir = opendir($realpath);
while($entry = readdir($mydir))
{
switch($entry)
{
// Entré à exclure
case ".":
case "..":
case "RCS":
break;
// Le reste
default:
if($entry[0] == ".")
break;
if(is_dir("$realpath/$entry"))
$this->_folders[$entry] = new xFolder($entry, $this->_pwd);
}
}
closedir($mydir);
}/* makeFoldersTable() */
/**
* Construire l'arborescence d'un chemin
* @param $path répertoire à lire
* @return Table
*/
function folderTree($path)
{
while($path != "/")
{
$list[] = new xFolder (basename($path), dirname($path), array("status" => "open"));
$path = dirname($path);
}
$list[] = new xFolder("/", "/", array("status" => "root"));
return($list);
}/* folderTree() */
}/* Class ExplorePage */
?>