<?php
include_once("MysqlDB.php" );
class CategorieTree {
private $id;
private $parent;
private $designation;
private $description;
private $enfants =
array();
private $niveau;
private $visible = false;
public function __construct($_id = 0, $_niveau = 0){
$this->id = (int)$_id;
$this->niveau = $_niveau;
if ($_id == 0){
$this->parent = NULL;
$this->designation = 'root';
$this->description = NULL;
}
else{
$query = MysqlDB::requete("SELECT * FROM categorie WHERE categorie.id = $_id" );
$this->parent = (int)$row['parent'];
$this->designation = $row['designation'];
$this->description = $row['description'];
}
$query = MysqlDB::requete("SELECT categorie.id FROM categorie WHERE categorie.parent = $_id" );
$this->enfants[] = new CategorieTree($row['id'], $_niveau+1);
}
public function affiche($_url, $_ulClass = "", $_tout = false){
if ($this->visible || $_tout){
echo "<ul class=$_ulClass'" .
$this->niveau .
"'>\n";
if ($this->id != 0)
echo '<li><a href="' .
$_url .
$this->id .
'">' .
$this->designation .
"</a></li>\n";
foreach ($this->enfants as $tree)
$tree->affiche($_url, $_ulClass, $_tout);
}
}
public function ouvrir($_id = 0){
$this->ouvrir_enfants($this->parents($_id),1);
}
public function ouvrir_enfants($_parents, $_cpt){
$this->visible = true;
foreach ($this->enfants as $cat){
$cat->visible = true;
if ($_cpt <
sizeof($_parents) &&
$cat->id ==
$_parents[$_cpt]) $cat->ouvrir_enfants($_parents, $_cpt+1);
}
}
private function parents($_id){
$parents[] = $_id;
while (end($parents) !=
0){ $query = MysqlDB::
requete("SELECT parent FROM categorie WHERE id=" .
end($parents) .
"" );
$parents[] = (int)$row['parent'];
}
}
}
?>