<?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.
*
*Ce fichier contient la classe AdminEntryNode
* @author Rooty <www.rooty.me|rooty@rooty.me>
* @since 2004/06/07
* @version 0.3
* @link www.rooty.me
* @package object_coordination
* @subpackage AdminEntryNode
* @copyright Copyright &copy; 2009-2018, Rooty
*/
if ( !defined('SYSTEM_IN') )
{
die("Hacking attempt");
}

/**
* Classe AdminEntryNode
*
* classe de gestion des instance d'objets de partage
*
* @package object_coordination
* @subpackage AdminEntryNode
*/

Class AdminEntryNode extends CoordinationObj
{
/**
* actionAdmin:affichage de l'interface principale de gestion des droits utilisateurs
*<P>Permet l'affichage des objets disponibles pour l'administrateur</P>
*<P>Cette interface permet de lister,modifier et gérer les droits propres à chaque objets</P>
*<P>Note: # Cette methode se sert du fichier "message" AdminEntryNode.ini</P>
*<P>      # La variable prise en compte est "nodeId" pour le noeud d'administration</P>
*<P>      # Les nom de Classe "CoordinationObj" et Methodes peuvent être traduites!!!<BR>
*              Ajouter simplement un message dansle fichier xml AdminEntryNode portant dans Name le nom de votre classe<br>
*              (en minuscule) et le nom de votre Methode (composée de nomclasse_nommethode)
*<P>
* @access public
* @return chaine code message
*/
	function actionAdmin()
	{
        /* Ajout du fichier AdminEntryNode.ini */
		addMessageFile("adminentrynode.ini");
		
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin récupération des codes par defaut */
		
		mxPageTitle("classadminentrynode");
		
        $arrayCallCss = array();
		$arrayCallCss[] = "data/css/dataTables.bootstrap4/1.10.22/dataTables.bootstrap4.min.css";
        mxCallCss($arrayCallCss);
        
        $arrayCallJs = array();
		$arrayCallJs[] = "data/javascript/jquery.dataTables/1.10.22/jquery.dataTables.min.js";
		$arrayCallJs[] = "data/javascript/dataTables.bootstrap4/1.10.22/dataTables.bootstrap4.min.js";
        mxCallJs($arrayCallJs);

		/* On inclus la template (voir package.template.php) */
		withBlocPath("AdminEntryNode", "actionAdmin");

		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récuperation du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1; 		/* Tous les Groupes par défaut */

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		// --> recuperation du treeNode correspondant au noeud
		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		printTabTreeNode($tabTreeNode, "", "NODE", "node_id", "", "", getMessage("TxtNode"));
		/* -- Fin d'affichage des noeud d'ajout */

		/* -- Affichage des Group d'ajout */
		// --> recuperation du treeNode correspondant au noeud
		/* Creation du Tree d'admin */
		$myTreeGroup			=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($groupId);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTreeGroup) ){
			if ( $myTreeGroup->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeud
		$tabTreeGroup[0]=$myTreeGroup;		//--> treeNodeUnique....
		printTabTreeGroup($tabTreeGroup, "", "GROUP", "group_id", '', getMessage("TxtGroup"));
		/* -- Fin Affichage des groupes d'ajout */

		/* -- Affichage des Group d'ajout */
		$tabUser=$GLOBALS["SYSTEM_CONTROL"]->arrayOfAdministrableUserFromTabTreeGroup($tabTreeGroup, 0, "GROUP");
		printTabUser($tabUser, "", "USER", "user_id", '', getMessage("TxtUser"));
		/* -- Fin Affichage des groupes d'ajout */

		$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminEntryNode", "execCreateAdmin"));

		$tabUserId=array();
		for ($i=0; $i<count($tabUser); $i++)
		{
			$tabUserId[]=$tabUser[$i]->getId();
		}
		$tabGroupId=array();
		for ($i=0; $i<count($tabTreeGroup); $i++)
		{
			$tabGroupId[]=$tabTreeGroup[$i]->getId();
			$tabGroupId=array_merge($tabGroupId, $tabTreeGroup[$i]->getSonArray());
		}

		$tabId[0]=$myTree->getId();
		$tabId=array_merge($tabId, $myTree->getSonArray());

		for ($i=0; $i<count($tabId); $i++)
		{
			$tabNodeGroupUser=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->getInstanceFromNodeId($tabId[$i]);
			for ($j=0; $j<count($tabNodeGroupUser); $j++)
			{
				if ( ($tabNodeGroupUser[$j]->getGroupId()) != 0 && (is_numeric($tabNodeGroupUser[$j]->getGroupId())) )
				{
					//$Group=$GLOBALS["SYSTEM_MANAGER"]["GROUP"]->createInstance( $tabNodeGroupUser[$j]->getGroupId() );
					$Group=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance( $tabNodeGroupUser[$j]->getGroupId() );
					$tabWayTreeGroup = $Group->getFatherLibelleArray($currentCode);
					$lib=$tabWayTreeGroup[0];

					if ($lib=="")
					{
						$tabWayTreeGroup = $Group->getFatherLibelleArray($defaultCode);
					}

					$treeGroup = "";
					for($n=(count($tabWayTreeGroup)-1);$n>=0;$n--)
					{
						if($n>0)
						{
						$treeGroup .= " / ".$tabWayTreeGroup[$n];
						}
						else
						{
						$treeGroup .= " / <b>".$tabWayTreeGroup[$n]."</b>";
						}
					}
					$lib = $treeGroup;

				}else{
					$Group=new Group();
					$lib=$Group->getLibelle($currentCode);
					if ($lib=="")
					$lib=$Group->getLibelle($defaultCode);
				}

				$GLOBALS['SYSTEM_TEMPLATE']->MxText("TREE_NODE.GroupName", $lib);

				if ( ($tabNodeGroupUser[$j]->getUserId()) != 0 && (is_numeric($tabNodeGroupUser[$j]->getUserId())) )
				{
					$User=$GLOBALS["SYSTEM_MANAGER"]["USER"]->createInstance( $tabNodeGroupUser[$j]->getUserId() );
				}else{
					$User=new User();
					$User->setFirstName("");
					$User->setLastName("");
				}

				$GLOBALS['SYSTEM_TEMPLATE']->MxText("TREE_NODE.UserFirstName", $User->getFirstName() );
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("TREE_NODE.UserLastName", $User->getLastName() );

				$wayTreeNode = $GLOBALS['SYSTEM_MANAGER']['TREE_NODE']->createInstance($tabId[$i]);

				$tabFatherTreeWay = $wayTreeNode->getFatherLibelleArray($currentCode);
				$lib=$tabFatherTreeWay[0];

				if ($lib=="")
				{
					$tabFatherTreeWay = $wayTreeNode->getFatherLibelleArray($defaultCode);
				}

				$treeWay = "";

				for($n=(count($tabFatherTreeWay)-1);$n>=0;$n--)
				{
					if($n>0)
					{
						$treeWay .= " / ".$tabFatherTreeWay[$n];
					}
					else
					{
						$treeWay .= " / <b>".$tabFatherTreeWay[$n]."</b>";
					}
				}
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("TREE_NODE.NodeName", $treeWay);
				$GLOBALS['SYSTEM_TEMPLATE']->MxText("TREE_NODE.TREE_NODE_DELETE.BtnDelete", getMessage("BtnDelete"));

				if ( (in_array($tabNodeGroupUser[$j]->getGroupId(), $tabGroupId)) || (in_array($tabNodeGroupUser[$j]->getUserId(), $tabUserId)))
				{
					$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("TREE_NODE.TREE_NODE_DELETE.urlDelete", formatUrl($this->getId(), "AdminEntryNode", "deleteAdmin", "", "&nodeGroupUserId=".$tabNodeGroupUser[$j]->getId() ));
				}
				else{
					$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("TREE_NODE.TREE_NODE_DELETE", "delete");
				}
				$GLOBALS['SYSTEM_TEMPLATE']->MxBloc("TREE_NODE", "loop");
			}
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

/**
* execCreateAdmin: Enregistre le groupe dans la Bd...
*<P>Remarque: l'objet doit recevoir ses args en POST</P>
*<P>Note: cette methode se sert de $GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]</P>
* @access public
* @return chaine code Message
*/
	function execCreateAdmin()
	{
// 		var_dump($_POST);
// 		exit(0);
	
		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récuperation du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1;

		$node_id	=((isset($_POST["node_id"]) && is_numeric($_POST["node_id"]))?$_POST["node_id"]:0);
		$group_id	=((isset($_POST["group_id"]) && is_numeric($_POST["group_id"]))?$_POST["group_id"]:0);
		$user_id	=((isset($_POST["user_id"]) && is_numeric($_POST["user_id"]))?$_POST["user_id"]:0);

// 		var_dump($group_id);
// 		var_dump($user_id);
// 		var_dump($node_id);
// 		exit(0);
		
		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		// --> recuperation du treeNode correspondant au noeurd
		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		/* -- Fin d'affichage des noeud d'ajout */

		/* -- Affichage des Group d'ajout */
		/* Creation du Tree d'admin */
		$myTreeGroup			=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($groupId);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTreeGroup) ){
			if ( $myTreeGroup->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeurd
		$tabTreeGroup[0]=$myTreeGroup;		//--> treeNodeUnique....

		/* -- Affichage des Group d'ajout */
		$tabUser=$GLOBALS["SYSTEM_CONTROL"]->arrayOfAdministrableUserFromTabTreeGroup($tabTreeGroup, 0, "GROUP");
		/* -- Fin Affichage des groupes d'ajout */

		$tabUserId=array();
		for ($i=0; $i<count($tabUser); $i++)
		{
			$tabUserId[]=$tabUser[$i]->getId();
		}
		$tabGroupId=array();
		for ($i=0; $i<count($tabTreeGroup); $i++)
		{
			$tabGroupId[]=$tabTreeGroup[$i]->getId();
			$tabGroupId=array_merge($tabGroupId, $tabTreeGroup[$i]->getSonArray());
		}

		$tabId[0]=$myTree->getId();
		$tabId=array_merge($tabId, $myTree->getSonArray());

		if ( (in_array($node_id, $tabId))  && ( (in_array($group_id, $tabGroupId)) || (in_array($user_id, $tabUserId))))
		{
			$NodeGroupUser=new NodeGroupUser();
			$NodeGroupUser->setUserId($user_id);
			$NodeGroupUser->setGroupId($group_id);
			$NodeGroupUser->setNodeId($node_id);
			$NodeGroupuser=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->insertInstance($NodeGroupUser);
			$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();

			systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "msgSave"));
			return "";
		}else{
			systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
			return "";
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

/**
* deleteAdmin:fonction de mise à jour des groups
* @access public
* @return chaine code Message
*/
	function deleteAdmin()
	{
        /* Ajout du fichier AdminEntryNode.ini */
		addMessageFile("adminentrynode.ini");
		
		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin récupération des codes par defaut */
		
		mxPageTitle("classadminentrynode");
		
		/* On inclus la template (voir package.template.php) */
		withBlocPath("AdminEntryNode", "deleteAdmin");

		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récuperation du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1;
		$nodeGroupUserId=(isset($_GET["nodeGroupUserId"]) && is_numeric($_GET["nodeGroupUserId"]))?$_GET["nodeGroupUserId"]:0;

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		/* Creation du Tree d'admin */
		$myTreeGroup			=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($groupId);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTreeGroup) ){
			if ( $myTreeGroup->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeurd
		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		$tabTreeGroup[0]=$myTreeGroup;		//--> treeNodeUnique....

		/* -- Affichage des Group d'ajout */
		$tabUser=$GLOBALS["SYSTEM_CONTROL"]->arrayOfAdministrableUserFromTabTreeGroup($tabTreeGroup, 0, "GROUP");
		/* -- Fin Affichage des groupes d'ajout */

		$tabUserId=array();
		for ($i=0; $i<count($tabUser); $i++)
		{
			$tabUserId[]=$tabUser[$i]->getId();
		}
		$tabGroupId=array();
		for ($i=0; $i<count($tabTreeGroup); $i++)
		{
			$tabGroupId[]=$tabTreeGroup[$i]->getId();
			$tabGroupId=array_merge($tabGroupId, $tabTreeGroup[$i]->getSonArray());
		}

		$tabId[0]=$myTree->getId();
		$tabId=array_merge($tabId, $myTree->getSonArray());

		if ($nodeGroupUserId!=0)
		{
			$NodeGroupUser=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->createInstance($nodeGroupUserId);

			if ( ($NodeGroupUser->getGroupId()) != 0 && (is_numeric($NodeGroupUser->getGroupId())) )
			{
				$Group=$GLOBALS["SYSTEM_MANAGER"]["GROUP"]->createInstance( $NodeGroupUser->getGroupId() );
			}else{
				$Group=new Group();
			}
			$lib=$Group->getLibelle($currentCode);
			if ($lib=="")
				$lib=$Group->getLibelle($defaultCode);

			$GLOBALS['SYSTEM_TEMPLATE']->MxText("GroupName", $lib);
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("GroupName", "text", "GroupName", $lib, "class=\"form\" readonly");

			if ( ($NodeGroupUser->getUserId()) != 0 && (is_numeric($NodeGroupUser->getUserId())) )
			{
				$User=$GLOBALS["SYSTEM_MANAGER"]["USER"]->createInstance( $NodeGroupUser->getUserId() );
			}else{
				$User=new User();
				$User->setFirstName("");
				$User->setLastName("");
			}

			$GLOBALS['SYSTEM_TEMPLATE']->MxText("UserName", $User->getLastName()." ".$User->getFirstName() );
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("UserName", "text", "UserName", $User->getLastName()." ".$User->getFirstName(), "class=\"form\" readonly");

			$lib=$myTree->getLibelleFromNode($NodeGroupUser->getNodeId(), $currentCode);
			if ($lib=="")
				$lib=$myTree->getLibelleFromNode($NodeGroupUser->getNodeId(), $currentCode);

			$GLOBALS['SYSTEM_TEMPLATE']->MxText("NodeName", $lib);
			$GLOBALS["SYSTEM_TEMPLATE"]->MxFormField("NodeName", "text", "NodeName", $lib, "class=\"form\" readonly");

			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlAction", formatUrl($this->getId(), "AdminEntryNode", "execDeleteAdmin", "", "&nodeGroupUserId=".$NodeGroupUser->getId() ));
			$GLOBALS['SYSTEM_TEMPLATE']->MxAttribut("urlActionReturn", formatUrl($this->getId(), "AdminEntryNode", "actionAdmin"));

		}else{
			systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "WrongArgument"));
			return "";
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

/**
* execDeleteAdmin:fonction de mise à jour des groups
* @access public
* @return chaine code Message
*/
	function execDeleteAdmin()
	{
		/* Récupération de toutes les langues actives */
		$tab=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createLanguageList();

		/* Récuperation du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1;
		$nodeGroupUserId=(isset($_GET["nodeGroupUserId"]) && is_numeric($_GET["nodeGroupUserId"]))?$_GET["nodeGroupUserId"]:0;

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeId);

		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}

		/* gestion du lib en fonction de la langue courante */
		$currentCode=$GLOBALS["SYSTEM_USER_SESSION"]->langue->getCode();
		$defaultCode=$GLOBALS["SYSTEM_DEFAULT_LANGUAGE_CODE"];
		/* -- fin récupération des codes par defaut */

		/* Creation du Tree d'admin */
		$myTreeGroup			=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($groupId);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTreeGroup) ){
			if ( $myTreeGroup->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeurd
		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		$tabTreeGroup[0]=$myTreeGroup;		//--> treeNodeUnique....

		/* -- Affichage des Group d'ajout */
		$tabUser=$GLOBALS["SYSTEM_CONTROL"]->arrayOfAdministrableUserFromTabTreeGroup($tabTreeGroup, 0, "GROUP");
		/* -- Fin Affichage des groupes d'ajout */

		$tabUserId=array();
		for ($i=0; $i<count($tabUser); $i++)
		{
			$tabUserId[]=$tabUser[$i]->getId();
		}
		$tabGroupId=array();
		for ($i=0; $i<count($tabTreeGroup); $i++)
		{
			$tabGroupId[]=$tabTreeGroup[$i]->getId();
			$tabGroupId=array_merge($tabGroupId, $tabTreeGroup[$i]->getSonArray());
		}

		$tabId[0]=$myTree->getId();
		$tabId=array_merge($tabId, $myTree->getSonArray());

		if ($nodeGroupUserId!=0)
		{
			$NodeGroupUser=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->createInstance($nodeGroupUserId);

			if ( (in_array($NodeGroupUser->getNodeId(), $tabId))  && ( (in_array($NodeGroupUser->getGroupId(), $tabGroupId)) || (in_array($NodeGroupUser->getUserId(), $tabUserId))))
			{
				$NodeGroupuser=$GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]->deleteInstance($NodeGroupUser);
				$GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]->emptyCache();

				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "msgDelete"));
				return "";
			}else{
				systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "wrongArgument"));
				return "";
			}
		}else{
			systemRedirect(formatUrl($this->getId(), "AdminEntryNode", "actionAdmin", "WrongArgument"));
			return "";
		}
		/* Sortie de la Template */
		exitBloc();
		return "";
	}

