<?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 Group.php
*
* Ce fichier contient la classe Group
*
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @link www.rooty.me
* @since 2018/05/17
* @version 0.3
* @package system_data
* @subpackage Group
* @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 de gestion des Groupes utilisateur
*
* Un groupe dans granilim peut posseder des sous groupes<br>
* Il fait hériter ses enfant de ses droit<br>
* La classe Groupe gére une entitée unique de groupe et ses élèments propres :<br>
* - un identifiant<br>
* - un identifiant de son père s'il en a un (sinon 0)<br>
* - un libelle traductible<br>
* - une icone<br>
* Cette classe est donc le référent de l'unitée de base de gestion des groupes
* @package system_data
* @subpackage Group
*/
class Group
{

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

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

/**
* @var entier
* @desc contient l'id numerique du Group 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;

/**#@-*/

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

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

/**
* "setteur" de l'attribut Id.
* @access public
* @param entier Id du Groupe
* @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 Groupe
*/
	function getIdPere()
	{
		return $this->idPere;
	}

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

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

/**
* "getteur" de l'attribut libelle (toutes les langues en XML).
* @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 Groupe
*/
	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;
	}

/**
* doload : load de l'objet de l'objet Groupe.
* @access public
* @param entier identifiant numérique du Group
* @param entier identifiant numérique du Group père
* @param chaine libelle du Group
* @param chaine icone du Group
* @param entier noeud du groupe
*/
	function doLoad($id, $idpere, $libelle, $icone)
	{
		$this->setId($id);
		$this->libelle->setSql($libelle);
		$this->setIdPere($idpere);
		$this->setIcone($icone);
	}

/**
* 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;
	}
}
?>
