<?php

/**------------------------------------------------
*
* Rooty, 2018 <rooty@rooty.me>
*
*
* This software is protected by copyright, please
* read the file COPYRIGHT.
* This program is distributed in the hope that it
* will be useful, but without any warranty; without
* even the implied warranty of merchantability or
* fitness for a particular purpose. Please
* read the file LICENCE.
*
* Fichier TreeNode.php
*
* Ce fichier contient la classe TreeNode
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2018/05/17
* @version 0.3
* @package system_data
* @subpackage TreeNode
* @copyright Copyright &copy; 2009-2018, Rooty
*/

#####################################################################################################
################################# Parametrage
#####################################################################################################
/**
* declaration du system... si cette variable n'est pas définie, les fichier inclus ne marche pas...
* cette variable est déclarée sur la page d'execution du script.
* <p> if ( !defined('SYSTEM_IN') )
* {
* die("Hacking attempt");
* }</p>
*/
if ( !defined('SYSTEM_IN') )
{
 die("Hacking attempt");
}

/**
* Classe TreeNode
*
* Classe de gestion des TreeNodes<br>
*
* @package system_data
* @subpackage TreeNode
*/
class TreeNode extends Tree
{

/**
*Constructeur de la classe TreeNode
*<p>Initialise la classe TreeNode</p>
* @access public
*/
	function __construct()
	{
		parent::__construct();
	}

/**
* getAllIdForNavigationId : retourne un tableau avec tous les des noeuds de naviagtion possible
*
* @access public
* @return tableau
*/
	function getAllIdForNavigationId($id)
	{
		$tab=$this->getFatherArray();

		for ($i=0; $i<count($this->tabSon); $i++)
		{
			if ($this->tabSon[$i]->getId()==$id)
			{
				$tab[]=$this->tabSon[$i]->getId();
				$currentNode=$this->tabSon[$i];

				/* recuperation des pere du tab */
				while ($currentNode->getIdPere()!=$this->id)
				{
					$find=false;

					for ($j=0; $j<count($this->tabSon); $j++)
					{
						if ($this->tabSon[$j]->getId()==$currentNode->getIdPere())
						{
							$find=true;
							$currentNode=$this->tabSon[$j];
							$tab[]=$currentNode->getId();
						}
					}

					if ($find=false)
					{
						$classe="TreeNode";
						$message="Erreur dans TreeNode";
						addError(2,$classe,$message, __line__, __file__);
						break;
					}
				}
				return $tab;
			}
		}
		return $tab;
	}

/**
* getLibelleFromNode: retourne le nom du Noeud
*
* @param identifiant du Node
* @access public
* @return chaine
*/
	function getLibelleFromNode($id, $langue)
	{
		return parent::getLibelleFromNode($id, $langue);
	}

/**
* getDomainFromNode: retourne le fqdn du Noeud
*
* @param identifiant du Node
* @access public
* @return chaine
*/
	function getDomainFromNode($id)
	{
		return parent::getDomainFromNode($id);
	}

/**
* getTemplateFromNode: retourne le nom de la template pour un noeud
*
* @param identifiant du Node
* @access public
* @return chaine
*/
	function getTemplateFromNode($id)
	{
		$template="";

		for ($i=0; $i<count($this->tabFather); $i++)
		{
			if ($this->tabFather[$i]->getId()==$id)
			{
				$template=$this->tabFather[$i]->getTemplate();

				if ($template!="")
				{
					return $template;
				} else {
					if ($this->tabFather[$i]->getIdPere()!=0)
						return $this->getTemplateFromNode($this->tabFather[$i]->getIdPere());
					else
						return "default";
				}
			}
		}

		for ($i=0; $i<count($this->tabSon); $i++)
		{
			if ($this->tabSon[$i]->getId()==$id)
			{
				$template=$this->tabSon[$i]->getTemplate();
				if ($template!="")
				{
					return $template;
				} else {
					if ($this->tabSon[$i]->getIdPere()!=0)
						return $this->getTemplateFromNode($this->tabSon[$i]->getIdPere());
					else
						return "default";
				}
			}
		}
		$classe="TreeNode";
		$message="Erreur de l'id ".$id;
		addError(2,$classe,$message, __line__, __file__);
		return "";
	}
}
?>
