1505 lines
52 KiB
PHP
Executable File
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 © 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;
|
|
}
|
|
}
|
|
?>
|