Optimisation chargement permissions

This commit is contained in:
Laurent Destailleur 2007-02-28 03:13:34 +00:00
parent bfe0fea6a5
commit a36e89e585

View File

@ -80,6 +80,9 @@ class User
//! Liste des entrepots auquel a acces l'utilisateur //! Liste des entrepots auquel a acces l'utilisateur
var $entrepots; var $entrepots;
var $tab_loaded=array(); // Tableau pour signaler les permissions deja chargées
/** /**
* \brief Constructeur de la classe * \brief Constructeur de la classe
* \param DB Handler accès base de données * \param DB Handler accès base de données
@ -441,7 +444,7 @@ class User
*/ */
function getrights($module='') function getrights($module='')
{ {
dolibarr_syslog('User::Getrights id='.$this->id.' module='.$module, LOG_DEBUG); if ($module && isset($this->tab_loaded[$module]) && $this->tab_loaded[$module]) { return; } // Le fichier de ce module est deja chargé
if ($this->all_permissions_are_loaded) if ($this->all_permissions_are_loaded)
{ {
@ -450,6 +453,7 @@ class User
} }
// Récupération des droits utilisateurs + récupération des droits groupes // Récupération des droits utilisateurs + récupération des droits groupes
dolibarr_syslog('User::Getrights id='.$this->id.' module='.$module, LOG_DEBUG);
// D'abord les droits utilisateurs // D'abord les droits utilisateurs
$sql = "SELECT r.module, r.perms, r.subperms"; $sql = "SELECT r.module, r.perms, r.subperms";
@ -519,12 +523,17 @@ class User
$this->db->free($result); $this->db->free($result);
} }
if ($module == '') if (! $module)
{ {
// Si module etait non defini, alors on a tout chargé, on peut donc considérer // Si module etait non defini, alors on a tout chargé, on peut donc considérer
// que les droits sont en cache (car tous chargés) pour cet instance de user // que les droits sont en cache (car tous chargés) pour cet instance de user
$this->all_permissions_are_loaded=1; $this->all_permissions_are_loaded=1;
} }
else
{
// Si module défini, on considère chargé en cache que le module
$this->tab_loaded[$module]=1;
}
} }
/** /**