<?php

// $Id$

class treeview {
  private $type;
  private $content = '';
  private $icons = '';
  private $id = NULL;
  private $children = array();
  
  function __construct($content, $type = NULL, $icons = NULL, $id = NULL) {
    $this->type = $type;
    $this->content = $content;
    $this->id = $id;
    $this->icons = $icons;
  }
  
  function buildTree($class = NULL, $includeul = TRUE) {
    $ret = '';
    if ($includeul)
      $ret .= '<ul ' . ($this->id != NULL ? 'id="'. $this->id .'"' : '') . ($class != NULL ? 'class="'. $class .'"' : '') .'>';
    $ret .= '<li>';
    if ($this->type != NULL) {
      $ret .='<span class="'. $this->type .'">';
    }
    $ret .= $this->content;
    if ($this->type != NULL) {
      $ret .= '</span>';
    }
   
    $ret .= $this->icons;
   
    if (count($this->children) > 0) {
      if ($includeul)
        $ret .= '<ul>';
      else
        $ret .= '<ul '. ($this->id != NULL ? 'id="' . $this->id .'"' : '') .'>';
        foreach ($this->children as $tree) {
          $ret .= $tree->buildTree(NULL, FALSE);
        }
        $ret .= '</ul>';
    }
    $ret .= '</li>';
    if ($includeul)
      $ret .= '</ul>';
      
    return $ret;
  }
  
  function addChild($content, $type = 'file', $icons = NULL, $id = NULL) {
    $tree = (is_object($content) && get_class($content) == 'treeview') ? $content : new treeview($content, $type, $icons, $id);
    $this->children[] = $tree;
    return $tree;
  }
}