Qware_core/lib/system/system_control/systemcontrol.php

1505 lines
52 KiB
PHP
Executable File

<?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 SystemControl.php
*
* Ce fichier contient la classe SystemControl
*
* @author Initiance <www.initiance.com|olivier@initiance.com et Christophe Heurtaux>
* @link www.rooty.me
* @since 2004/04/14
* @version 0.3
* @package system_control
* @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");
}
/**
* 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
*
*<p>Declaration de la session et recuperation des information systemes</p>
*
* @access public
*/
// function SystemControl()
// {
// $this->__construct();
// }
function __construct()
{
$this->initStats();
$this->messageSystem=NULL;
$this->includeConfigFile(); /* Inclusion des fichiers de configuration */
if (headers_sent()){
echo "<br>Système Corrompu...<br>un envoi de données existe...<br>verifier vos script(fichier de configuration)...";
die();
}
$this->includeSystemDepency(); /* Inclusion des dependancy système */
if (headers_sent()){
echo "<br>Système Corrompu...<br>un envoi de données existe...<br>verifier vos script(dependances system)...";
die();
}
$this->includePackage(); /* Inclusion des dependancy système */
if (headers_sent()){
echo "<br>Système Corrompu...<br>un envoi de données existe...<br>verifier vos script(package)...";
die();
}
$this->includeCoordinationObjectLibrairies(); /* Include All Coordination object */
if (headers_sent()){
echo "<br>Système Corrompu...<br>un envoi de données existe...<br>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; $i<count($arraySystem); $i++)
{
$this->doSystemAction($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.
*<P>Se sert des variables $GLOBALS :<br>
* - 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
* </P>
* @param chaine chaine correspondant a la balise principale de données (DATA)<br> 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...
*<P>gestionnaire d'instruction utilisateur/systéme comme:<br/>
* - l'authentification
* - la déconnection
* - le changement de:
- langue
* - le noeud d'entrée (partage utilisé)
* - le noeud de navigation
*</P>
* @access private
* @param chaine code message
* @return entier
*/
function doSystemAction($system)
{
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), '/');
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
*<P>fonction d'execution à proprement parler</P>
* @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
*<P>Récupere toutes les dépendances de l'utilisateur si valide</P>
* @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
*<P>Récupere toutes les dépendances de l'utilisateur si valide</P>
* @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
*<P>Recupere toutes les dépendances de l'utilisateur</P>
* @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
*<P>attention si la langue est inactive elle est considérée comme fausse!!!!</P>
* @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; $i<count($arrayEntryNode); $i++)
{
if ($arrayEntryNode[$i]==$id)
{
$GLOBALS["SYSTEM_USER_SESSION"]->entryNodeId=$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
*<P>inclus tous les fichiers de configuration</P>
* @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
*<P>inclus tous les fichiers de configuration du system</P>
* @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
*<P>inclus tous les fichiers de configuration</P>
* @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
*<P>inclus tous les fichiers ".php" d'un repertoire contenant la chaine</P>
* @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
*<P>Ces connexions sont utilisées par le système pour la récupération et la gestion des éléments</P>
*<P>Les Variables déclarées sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]</P>
* SYSTEM_DATABASE_CONN est crée é partir du fichier de configuration<br>
* - en fonction du type de la Base de données<br>
* - ces methodes sont les mémes quelque soit la base (voir data_source/database)</P>
*<P>Création de SYSTEM_LDAP_CONN si DATA_ACCES_MANAGER_USER = Ldap</P>
* @access private
* @return entier
*/
function makeSystemConn()
{
global $CONF_LIB_PATH;
/**
*<P>Création de la connexion à la base de données en fonction de la configuration</P>
*<P>L'objet est nommé SYSTEM_DATABASE_CONN<br><br>
* Il est crée é partir du fichier de configuration<br>
* - en fonction du type de la Base de données<br>
* - ces methodes sont les mémes quelque soit la base (voir data_source/database)</P>
*/
# 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__);
}
/**
*<P>Création de la connexion à LDAP si DATA_ACCES_MANAGER_USER = Ldap</P>
*<P>L'objet est nommé SYSTEM_LDAP_CONN<br><br>
*/
/* 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
*<P>Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments</P>
*<P>Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]</P>
* @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
*<P>Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments</P>
*<P>Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]</P>
* @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
*<P>La Variables déclaré est $GLOBALS["SYSTEM_TEMPLATE"]</P>
* @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
*<P>Ces gestionnaire permettent la création, modification des objets systéme</P>
*<P>ils sont crées dans les variables $GLOBALS["SYSTEM_MANAGER"][Manager_name]</P>
* @access private
* @return entier
*/
function makeSystemManager()
{
/* Creation du Manager groupe */
$GLOBALS["SYSTEM_MANAGER"]["GROUP"]=GroupManagerFactory::createInstance( DATA_ACCES_MANAGER_GROUP );
/* Creation du Manager Noeud */
$GLOBALS["SYSTEM_MANAGER"]["NODE"]=NodeManagerFactory::createInstance( DATA_ACCES_MANAGER_NODE );
/* 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
*<P>Recupere toutes les dépendances de l'utilisateur</P>
* @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
*<P>Ces connexions sont utilisées par le systéme pour la récupération et la gestion des éléments</P>
*<P>Les Variables déclarés sont $GLOBALS["SYSTEM_DATABASE_CONN"] et $GLOBALS["SYSTEM_LDAP_CONN"]</P>
* @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; $i<count($tabRight); $i++)
{
$tabRightOid[]=$tabRight[$i]->getObjectId();
}
$objectArray=$GLOBALS["SYSTEM_MANAGER"]["COORDINATION_OBJ"]->createInstanceFromIds($tabRightOid);
$k=0;
/* pour chaque droit */
for ($i=0;$i<count($tabRight);$i++)
{
$tmp=null;
for ($j=0; $j<count($objectArray); $j++)
{
if ($objectArray[$j]->getId()==$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; $i<count($tabRight); $i++)
{
if( $oid == $tabRight[$i]->getObjectId())
{
$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; $i<count($tabObject);$i++)
{
$lib=$tabObject[$i][1]->getName($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; $i<count($tabGroup); $i++)
{
$tabTreeGroup[$i]=$GLOBALS["SYSTEM_MANAGER"]["TREE_GROUP"]->createInstance($tabGroup[$i]->getId());
}
// Retourne les groupes authorisés
return $tabTreeGroup;
}
/**
* Fonction arrayOfAdministrableUserFromTabTreeGroup()
*<P>Recupere tous les utilisateurs pour l'association au tabTreeGroup</P>
* @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; $i<count($tabTreeGroup); $i++)
{
$tabGroupId=array_merge( $tabGroupId, $tabTreeGroup[$i]->getSonArray() );
$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<count($tabGroupId); $i++ )
{
// --> récupération de la liste des users...
$tabGroupUser=array_merge( $tabGroupUser, $GLOBALS["SYSTEM_MANAGER"]["GROUP_USER"]->getInstanceFromGroupId($tabGroupId[$i]) );
}
for ($i=0; $i<count($tabGroupUser); $i++)
{
$tabUserId[$i]=$tabGroupUser[$i]->getUserId();
}
$tabUserId=array_values(array_unique($tabUserId));
for ($i=0; $i<count($tabUserId); $i++ )
{
$tabUser[$i]=$GLOBALS["SYSTEM_MANAGER"]["USER"]->createInstance($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()."<br>";
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."<br>";
echo $str;
}
return true;
}
}
?>