* * * 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 SystemControl.php * * Ce fichier contient la classe SystemControl * * @author Initiance * @link www.rooty.me * @since 2004/04/14 * @version 0.3 * @package system_control * @copyright Copyright © 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. *

if ( !defined('SYSTEM_IN') ) * { * die("Hacking attempt"); * }

*/ if ( !defined('SYSTEM_IN') ) { die("Hacking attempt"); } /** * Variables de test et d'affichage de stats */ define("SYSTEM_PRINT_MEMORY", false); define("SYSTEM_PRINT_EXECUTION_TIME", false); #define(""); #date_default_timezone_set('America/Los_Angeles'); /** * Classe System *classe du system d'information * @package system_control */ class SystemControl { /**#@+ * @access private * @var array */ /** * @desc redirection du système aprés l'execution */ var $version =1.1; /** * @desc redirection du système aprés l'execution */ var $redirect =null; /** * @desc doit-on afficher des données sans template (cas upload par exemple) */ var $outputData =false; /** * @desc données a afficher */ var $data =""; /** * @desc intitulé du message système (xml) pour l'écrire à l'écran */ var $messageSystem =""; /** * @desc Tableau des objets concernés par la navigation */ var $objectArray =null; /** * @desc entier identifiant de l'objet à executer */ var $oid =null; /** * @desc chaine nom de la classe de l'objet */ var $className =null; /** * @desc chaine nom de la methode de l'objet à executer */ var $methodName =null; /** * @desc chaine objet de coordination executé */ var $currentCoordinationObject=null; /**#@-*/ // // Constructor // /** * Constructeur de la classe SystemControl * *

Declaration de la session et recuperation des information systemes

* * @access public */ // function SystemControl() // { // $this->__construct(); // } function __construct() { $this->initStats(); $this->messageSystem=NULL; $this->includeConfigFile(); /* Inclusion des fichiers de configuration */ if (headers_sent()){ echo "
Système Corrompu...
un envoi de données existe...
verifier vos script(fichier de configuration)..."; die(); } $this->includeSystemDepency(); /* Inclusion des dependancy système */ if (headers_sent()){ echo "
Système Corrompu...
un envoi de données existe...
verifier vos script(dependances system)..."; die(); } $this->includePackage(); /* Inclusion des dependancy système */ if (headers_sent()){ echo "
Système Corrompu...
un envoi de données existe...
verifier vos script(package)..."; die(); } $this->includeCoordinationObjectLibrairies(); /* Include All Coordination object */ if (headers_sent()){ echo "
Système Corrompu...
un envoi de données existe...
verifier vos script(objets de coordination)..."; die(); } $this->printStats("Loading"); $this->makeSystemError(); /* Creation du system de gestion d'erreur */ $this->makeSystemPlugin(); /* Inclusion et Création de tous les object plugin */ $this->beforeSessionSystemPlugin(); /* Execution des plugins avant la session */ $this->makeSystemConn(); /* Initialisation des connexions */ $this->printStats("initialisation"); $this->makeSystemManager(); /* Création de tous les gestionnaire system */ $this->cleanSession(); /* Detruit les sessions non valides */ $this->makeSession(); /* Création de la session */ $this->makeSystemMessage(); /* Création du systéme de message */ $this->printStats("Lancement de session"); /* auto-register to $GLOBALS["SYSTEM_CONTROL"] */ $GLOBALS["SYSTEM_CONTROL"]=$this; } /** * Execution système * * @access private * @return entier */ function execute() { global $CONF_DATA_PATH, $CONF_MESSAGE_FILE; /* Execution des plugins avant l'execution de la commande à proprement parler */ $this->beforeProcessSystemPlugin(); /* Récupération initialisation du message*/ $this->messageSystem=((isset($_GET["msg"])))?$_GET["msg"]:(((isset($_POST["msg"])) && (is_numeric($_POST["msg"])))?$_POST["msg"]:NULL); ###################################################################################################### ### execution des commandes system... ###################################################################################################### # --> verification d'une déconnexion du au temps if ((isset($_GET["id"])) && ($GLOBALS["SYSTEM_USER_SESSION"]->isNew==true)) { #---> on a était dconnecté........ $this->messageSystem="sessionExpire"; } /* initialisation */ $pageString=""; /* Modification des éléments systéme (navigation et connexion) */ /* Gére les arguments system par le mot clé system ou sys */ // $arraySystem=array_merge( ((isset($_GET["system"]))?split(",", $_GET["system"]):array()) , ((isset($_GET["sys"]))?split(",", $_GET["sys"]):array()) ); $arraySystem=array_merge( ((isset($_GET["system"]))?preg_split("/,/", $_GET["system"]):array()) , ((isset($_GET["sys"]))?preg_split("/,/", $_GET["sys"]):array()) ); $noExec=false; for ($i=0; $idoSystemAction($arraySystem[$i]); if ($arraySystem[$i]=="noExec") $noExec=true; } ###################################################################################################### ### Fin d'execution du script system (connexion etc...) ###################################################################################################### /* initialisation des variables pour la template */ $GLOBALS['SYSTEM_TEMPLATE_PATH'] =$GLOBALS["CONF_DATA_PATH"]."data/template/"; /* Récupération du chemin de la template */ $GLOBALS['SYSTEM_TEMPLATE_DIR'] =$GLOBALS['SYSTEM_USER_SESSION']->getCurrentTemplate()."/"; if( $GLOBALS["SYSTEM_USER_SESSION"]->user->getId() != 1 ) { $GLOBALS['SYSTEM_TEMPLATE_MAIN'] ="main.mxt"; } else { // if( file_exists($GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR'].$_SERVER["HTTP_HOST"]."-landingpage.mxt") ) { // $GLOBALS['SYSTEM_TEMPLATE_MAIN'] =$_SERVER["HTTP_HOST"]."-landingpage.mxt"; // } else { if( file_exists($GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."main-guest.mxt") ) $GLOBALS['SYSTEM_TEMPLATE_MAIN'] ="main-guest.mxt"; else $GLOBALS['SYSTEM_TEMPLATE_MAIN'] ="main.mxt"; // } } $GLOBALS['SYSTEM_TEMPLATE_CONF'] ="config/parametres.mxp"; $GLOBALS['SYSTEM_TEMPLATE_TITLE'] =$GLOBALS['SYSTEM_TEMPLATE_DEFAULT_TITLE']; /* initialisation des messages par défaut */ $GLOBALS["SYSTEM_MESSAGE"]->addFile("main.ini"); $this->printStats("Fin d'affectation des éléments principaux d'affichage"); // var_dump(eid()); /* On load tous les objets concernés par la navigation (y compris pour les sous niveaux) */ $this->makeObjectListForSession(); // var_dump(eid()); // var_dump("EntryNodeId : ".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId); // var_dump("NavigationNodeId : ".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId); /* execution des action a proprement parler */ # --> Récupération des éléments... $oid =((isset($_GET["oid"])) && (is_numeric($_GET["oid"])))?$_GET["oid"]:(((isset($_POST["oid"])) && (is_numeric($_POST["oid"])))?$_POST["oid"]:null); $action =(isset($_GET["action"]))?$_GET["action"]:((isset($_POST["action"]))?$_POST["action"]:null); $classe =(isset($_GET["classe"]))?$_GET["classe"]:((isset($_POST["classe"]))?$_POST["classe"]:null); # --> Récuperation des args par défaut pour l'execution if (is_null($oid) || is_null($action) || is_null($classe)) { $defaultRight =$this->getDefaultRight(); /* retourne l'objet droit/défaut en fonction de la navigation */ $oid =$defaultRight->getObjectId(); $classe =$defaultRight->getClassName(); $action =$defaultRight->getMethodName(); unset($defaultRight); } /* Register Variables objects */ $this->oid =$oid; $this->className =$classe; $this->methodName =$action; # Template $this->makeSystemTemplate(); /* Execution des plugins avant l'execution de la commande à proprement parler */ $this->beforeExecSystemPlugin(); /* cas la page n'a pas de contenu */ if ($noExec===false) { # --> On test les droits avant l'execution if ($GLOBALS["SYSTEM_USER_SESSION"]->isRightOn($oid, $classe, $action)==true) { $this->printStats("Début de l'execution de l'obj"); $msg=$this->__exec($oid, $action, $classe); /* execution de l'objet */ $this->messageSystem=(isset($msg) && ($msg!=""))?$msg:$this->messageSystem; /* alimentation système du message */ $message="log:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin().",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",oid:".$oid; addToLog( $message, $CONF_MESSAGE_FILE ); $GLOBALS["SYSTEM_TEMPLATE"]->WithMxPath(""); /* réinitialise le path après utilisation */ } else { $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("DATA", "modify", $this->__error()); /* Erreur d'execution */ } }else{ $GLOBALS["SYSTEM_TEMPLATE"]->MxBloc("DATA", "modify", $this->__noExec()); /* Erreur d'execution */ } /* Execution des plugins avant l'execution de la commande à proprement parler */ $this->afterExecSystemPlugin(); $this->printStats("Fin d'execution principale"); ###################################################################################################### ### Fin d'execution du script ###################################################################################################### if ($this->getRedirect()==NULL) { /* Ouput des différents éléments */ $this->data=$this->outputExecutionPage(); /* se sert de $GLOBALS["DATA"] */ } else { /* Redirection demandée..... */ redirect( $this->getRedirect() ); $this->data=""; } /* Execution des plugins apres les traitements */ $this->afterProcessSystemPlugin(); // affichage du résultat!!!! echo $this->data; $this->printStats("Fin d'export"); /* Execution des plugins avant l'execution de la commande à proprement parler */ $this->beforeSessionCloseSystemPlugin(); /* enregistrement de la session + destruction des autres éléments */ $this->endSession(); #!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Fin Implémentation du system de template ici # déclaration du répertoire de la skErrorManagerin principale $this->destroySystemConn(); $this->printStats("Fin de script"); } /** * retourne la version courante du système * *La version système sert pour tous les fichiers relatifs aux système (arbo /lib/system/). * @return float */ function getVersion() { $tmp=get_class_vars("SystemControl"); return $tmp["version"]; } /** * Envoi la page traitée par le template au poste client. *

