2020-12-03 16:35:44 +01:00
< ? 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 {
2020-12-18 08:01:18 +01:00
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 " ;
2020-12-03 16:35:44 +01:00
// }
}
$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 )
{
2021-04-21 19:00:53 +02:00
global $CONF_COOKIE_ENABLE , $CONF_COOKIE_PREFIX , $CONF_COOKIE_PATH , $CONF_COOKIE_DOMAIN , $CONF_COOKIE_SECURE ;
2020-12-03 16:35:44 +01:00
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 ;
}
2021-04-21 18:27:01 +02:00
// 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' );
2021-04-21 18:51:56 +02:00
setcookie ( $CONF_COOKIE_PREFIX . 'showLandPage' , " false " , $arr_cookie_options );
2021-04-21 18:27:01 +02:00
2020-12-03 16:35:44 +01:00
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 " ;
2020-12-07 13:28:14 +01:00
$MaTemplate = new ModeliXeQware ( $path );
2020-12-03 16:35:44 +01:00
$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";
2021-04-30 10:16:09 +02:00
$message = " auth-success: " . date ( " Y-m-d H:i:s " ) . " Authentication success for user " . $login . " from " . $GLOBALS [ 'SYSTEM_IP' ] . " . 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 ;
2020-12-03 16:35:44 +01:00
$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 */
2021-04-30 10:16:09 +02:00
// $clientIp=isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
2020-12-03 16:35:44 +01:00
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";
2021-04-30 10:16:09 +02:00
$message = " auth-failed: " . date ( " Y-m-d H:i:s " ) . " Authentication attempt with user " . $login . " from " . $GLOBALS [ 'SYSTEM_IP' ] . " . Session is uid: " . $GLOBALS [ " SYSTEM_USER_SESSION " ] -> user -> getId ();
2020-12-03 16:35:44 +01:00
addToLog ( $message , $CONF_MESSAGE_FILE );
2020-12-11 06:15:15 +01:00
} else {
$file = $CONF_AUTH_FILE ;
if ( isset ( $HTTP_REFERER ))
if ( strpos ( $HTTP_REFERER , $SERVER_NAME ) === false )
$file = $CONF_AUTH_ALIEN_FILE ;
2021-04-30 10:16:09 +02:00
$message = " auth-failed: " . date ( " Y-m-d H:i:s " ) . " Authentication attempt with user " . $login . " from " . $GLOBALS [ 'SYSTEM_IP' ] . " . Session is uid: " . $GLOBALS [ " SYSTEM_USER_SESSION " ] -> user -> getId ();
2020-12-11 06:15:15 +01:00
addToLog ( $message , $file );
2020-12-03 16:35:44 +01:00
}
// 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)
// {
2021-06-08 17:03:45 +02:00
$clientIp = isset ( $_SERVER [ 'HTTP_CLIENT_IP' ]) ? $_SERVER [ 'HTTP_CLIENT_IP' ] : ( isset ( $_SERVER [ 'HTTP_X_FORWARDED_FOR' ]) ? $_SERVER [ 'HTTP_X_FORWARDED_FOR' ] : $_SERVER [ 'REMOTE_ADDR' ]);
2020-12-03 16:35:44 +01:00
// $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 (){
2020-12-07 13:28:14 +01:00
$GLOBALS [ " SYSTEM_TEMPLATE " ] = new ModeliXeQware ( $GLOBALS [ 'SYSTEM_TEMPLATE_PATH' ] . $GLOBALS [ 'SYSTEM_TEMPLATE_DIR' ] . $GLOBALS [ 'SYSTEM_TEMPLATE_MAIN' ]);
2020-12-03 16:35:44 +01:00
$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 );
2021-04-19 16:17:43 +02:00
/* Creation du Manager Node */
2020-12-03 16:35:44 +01:00
$GLOBALS [ " SYSTEM_MANAGER " ][ " NODE " ] = NodeManagerFactory :: createInstance ( DATA_ACCES_MANAGER_NODE );
2021-04-19 16:17:43 +02:00
/* Creation du Manager NodSettings */
$GLOBALS [ " SYSTEM_MANAGER " ][ " NODESETTINGS " ] = NodeSettingsManagerFactory :: createInstance ( DATA_ACCES_MANAGER_NODESETTINGS );
2020-12-03 16:35:44 +01:00
/* 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 ;
}
/**
2021-04-01 18:02:05 +02:00
* getDefaultRight : renvoi le droit par défaut
2020-12-03 16:35:44 +01:00
* @ access public
2021-04-01 18:02:05 +02:00
* @ return tableau tableau d ' objets du droit
2020-12-03 16:35:44 +01:00
*/
function getDefaultRight ()
{
// var_dump($GLOBALS["SYSTEM_USER_SESSION"]->navigationNodeId);
$tabObject = $this -> getListObjectForNavigation ( $GLOBALS [ " SYSTEM_USER_SESSION " ] -> navigationNodeId );
2021-03-31 02:34:56 +02:00
2020-12-03 16:35:44 +01:00
/* 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 );
2021-06-17 14:27:35 +02:00
// if (list($i, $lib) = each($tabName))
// PHP 8.0
if ( is_array ( $tabName ) && count ( $tabName ) >= 1 )
2020-12-03 16:35:44 +01:00
{
2021-06-17 14:27:35 +02:00
foreach ( $tabName as $i => $lib )
{
return $tabObject [ $i ][ 0 ];
}
} else {
2020-12-03 16:35:44 +01:00
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 ;
}
}
?>