#######################################################################################################################################
### Parametrage de l'instance!!!
#######################################################################################################################################
#### On surcharge
###### ici les methodes de CoordinationObj pour avoir un form permettant de saisir la racine de fonctionnement de l'objet
/**
* Surcharge des methodes de la classe CoordinationObjet
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		addMessageFile("object.ini");

		$end=parent::configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);

		// On affiche en plus la liste des noeud et des groupes paramétrables
		/* Récuperation du noeud à administrer sinon noeud d'entrée de l'admin */
		$nodeId=($this->getData("nodeId")!="")?$this->getData("nodeId"):eid();
		$tabForbidden=(is_array($this->getData("tabForbidden")))?$this->getData("tabForbidden"):array();
		$groupId=($this->getData("groupId")!="")?$this->getData("groupId"):1; 		/* Tous les Groupes par défaut */

		/* Creation du Tree d'admin */
		$myTree			=$GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]->createInstance($nodeIdPass);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTree) ){
			if ( $myTree->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeurd
		/* Creation du Tree d'admin */
		$myTreeGroup			=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($groupIdPass);
		/* Verification de l'existance du Tree */
		if ( !is_object($myTreeGroup) ){
			if ( $myTreeGroup->isLoaded()==false ){
				systemRedirect($urlReturn."&msg=WrongArgument");
				return "WrongArgument";
			}
		}
		// --> recuperation du treeNode correspondant au noeurd

		$tabTreeNode[0]=$myTree;		//--> treeNodeUnique....
		printTabTreeNode($tabTreeNode, $nodeId, "NODE_ADMIN", "node_admin_id");
		/* -- Fin d'affichage des noeud d'ajout */

		$tabTreeGroup[0]=$myTreeGroup;		//--> treeNodeUnique....
		printTabTreeGroup($tabTreeGroup, $groupId, "GROUP_ADMIN", "group_admin_id");
		/* -- Fin Affichage des groupes d'ajout */
		return $end;
	}

/**
* __createObject: retourne la chaine d'affichage de création de l'objet (/défaut)
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __createObject($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		withBlocPath("AdminEntryNode", "configuration");
		$end=$this->configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);
		exitBloc();
		return $end;
	}

/**
* __ExecCreateObject: retourne la chaine d'affichage de création de l'objet (/défaut)
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __execCreateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		if (isset($_POST["group_admin_id"]))
			$this->setData("groupId", $_POST["group_admin_id"]);
		else
			$this->setData("groupId", nid());

		if (isset($_POST["node_admin_id"]))
			$this->setData("nodeId", $_POST["node_admin_id"]);
		else
			$this->setData("nodeId", nid());

		$end=parent::__execCreateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass);
		return $end;
	}

/**
* __createObject: retourne la chaine d'affichage de création de l'objet (/défaut)
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __execUpdateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		if (isset($_POST["group_admin_id"]))
			$this->setData("groupId", $_POST["group_admin_id"]);
		else
			$this->setData("groupId", 1);

		if (isset($_POST["node_admin_id"]))
			$this->setData("nodeId", $_POST["node_admin_id"]);
		else
			$this->setData("nodeId", 1);

		$end=parent::__execUpdateObject($groupIdPass, $nodeIdPass, $tabForbiddenPass);
		return $end;
	}

/**
* __updateObject: surchage updateObject de l'objet de coordination
* @param chaine url pour le form
* @param chaine url pour le form de retour
* @param entier groupe de configuration...
* @param entier noeud de configuration endroit ou l'objet a été créé
* @param tableau
* @access public
* @return chaine code Message
*/
	function __updateObject($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass)
	{
		withBlocPath("AdminEntryNode", "configuration");
		$end=$this->configurePrint($url, $urlReturn, $groupIdPass, $nodeIdPass, $tabForbiddenPass);
		exitBloc();
		return $end;
	}
}
?>