Se sert des variables $GLOBALS :
* - SYSTEM_TEMPLATE_PATH : chemin jusqu'a la racine des templates * - TEMPLATE_DIR : nom du repertoire é utiliser sur les templates * - TEMPLATE_MAIN: nom du template é utiliser sur l'interface * - TEMPLATE_CSS : nom du css global pour la page *

* @param chaine chaine correspondant a la balise principale de données (DATA)
c le resultat de l'execution de l'objet de coordination * @access private * @return entier */ function outputExecutionPage() { if (!$this->outputData) { /* Execution des objets printing (seulement si existant dans la template) */ $GLOBALS["SYSTEM_MANAGER"]["PRINTING"]->doLoadPrinting(); $GLOBALS["SYSTEM_MANAGER"]["PRINTING"]->execPrinting(); /* Execution des messages */ $GLOBALS["SYSTEM_MESSAGE"]->execPrinting(); $this->printStats("Fin d'execution des objets de navigation"); } /* On stoppe le system de gestion d'erreur*/ if ( (isset($GLOBALS["SYSTEM_ERROR"])) && (is_object($GLOBALS["SYSTEM_ERROR"])) ) { $GLOBALS["SYSTEM_ERROR"]->outputError(); } if (!$this->outputData) { return $GLOBALS["SYSTEM_TEMPLATE"]->MxWrite(false); }else{ return $this->data; } } /** * Execute les instructions relatives au system... *

gestionnaire d'instruction utilisateur/systéme comme:
* - l'authentification * - la déconnection * - le changement de: - langue * - le noeud d'entrée (partage utilisé) * - le noeud de navigation *

* @access private * @param chaine code message * @return entier */ function doSystemAction($system) { global $CONF_COOKIE_ENABLE, $CONF_COOKIE_PREFIX, $CONF_COOKIE_PATH, $CONF_COOKIE_DOMAIN, $CONF_COOKIE_SECURE; switch ($system) { case "begin": case "auth": case "authSession" : $login =(isset($_GET["login"]))?$_GET["login"]:((isset($_POST["login"]))?$_POST["login"]:null); if (isset($_GET["password"])) { $ObjPassword=new Chaine(urldecode($_GET["password"])); $password=$ObjPassword->decrypt($GLOBALS["SYSTEM_KEY"]); } elseif(isset($_POST["password"])) { $password=$_POST["password"]; } else { $password=NULL; } // setcookie("showLandPage", "false", time() + (86400 * 30), '/'); /* Use new PHP7.3.0 array method */ $arr_cookie_options = array ('expires' => time() + (86400 * 30),'path' => $CONF_COOKIE_PATH,'domain' => $CONF_COOKIE_DOMAIN,'secure' => $CONF_COOKIE_SECURE,'httponly' => true,'samesite' => 'Lax'); setcookie($CONF_COOKIE_PREFIX.'showLandPage', "false", $arr_cookie_options); if (!is_null($login) && !is_null($password)) { $this->__authSession($login, $password); // if(file_exists("/usr/local/sbin/xmpp_notification.py")) // if(file_exists("/usr/local/sbin/matrix_notification.py")) // { // exec("xmpp_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendxmpprc-webplatform -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est connecté au site Fab-l3.org avec le mot de passe ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getPassword()."\""); // exec("matrix_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendmatrixrc-lcube-website -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est connecté au site https://www.fab-l3.org avec le mot de passe ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getPassword()."\""); // } } break; case "authNewAccount": case "authForgotPassword": $this->__authForgotPassword(); break; case "close": case "disco": case "disconnectSession" : // if(file_exists("/usr/local/sbin/xmpp_notification.py")) // if(file_exists("/usr/local/sbin/matrix_notification.py")) // { // exec("xmpp_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendxmpprc-webplatform -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est déconnecté du site Fab-l3.org\""); // exec("matrix_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendmatrixrc-lcube-website -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est déconnecté du site https://www.fab-l3.org.\""); // } // var_dump("deco"); $this->__disconnectSession(); break; case "lang": case "language": $languageId =(isset($_GET["lid"]))?$_GET["lid"]:((isset($_POST["lid"]))?$_POST["lid"]:null); $languageId =(isset($_GET["languageId"]))?$_GET["languageId"]:((isset($_POST["languageId"]))?$_POST["languageId"]:$languageId); if (is_numeric($languageId) && $languageId!=0) $this->__changeLanguage($languageId); break; case "eid": case "entryNode": $entryNodeId =(isset($_GET["eid"]))?$_GET["eid"]:((isset($_POST["eid"]))?$_POST["eid"]:null); $entryNodeId =(isset($_GET["entryNodeId"]))?$_GET["entryNodeId"]:((isset($_POST["entryNodeId"]))?$_POST["entryNodeId"]:$entryNodeId); if (is_numeric($entryNodeId) && $entryNodeId!=0) $this->__changeEntryNode($entryNodeId); break; case "nid": case "navigationNode": $navigationNodeId =(isset($_GET["nid"]))?$_GET["nid"]:((isset($_POST["nid"]))?$_POST["nid"]:null); $navigationNodeId =(isset($_GET["navigationNodeId"]))?$_GET["navigationNodeId"]:((isset($_POST["navigationNodeId"]))?$_POST["navigationNodeId"]:$navigationNodeId); if (is_numeric($navigationNodeId) && $navigationNodeId!=0) $this->__changeNavigationNode($navigationNodeId); break; } } /** * Execute les instructions relatives à l'objet courant *

fonction d'execution à proprement parler

* @access private * @param entier id objet * @param chaine methode à appeller * @param chaine classe de l'objet * @return entier * @todo ne pas effectuer le load... */ function __exec($idObject, $action, $classe) { /* Cas execution d'un objet existant */ /*--> a optimiser car l'objet est dans la liste....*/ $this->currentCoordinationObject = $GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstance($idObject); $myObjClass = get_class($this->currentCoordinationObject); $methodExists = 0; /*On vérifie que l'action demandée existe*/ $tabmyObjClass = array_map("strtolower", get_class_methods($myObjClass)); /* array_search renvoie false ou null selon la version php*/ if(!(array_search(strtolower($action), $tabmyObjClass) === false)) { $methodExists = 1; } if ($methodExists == 1) { $retour=call_user_func(array(&$this->currentCoordinationObject,$action),""); return $retour; } addError(1,"Systeme", "La Methode ".$action." de la classe ".$myObjClass." n'existe pas ! : Tentative de piratage ?!? ",__LINE__,__FILE__); return ""; } /** * __noExec : n'execute aucune action * @access private * @return string */ function __error() { global $CONF_DATA_PATH; $path=$GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR']."object_printing/errorprint/error.mxt"; $MaTemplate = new ModeliXeQware($path); $MaTemplate->SetModeliXe(true); $MaTemplate->MxText("error", getMessage("error")); $data=$MaTemplate->MxWrite(); return $data; } /** * __noExec : n'execute aucune action * @access private * @return string */ function __noExec() { return ""; } /** * __authSession : methode d'authentification du system + dépendance *

Récupere toutes les dépendances de l'utilisateur si valide

* @param chaine Login de l'utilisateur * @param chaine Password de l'utilisateur * @access private * @return booleen */ function __authSession($login, $password) { global $CONF_MESSAGE_FILE, $CONF_PAGE_EXECUTION, $CONF_AUTH_FILE, $CONF_AUTH_ALIEN_FILE; $id=$GLOBALS["SYSTEM_MANAGER"]["USER"]->checkValid($login, $password); $retour=false; if ($id!=0 && is_numeric($id)) { if( $GLOBALS["SYSTEM_MANAGER"]["USER"]->checkAccountActive($id) ) { $GLOBALS["SYSTEM_USER_SESSION"]->doLoadFromUserId($id); /* Connexion efféctuée...... */ // $message="log:".$login.",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",1"; $message="auth-success: ".date("Y-m-d H:i:s")." Authentication success for user ".$login." from ".$clientIp.". Session is uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().", EntryNodeId is eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.", NodeId is nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId; $file= $CONF_AUTH_FILE; if (isset($HTTP_REFERER)) if (strpos($HTTP_REFERER, $SERVER_NAME)===false) $file= $CONF_AUTH_ALIEN_FILE; addToLog( $message, $file ); $this->messageSystem="trueAuthSession"; // if(file_exists("/usr/local/sbin/xmpp_notification.py")) if(file_exists("/usr/local/sbin/matrix_notification.py")) { // exec("xmpp_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendxmpprc-webplatform -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est connecté au site Fab-l3.org avec le mot de passe ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getPassword()."\""); exec("matrix_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendmatrixrc-lcube-website -m=\"L'utilisateur ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." s'est connecté au site https://www.fab-l3.org avec le mot de passe ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getPassword()."\""); return true; } } else { $this->messageSystem="disabledAuthSession"; return false; } }else{ /* Tentative de connexion */ $clientIp=isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; if ($GLOBALS["SYSTEM_USER_SESSION"]->isNew==true) { // $message="log:".$login.",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",0"; $message="auth-failed: ".date("Y-m-d H:i:s")." Authentication attempt with user ".$login." from ".$clientIp.". Session is uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId(); addToLog( $message, $CONF_MESSAGE_FILE ); } else { $file= $CONF_AUTH_FILE; if (isset($HTTP_REFERER)) if (strpos($HTTP_REFERER, $SERVER_NAME)===false) $file= $CONF_AUTH_ALIEN_FILE; $message="auth-failed: ".date("Y-m-d H:i:s")." Authentication attempt with user ".$login." from ".$clientIp.". Session is uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId(); addToLog( $message, $file ); } // if(file_exists("/usr/local/sbin/xmpp_notification.py")) if(file_exists("/usr/local/sbin/matrix_notification.py")) { // exec("xmpp_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendxmpprc-webplatform -m=\"L'utilisateur ".$login." n'arrive pas à se connecter au site Fab-l3.org\""); exec("matrix_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendmatrixrc-lcube-website -m=\"L'utilisateur ".$login." n'arrive pas à se connecter au site https://www.fab-l3.org.\""); } $this->messageSystem="wrongAuthSession"; return false; } } /** * __authSession : methode d'authentification du system + dépendance *

Récupere toutes les dépendances de l'utilisateur si valide

* @param chaine Login de l'utilisateur * @param chaine Password de l'utilisateur * @access private * @return booleen */ function __authForgotPassword() { global $CONF_MESSAGE_FILE, $CONF_PAGE_EXECUTION, $CONF_AUTH_FILE, $CONF_AUTH_ALIEN_FILE; if( $GLOBALS['CONF_LOST_PASSWORD'] ) $this->messageSystem="forgotPasswordTempDisabled"; else $this->messageSystem="forgotPasswordDisabled"; // $id=$GLOBALS["SYSTEM_MANAGER"]["USER"]->checkValid($login, $password); // $retour=false; // if ($id!=0 && is_numeric($id)) // { // $GLOBALS["SYSTEM_USER_SESSION"]->doLoadFromUserId($id); // // /* Connexion efféctuée...... */ // $message="log:".$login.",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",1"; // $file= $CONF_AUTH_FILE; // if (isset($HTTP_REFERER)) // if (strpos($HTTP_REFERER, $SERVER_NAME)===false) // $file= $CONF_AUTH_ALIEN_FILE; // // addToLog( $message, $file ); // $this->messageSystem="trueAuthSession"; // // // exec("echo \"User ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." has logged in to the website Game-unity.net with password : ".$password."\" | sendxmpp -t -f /home/webpub/game-unity.net/www/config/.sendxmpprc -s \"GU Login Website\" ".$GLOBALS['CONF_ERROR_MAIL']); // // return true; // }else{ // /* Tentative de connexion */ // if ($GLOBALS["SYSTEM_USER_SESSION"]->isNew==true) // { // $message="log:".$login.",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",0"; // addToLog( $message, $CONF_MESSAGE_FILE ); // } // $this->messageSystem="wrongAuthSession"; // // exec("echo \"User ".$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin()." has failed to loggin to the website Game-unity.net\" | sendxmpp -t -f /home/webpub/game-unity.net/www/config/.sendxmpprc -s \"GU Login Website\" ".$GLOBALS['CONF_ERROR_MAIL']); // return false; // } } /** * disconnectSession : creation de l'objet UserSession *

Recupere toutes les dépendances de l'utilisateur

* @access private * @return entier */ function __disconnectSession() { global $CONF_PAGE_EXECUTION, $CONF_AUTH_FILE; $login=$GLOBALS["SYSTEM_USER_SESSION"]->user->getLogin(); $id=$GLOBALS["SYSTEM_USER_SESSION"]->defaultSession(); /* Tentative de connexion */ // if ($GLOBALS["SYSTEM_USER_SESSION"]->isNew==true) // { $clientIp=isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR']; // $message="log:".$login.",".date("Y-m-d H:i:s").",uid:".$GLOBALS["SYSTEM_USER_SESSION"]->user->getId().",eid:".$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId.",nid:".$GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId.",3"; $message="auth-disconnect: ".date("Y-m-d H:i:s")." Disconnection success for user ".$login." from ".$clientIp; addToLog( $message, $CONF_AUTH_FILE ); // } // if(file_exists("/usr/local/sbin/xmpp_notification.py")) if(file_exists("/usr/local/sbin/matrix_notification.py")) { // exec("xmpp_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendxmpprc-webplatform -m=\"L'utilisateur ".$login." s'est déconnecté du site Fab-l3.org\""); exec("matrix_notification.py -c=/home/webpub/fab-l3.org/www/config/.sendmatrixrc-lcube-website -m=\"L'utilisateur ".$login." s'est déconnecté du site https://www.fab-l3.org.\""); } $this->messageSystem="disconnect"; } /** * __changeLanguage : permet de changer de langue *

attention si la langue est inactive elle est considérée comme fausse!!!!

* @param entier identifiant de la langue * @access private * @return booleen */ function __changeLanguage($id) { $language=$GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]->createInstance($id); if ($language->getStatus()==1 && $language->isLoaded()) /* La Langue est active et chargée */ { $GLOBALS["SYSTEM_USER_SESSION"]->langue=$language; return true; }else{ return false; } } /** * __changeEntryNode : permet de changer le noeud de navigation principal * @param entier identifiant du noeud * @access private * @return booleen */ function __changeEntryNode($id) { $arrayEntryNode=$GLOBALS["SYSTEM_USER_SESSION"]->getValidEntryNode(); // var_dump($arrayEntryNode); for ($i=0; $ientryNodeId=$id; $GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId=$id; return true; } } return false; } /** * __changeNavigationNode : permet de changer le noeud de navigation principal * @param entier identifiant du noeud * @access private * @return booleen */ function __changeNavigationNode($id) { if ($id!=nid()) { $arrayNavigationNode=$GLOBALS["SYSTEM_USER_SESSION"]->getValidNavigationNode(); if ( in_array($id,$arrayNavigationNode) ) { $GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId=$id; return true; }else{ return false; } }else{ return true; } } /** * includeCoordinationObject inclus toutes les libs d'objets de coordination * @access private * @return booleen */ function includeCoordinationObjectLibrairies() { global $CONF_LIB_PATH; $dir=$CONF_LIB_PATH."lib/object_coordination/"; $IncludeObjectretour=0; if (is_dir($dir)) { if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) { if (Is_Dir($dir.$file)) { if (Is_File($dir.$file."/".$file.".php")) { $GLOBALS["SYSTEM_REGISTER"]["COORDINATION_OBJ"][]=strtolower($file); $IncludeObjectretour++; } } } closedir($dh); } } /* Pas d'objets inclus dans le system */ if ($IncludeObjectretour==0) { $systemError=1; $classe="SystemControl"; $message="Attention : pas d'objet type dans le system..."; addError($systemError,$classe,$message, __line__, __file__); return false; }else{ return true; } } /** * includeConfigFile : inclusion des fichier de config *

inclus tous les fichiers de configuration

* @access private * @return entier */ function includeConfigFile() { global $COMMUN_PATH_CONFIG; /* COMMUN_PATH_CONFIG-->sur la page d'execution HTTP_SERVER_VARS pour config.system.php */ $tab=array(); $this->includeFiles($COMMUN_PATH_CONFIG."config/", "config"); } /** * includeSystemDepency : inclusion des fichier du system *

inclus tous les fichiers de configuration du system

* @access private * @return booleen */ function includeSystemDepency() { global $CONF_LIB_PATH; if (file_exists($CONF_LIB_PATH."lib/system/dependancy.php")){ include_once($CONF_LIB_PATH."lib/system/dependancy.php"); return true; } else{ addError(1,"SystemControl","Erreur fichier de dependance inexistant", __line__, __file__); return false; } } /** * includePackage : inclusion des fichier de config *

inclus tous les fichiers de configuration

* @access public * @return entier */ function includePackage() { global $CONF_LIB_PATH; $this->includeFiles($CONF_LIB_PATH."lib/package/", "package"); } /** * includeFiles : inclusion des fichiers à partir d'un repertoire de configuration *

inclus tous les fichiers ".php" d'un repertoire contenant la chaine

* @access private * @param chaine path vers le rep de configuration * @param chaine * @return entier */ function includeFiles($way, $requireString) { $tab=array(); if (is_dir($way)) { if ($dh = opendir($way)) { while (($obj = readdir($dh)) !== false) { if (is_file($way.$obj)) { if (substr($obj,strlen($obj)-4,4)==".php" && strpos($obj, $requireString)!==false) { $GLOBALS["SYSTEM_REGISTER"][strtolower($requireString)][]=substr($obj,0,(strlen($obj))); include_once($way.$obj); /* inclusion du fichier de conf */ } } } closedir($dh); } } } /** * makeSystemConn : creation des objets ressource SYSTEM *

Ces connexions sont utilisées par le système pour la récupération et la gestion des éléments

*

Les Variables déclarées sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]

* SYSTEM_DATABASE_CONN est crée é partir du fichier de configuration
* - en fonction du type de la Base de données
* - ces methodes sont les mémes quelque soit la base (voir data_source/database)

*

Création de SYSTEM_LDAP_CONN si DATA_ACCES_MANAGER_USER = Ldap

* @access private * @return entier */ function makeSystemConn() { global $CONF_LIB_PATH; /** *

Création de la connexion à la base de données en fonction de la configuration

*

L'objet est nommé SYSTEM_DATABASE_CONN

* Il est crée é partir du fichier de configuration
* - en fonction du type de la Base de données
* - ces methodes sont les mémes quelque soit la base (voir data_source/database)

*/ # Configuration pour les bases SQL $dbdriver = strtolower( DATA_SOURCE_DB_DRIVER ); if (file_exists($CONF_LIB_PATH."lib/system/system_data_source/database/".$dbdriver.".php")) { include_once($CONF_LIB_PATH."lib/system/system_data_source/database/".$dbdriver.".php"); switch ( $dbdriver ) { case "mypdo": $GLOBALS['SYSTEM_DATABASE_CONN']=new myPdo( DATA_SOURCE_DB_TYPE, DATA_SOURCE_DB_SERVER, DATA_SOURCE_DB_USER, DATA_SOURCE_DB_PASSWORD, DATA_SOURCE_DB_DATABASE, DATA_SOURCE_DB_CHARSET ); break; // case "mysql3": // $GLOBALS['SYSTEM_DATABASE_CONN']=new MySQL3( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; // case "mysql4": // $GLOBALS['SYSTEM_DATABASE_CONN']=new MySQL4( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; // case "mysql5": // $GLOBALS['SYSTEM_DATABASE_CONN']=new MySQL5( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; // case "odbc": // $GLOBALS['SYSTEM_DATABASE_CONN']=new Odbc( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; // case "oracle": // $GLOBALS['SYSTEM_DATABASE_CONN']=new Oracle( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; // case "postgres7": // $GLOBALS['SYSTEM_DATABASE_CONN']=new Postgres7( DATA_SOURCE_SQL_SERVER, DATA_SOURCE_SQL_USER, DATA_SOURCE_SQL_PASSWORD, DATA_SOURCE_SQL_DATABASE); // break; default: # Erreur --> le fichier existe mais la classe n'existe pas é! $seuil=1; $classe="Commun"; $message="Erreur de configuration de la base de donnée"; addError($seuil,$classe,$message, __line__, __file__); } }else{ # Erreur --> le fichier n'existe pas $seuil=1; $classe="Commun"; $message="Erreur de configuration de la base de donnée:Base non disponible"; addError($seuil,$classe,$message, __line__, __file__); } /** *

Création de la connexion à LDAP si DATA_ACCES_MANAGER_USER = Ldap

*

L'objet est nommé SYSTEM_LDAP_CONN

*/ /* configuration pour la base LDAP pour le system */ if ( DATA_ACCES_MANAGER_USER == "Ldap") { include_once($CONF_LIB_PATH."lib/system/system_data_source/ldap/ldap.php"); $GLOBALS['SYSTEM_LDAP_CONN'] = new LdapAnnu( DATA_SOURCE_SYSTEM_LDAP_SERVER_ADR, DATA_SOURCE_LDAP_ROOT_DN, DATA_SOURCE_LDAP_LOGIN_DN, DATA_SOURCE_LDAP_PASSWORD); } } /** * makeSystemPlugin : creation des objets Plugin *

Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments

*

Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]

* @access private * @return entier */ function makeSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]=new PluginManager(); $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doLoadPlugin(); } /** * makeSystemPrinting : des printing *

Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments

*

Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]

* @access private * @return entier */ function makeSystemPrinting() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PRINTING"]=new PrintingManager(); $GLOBALS["SYSTEM_MANAGER"]["PRINTING"]->doLoadPrinting(); } /** * makeSystemPrinting : creation de la template *

La Variables déclaré est $GLOBALS["SYSTEM_TEMPLATE"]

* @access private * @return entier */ function makeSystemTemplate(){ $GLOBALS["SYSTEM_TEMPLATE"] = new ModeliXeQware($GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR'].$GLOBALS['SYSTEM_TEMPLATE_MAIN']); $GLOBALS["SYSTEM_TEMPLATE"]->SetMxFileParameter($GLOBALS['SYSTEM_TEMPLATE_PATH'].$GLOBALS['SYSTEM_TEMPLATE_DIR'].$GLOBALS['SYSTEM_TEMPLATE_CONF']); $GLOBALS["SYSTEM_TEMPLATE"]->SetModeliXe(true); } /** * makeSystemManager : creation des gestionnaire d'objets systéme *

Ces gestionnaire permettent la création, modification des objets systéme

*

ils sont crées dans les variables $GLOBALS["SYSTEM_MANAGER"][Manager_name]

* @access private * @return entier */ function makeSystemManager() { /* Creation du Manager groupe */ $GLOBALS["SYSTEM_MANAGER"]["GROUP"]=GroupManagerFactory::createInstance( DATA_ACCES_MANAGER_GROUP ); /* Creation du Manager Node */ $GLOBALS["SYSTEM_MANAGER"]["NODE"]=NodeManagerFactory::createInstance( DATA_ACCES_MANAGER_NODE ); /* Creation du Manager NodSettings */ $GLOBALS["SYSTEM_MANAGER"]["NODESETTINGS"]=NodeSettingsManagerFactory::createInstance( DATA_ACCES_MANAGER_NODESETTINGS ); /* Creation du Manager Langue */ $GLOBALS["SYSTEM_MANAGER"]["LANGUAGE"]=LanguageManagerFactory::createInstance( DATA_ACCES_MANAGER_LANGUAGE ); /* Creation du Manager Utilisateur */ $GLOBALS["SYSTEM_MANAGER"]["USER"]=UserManagerFactory::createInstance( DATA_ACCES_MANAGER_USER ); /* Creation du Manager Utilisateur */ $GLOBALS["SYSTEM_MANAGER"]["USER_PREFERENCE"]=UserPreferenceManagerFactory::createInstance( DATA_ACCES_MANAGER_USER_PREFERENCE ); /* Creation du Manager Droit */ $GLOBALS["SYSTEM_MANAGER"]["RIGHT"]=RightManagerFactory::createInstance( DATA_ACCES_MANAGER_RIGHT ); /* Creation du Manager Droit */ $GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]=CoordinationObjManagerFactory::createInstance( DATA_ACCES_MANAGER_COORDINATION_OBJ ); /* Creation du Manager association utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["GROUP_USER"]=GroupUserManagerFactory::createInstance( DATA_ACCES_MANAGER_GROUP_USER ); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["NODE_GROUP_USER"]=NodeGroupUserManagerFactory::createInstance( DATA_ACCES_MANAGER_NODE_GROUP_USER ); /* Creation des Manager de cache pour tree node */ if ( DATA_ACCES_CACHE_TREE_NODE == true ) $GLOBALS["SYSTEM_MANAGER"]["TREE_NODE_CACHE"]=CacheManagerFactory::createInstance( DATA_ACCES_MANAGER_CACHE_TREE_NODE, DATA_ACCES_INFO_TREE_NODE ); /* Creation des Manager de cache pour tree group */ if ( DATA_ACCES_CACHE_TREE_GROUP == true ) $GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP_CACHE"]=CacheManagerFactory::createInstance( DATA_ACCES_MANAGER_CACHE_TREE_GROUP, DATA_ACCES_INFO_TREE_GROUP ); /* Creation des Manager de cache pour list user group */ if ( DATA_ACCES_CACHE_PERMISSION == true ) $GLOBALS["SYSTEM_MANAGER"]["PERMISSION_CACHE"]=CacheManagerFactory::createInstance( DATA_ACCES_MANAGER_CACHE_PERMISSION, DATA_ACCES_INFO_PERMISSION ); /* Creation des Manager de cache pour list user group */ if ( DATA_ACCES_CACHE_LIST_USER_GROUP == true ) $GLOBALS["SYSTEM_MANAGER"]["LIST_USER_GROUP_CACHE"]=CacheManagerFactory::createInstance( DATA_ACCES_MANAGER_CACHE_LIST_USER_GROUP, DATA_ACCES_INFO_LIST_USER_GROUP ); /* Creation des Manager de cache pour list user group */ if ( DATA_ACCES_CACHE_LIST_USER_NODE == true ) $GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE_CACHE"]=CacheManagerFactory::createInstance( DATA_ACCES_MANAGER_CACHE_LIST_USER_NODE, DATA_ACCES_INFO_LIST_USER_NODE ); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]=new TreeGroupManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["TREE_NODE"]=new TreeNodeManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["PERMISSION"]=new PermissionManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["LIST_USER_GROUP"]=new ListUserGroupManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["LIST_USER_NODE"]=new ListUserNodeManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["USER_SESSION"]=new UserSessionManager(); /* Creation du Manager association Noeud & utilisateur & groupe */ $GLOBALS["SYSTEM_MANAGER"]["USER_SESSION"]=UserSessionManagerFactory::createInstance( DATA_ACCES_MANAGER_USER_SESSION ); /* Pour les objets printing */ $GLOBALS["SYSTEM_MANAGER"]["PRINTING"]=new PrintingManager(); } /** * makeSession : creation de l'objet UserSession *

Recupere toutes les dépendances de l'utilisateur

* @access private */ function makeSession() { global $CONF_AUTH_FILE, $CONF_AUTH_ALIEN_FILE, $HTTP_REFERER, $SERVER_NAME; $GLOBALS["SYSTEM_USER_SESSION"]=$GLOBALS["SYSTEM_MANAGER"]["USER_SESSION"]->createInstance(); } /** * makeSystemError : creation de l'objet Erreur... * @access private */ function makeSystemError() { if (!Isset($GLOBALS["SYSTEM_ERROR"])) $GLOBALS["SYSTEM_ERROR"]=new SystemError(); } /** * makeSystemMessage : creation de l'objet Message (gestionnaire des fichiers messages) * @access private */ function makeSystemMessage() { if (!Isset($GLOBALS["SYSTEM_MESSAGE"])) $GLOBALS["SYSTEM_MESSAGE"]=new SystemMessage(); } /** * Charge tous les objets concernés par la navigation... *Cette liste va permettre de créer les menus de navigation etc * @access private * @return entier */ function makeObjectListForSession() { $array=$GLOBALS["SYSTEM_USER_SESSION"]->getAllObjectId(); /* recupere tous les identifiant des objets pour la navigation */ $this->objectArray=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstanceFromIds($array); return (count($this->objectArray)>0)?true:false; } /** * beforeSessionSystemPlugin : execution des plugin method before session * @access private */ function beforeSessionSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doBeforeSessionStart(); } /** * beforeProcessSystemPlugin : execution des plugin avant le process * @access private */ function beforeProcessSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doBeforeProcess(); } /** * beforeExecSystemPlugin : execution des plugin avant execution de l'obj de coordination * @access private */ function beforeExecSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doBeforeExec(); } /** * beforeExecSystemPlugin : execution des plugin apres execution de l'obj de coordination * @access private */ function afterExecSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doAfterExec(); } /** * afterProcessSystemPlugin : execution des plugin apres process (et avant envoi de la page) * @access private */ function afterProcessSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doAfterProcess(); } /** * beforeSessionCloseSystemPlugin : execution des plugin avant destruction de la session (après envoi de la page) * @access private */ function beforeSessionCloseSystemPlugin() { /* Appel et génération des plugins (autoregister dans $GLOBALS["SYSTEM_PLUGIN"]["PluginName"])*/ $GLOBALS["SYSTEM_MANAGER"]["PLUGIN"]->doBeforeSessionClose(); } /** * destroySystemConn : creation des objets ressource SYSTEM *

Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments

*

Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]

* @access private */ function destroySystemConn() { if (isset($GLOBALS["SYSTEM_DATABASE_CONN"])) $GLOBALS["SYSTEM_DATABASE_CONN"]->sql_close(); if (isset($GLOBALS["SYSTEM_LDAP_CONN"])) $GLOBALS["SYSTEM_DATABASE_CONN"]->deconnecte(); } /** * endSession : fin de la session (->on sauvegarde celle-ci) * @access private */ function endSession() { $GLOBALS["SYSTEM_USER_SESSION"]=$GLOBALS["SYSTEM_MANAGER"]["USER_SESSION"]->saveInstance($GLOBALS["SYSTEM_USER_SESSION"]); } /** * cleanSession : detruit toutes les sessions en "Time Out" * @access private */ function cleanSession() { if (!isset($GLOBALS['CONF_SESSION_TIME'])) { addError(5, "SystemControl", " : temps de la session corrompu",__line__, __file__); $GLOBALS['CONF_SESSION_TIME']= 2000; } $GLOBALS["SYSTEM_USER_SESSION"]=$GLOBALS["SYSTEM_MANAGER"]["USER_SESSION"]->cleanInstance( $GLOBALS['CONF_SESSION_TIME'] ); } /** * getListObjectForNavigation : renvoi tous les objets d'un noeud * @access public * @param entier id noeud * @return tableau tableau d'objets de coordination */ function getListObjectForNavigation($nodeId) { $tab=array(); if (isset($GLOBALS["SYSTEM_USER_SESSION"])) { $tabNode=$GLOBALS["SYSTEM_USER_SESSION"]->getAllParentNodeForNavigation($nodeId); $tabRight=$GLOBALS["SYSTEM_USER_SESSION"]->permission->getAllRightForNode(array($nodeId)); $tabRightOid=array(); for ($i=0; $igetObjectId(); } $objectArray=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstanceFromIds($tabRightOid); $k=0; /* pour chaque droit */ for ($i=0;$igetId()==$tabRight[$i]->getObjectId()) { $tmp=$objectArray[$j]; // Test si le droit est déjà droit(pour l'objet...) 2 x le mm droit $verif=objectSearch($tmp, $tab); if (count($verif)==0) { $tab[$k][0]=$tabRight[$i]; $tab[$k][1]=$tmp; $k++; }else{ if ( $tab[$verif[1]][0]->getMethodName()!=$tabRight[$i]->getMethodName() ) { $tab[$k][0]=$tabRight[$i]; $tab[$k][1]=$tmp; $k++; } } break; } } } } return $tab; } /** * getNodeIdForObjectId : renvoi tous les objets d'un noeud * @access public * @param entier id noeud * @return tableau tableau d'objets de coordination */ function getNodeIdForObjectId($oid) { $tabRight=$GLOBALS["SYSTEM_USER_SESSION"]->permission->getAllRightForNode($GLOBALS["SYSTEM_USER_SESSION"]->getValidNavigationNode()); for ($i=0; $igetObjectId()) { $nodeId = $tabRight[$i]->getNodeId(); break; } } return $nodeId; } /** * getDefaultRight : renvoi le droit par défaut * @access public * @return tableau tableau d'objets du droit */ function getDefaultRight() { // var_dump($GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId); $tabObject=$this->getListObjectForNavigation( $GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId ); /* 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 */ /* Pour le Tri/Nom */ $tabName=array(); for ($i=0; $igetName($currentCode); if ($lib=="") { $lib=$tabObject[$i][1]->getName($defaultCode); } $tabName[$i]=$lib; } asort($tabName); reset($tabName); if (list($i, $lib) = each($tabName)) { return $tabObject[$i][0]; }else{ return new Right(); } } /** * getRedirect() : retourne la redirection systeme si existante * @access public * @return chaine de retidrection */ function getRedirect() { if ( ($this->redirect!="") && (!is_null($this->redirect)) ) { $url =$this->redirect; $url =addIdtoUrl($url); if (isset($this->messageSystem) && ($this->messageSystem!="") ) $url.="&msg=".$this->messageSystem; return $url; } else { return NULL; } } /** * setRedirect() : retourne la redirection systeme si existante * @access public * @param chaine * @return chaine de retidrection */ function setRedirect($string) { $this->redirect=unhtmlentities($string); } /** * setOutputData() : affecte l'affichage est en mode data ou template (note on doit affecter data) * @access public * @param booleen * @param bolleen */ function setOutputData($bool) { $this->outputData=$bool; } /** * isOutputData() : retourne si l'affichage est en mode data ou template * @access public * @param bolleen * @return bolleen */ function isOutputData($bool) { return $this->outputData; } /** * setPrintData() : affecte les données de sortie à la place de modelixe ... * @access public * @param chaine * @param string */ function setPrintData($data) { $this->setOutputData(true); $this->setData($data); } /** * setData() : affecte les données ... * @access public * @param chaine * @param string */ function setData($data) { $this->data=$data; } /** * getData() : retourne si l'affichage est en mode data ou template * @access public * @param booleen * @return booleen */ function getData($bool) { return $this->data; } /** *Fonction arrayOfAllowedNode() * Recupere les noeuds d'administration possibles (de groupe) depuis un noeud... * On peut lui passer le noeud courant!!! -->$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId; * @access public * @param chaine url de redirection * @param entier id du noeud * @return tableau tree Correspondant */ function arrayOfAdministrableGroup($id) { $tabTreeGroup=array(); // Recupération des groupe d'administration en fonction d'un noeud (les groupe sont configurés pour être administrable depuis un noeud) $tabGroup=$GLOBALS["SYSTEM_MANAGER"]["GROUP"]->getInstanceFromNodeId($id); // on créer les tree correspondants... for ($i=0; $icreateInstance($tabGroup[$i]->getId()); } // Retourne les groupes authorisés return $tabTreeGroup; } /** * Fonction arrayOfAdministrableUserFromTabTreeGroup() *

Recupere tous les utilisateurs pour l'association au tabTreeGroup

* @access public * @param chaine url de redirection * @return tableau tree Correspondant */ function arrayOfAdministrableUserFromTabTreeGroup($tabTreeGroup) { $tabGroupId =array(); $tabGroupUser =array(); $tabUserId =array(); $tabUser =array(); // On recupere tous groupes correspondants for ($i=0; $igetSonArray() ); $tabGroupId[count($tabGroupId)]=$tabTreeGroup[$i]->getId(); } $tabGroupId=array_values(array_unique($tabGroupId)); // Pour toutes les associations on récupére les users... for ( $i=0; $i récupération de la liste des users... $tabGroupUser=array_merge( $tabGroupUser, $GLOBALS["SYSTEM_MANAGER"]["GROUP_USER"]->getInstanceFromGroupId($tabGroupId[$i]) ); } for ($i=0; $igetUserId(); } $tabUserId=array_values(array_unique($tabUserId)); for ($i=0; $icreateInstance($tabUserId[$i] ); } return $tabUser; } // // Fonctions de stats // /** * Fonction printStats affiche des stats d'execution (débuggage ou test) * @access public * @param chaine nom de l'élément d'execution statifié * @return booleen */ function initStats() { if ( SYSTEM_PRINT_EXECUTION_TIME ) { list($usec, $sec)= explode(" ", microtime()); if ( !defined("SYSTEM_START_TIME") ) define("SYSTEM_START_TIME", ( (float)$usec+ (float) $sec )); } return true; } /** * Fonction printStats affiche des stats d'execution (débuggage ou test) * @access public * @param chaine nom de l'élément d'execution statifié * @return booleen */ function printStats($chaine="") { $str=""; if ( SYSTEM_PRINT_MEMORY ) { $str=$chaine." Memory:".memory_get_usage()."
"; echo $str; } if ( SYSTEM_PRINT_EXECUTION_TIME ) { list($usec, $sec)= explode(" ", microtime()); if ( !defined("SYSTEM_START_TIME") ) define("SYSTEM_START_TIME", ( (float)$usec+ (float) $sec )); $time= ( (float)$usec+ (float)$sec ) - SYSTEM_START_TIME; $str=$chaine." Time:".$time."
"; echo $str; } return true; } } ?>