Location: PHPKode > projects > RCS Man on the Web > RCSManager-0.2/classes/ExplorePage.php
<?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 */

?>
Return current item: RCS Man on the Web