<?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 Node.php
*
*Ce fichier contient la classe Node
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2018/05/17
* @version 0.3
* @package system_data
* @subpackage Node
* @copyright Copyright &copy; 2004-2005, ARD Limousin
*/

#####################################################################################################
################################# 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 Noeud
*
* <P>Classe de gestion des Noeuds de l'arborescence</P>
*
* @package system_data
* @subpackage Node
*/
class Node
{

/**#@+ 
* @access private
*/

/**
* @var entier
* @desc contient l'id numerique du Noeud
*/
var $id = null; 

/**
* @var entier
* @desc contient l'id numerique du Node parent (null si il n'y a pas de père)
*/
var $idPere = null; 

/**
* @var chaine
* @desc chaine multilangue
*/
var $libelle = null;

/**
* @var chaine
* @desc chaine nom de l'image
*/
var $icone 	 = null;

/**
* @var chaine
* @desc chaine nom de l'image
*/
var $template= null;

/**
* @var chaine
* @desc chaine fqdn
*/
var $domain= null;

/**
* @var chaine
* @desc chaine fqdn
*/
var $haspublic= 0;

/**
* @var chaine
* @desc chaine community type
*/
var $ctype= 'default';

/**
* @var chaine
* @desc chaine community type
*/
var $ctypereg= null;

/**
* @var chaine
* @desc chaine community type
*/
var $usergroupid= 0;

/**
* @var chaine
* @desc chaine community type
*/
var $subsgroupid= 0;

/**
* @var chaine
* @desc chaine community type
*/
var $subsgrouptempid= 0;

/**
* @var chaine
* @desc chaine community type
*/
var $mailnode= null;

/**#@-*/

/**
* Constructeur de la classe Node PHP5
* <p>Initialise la classe Node</p>
* @access public
*/
	function __construct()
	{
		$this->id	=null;
		$this->idPere	=null;
		$this->libelle	=new XLangueChaine("");		# Chaine multilangue
	}

/**
* "getteur" de l'attribut Id.
* @access public
* @return entier Id du Noeud
*/
	function getId()
	{
		return $this->id;
	}

/**
* "setteur" de l'attribut Id. 
* @access public
* @param entier Id du Noeud
* @return booleen
*/
	function setId($id)
	{
		if (!is_numeric($id))
			return false;

		$this->id=$id;
		return true;
	}

/**
* "getteur" de l'attribut icone
* @access public
* @return chaine nom de l'icone dans la BD
*/
	function getIcone() 
	{
		return $this->icone;
	}

/**
* "setteur" de l'attribut icone 
* @access public
* @param chaine nom de l'icone dans la BD
* @return booleen
*/
	function setIcone($icone)
	{
		if (!is_string($icone))	
			return false;

		$this->icone=$icone;
		return true;
	}

/**
* "getteur" de l'attribut IdPere. 
* @access public
* @return entier IdPere du Noeud
*/
	function getIdPere() 
	{
		return $this->idPere;
	}

/**
* "setteur" de l'attribut IdPere. 
* @access public
* @param entier IdPere du Noeud
* @return booleen
*/
	function setIdPere($idPere)
	{
		if (!is_numeric($idPere))
			return false;

		$this->idPere=$idPere;
		return true;
	}

/**
* "getteur" de l'attribut libelle. 
* @access public
* @return chaine XML
*/
	function getXmlLibelle()
	{
		return $this->libelle->getSql();
	}

/**
* "getteur" de l'attribut libelle. 
* @access public
* @param chaine langue à récupérer
* @return chaine libelle du Noeud
*/
	function getLibelle($langue)
	{
		return $this->libelle->getLanguage($langue);
	}

/**
* "setteur" de l'attribut libelle. 
* @access public
* @param chaine langue pour le libellé à insérer
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setLibelle($langue, $libelle)
	{
		$this->libelle->setLanguage($langue, $libelle);
		return true;
	}

/**
* "getteur" de l'attribut template. 
* @access public
* @param chaine langue à récupérer
* @return chaine libelle du Noeud
*/
	function getTemplate()
	{
		return $this->template;
	}

/**
* "setteur" de l'attribut template.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setTemplate($string)
	{
		$this->template=$string;
		return true;
	}

/**
* "getteur" de l'attribut domain. 
* @access public
* @return chaine libelle du Noeud
*/
	function getDomain()
	{
		return $this->domain;
	}

/**
* "setteur" de l'attribut domain.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setDomain($fqdn)
	{
		$this->domain=$fqdn;
		return true;
	}

/**
* "getteur" de l'attribut landing. 
* @access public
* @return chaine libelle du Noeud
*/
	function getHasPublic()
	{
		return $this->haspublic;
	}

/**
* "setteur" de l'attribut domain.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setHasPublic($haspublic)
	{
		$this->haspublic=$haspublic;
		return true;
	}

/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getCType()
	{
		return $this->ctype;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setCType($ctype)
	{
		$this->ctype=$ctype;
		return true;
	}

/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getCTypereg()
	{
		return $this->ctypereg;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setCTypereg($ctypereg)
	{
		$this->ctypereg=$ctypereg;
		return true;
	}
	
/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getUserGroupId()
	{
		return $this->usergroupid;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setUserGroupId($usergroupid)
	{
		$this->usergroupid=$usergroupid;
		return true;
	}
	
/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getSubsGroupId()
	{
		return $this->subsgroupid;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setSubsGroupId($subsgroupid)
	{
		$this->subsgroupid=$subsgroupid;
		return true;
	}

/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getSubsGroupTempId()
	{
		return $this->subsgrouptempid;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setSubsGroupTempId($subsgrouptempid)
	{
		$this->subsgrouptempid=$subsgrouptempid;
		return true;
	}
	
/**
* "getteur" de l'attribut type. 
* @access public
* @return chaine type du Noeud
*/
	function getMailNode()
	{
		return $this->mailnode;
	}

/**
* "setteur" de l'attribut type.
* @access public
* @param chaine libelle (pas de code Html)
* @return booleen
*/
	function setMailNode($mailnode)
	{
		$this->mailnode=$mailnode;
		return true;
	}

/**
* doload : load de l'objet de l'objet Noeud.
*
* @access public
* @param entier identifiant numérique du Node père
* @param chaine libelle du Node
*/
	function doLoad($id, $idpere, $libelle, $icone, $template, $domain, $haspublic, $ctype, $ctypereg, $usergroupid, $subsgroupid, $subsgrouptempid, $mailnode)
	{
		$this->setId($id);
		$this->libelle->setSql($libelle);
		$this->setIdPere($idpere);
		$this->setIcone($icone);
		$this->setTemplate($template);
		$this->setDomain($domain);
		$this->setHasPublic($haspublic);
		$this->setCType($ctype);
		$this->setCTypereg($ctypereg);
		$this->setUserGroupId($usergroupid);
		$this->setSubsGroupId($subsgroupid);
		$this->setSubsGroupTempId($subsgrouptempid);
		$this->setMailNode($mailnode);
		return true;
	}

/**
* isLoaded: Verifie que l'ID est affecté
*
* <P> après un load depuis la base, l'id de l'objet est affecté, cette fonction le verifie</P>
* @access public
* @return booleen
*/
	function isLoaded()
	{
		return (is_numeric($this->id) && ($this->id != 0) ) ?true:false;
	}
}
?>
