Fix: Do not load language file before user lang has been set.

This commit is contained in:
Laurent Destailleur 2009-01-30 22:18:07 +00:00
parent d698e4b4d8
commit 4017a39162
6 changed files with 61 additions and 48 deletions

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -22,14 +22,14 @@
\brief List of security events \brief List of security events
\version $Id$ \version $Id$
*/ */
require_once("./pre.inc.php"); require_once("./pre.inc.php");
if (! $user->admin) if (! $user->admin)
accessforbidden(); accessforbidden();
// Sécurité accés client // Sécurité accés client
if ($user->societe_id > 0) if ($user->societe_id > 0)
{ {
$action = ''; $action = '';
$socid = $user->societe_id; $socid = $user->societe_id;
@ -103,7 +103,7 @@ if ($result)
$form->form_confirm($_SERVER["PHP_SELF"], $langs->trans('PurgeAuditEvents'), $langs->trans('ConfirmPurgeAuditEvents'), 'confirm_purge'); $form->form_confirm($_SERVER["PHP_SELF"], $langs->trans('PurgeAuditEvents'), $langs->trans('ConfirmPurgeAuditEvents'), 'confirm_purge');
print '<br>'; print '<br>';
} }
print '<table class="liste" width="100%">'; print '<table class="liste" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"e.dateevent","","",'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),$_SERVER["PHP_SELF"],"e.dateevent","","",'align="left"',$sortfield,$sortorder);
@ -140,7 +140,7 @@ if ($result)
print '<td align="right" class="liste_titre">'; print '<td align="right" class="liste_titre">';
print '<input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">'; print '<input type="image" class="liste_titre" src="'.DOL_URL_ROOT.'/theme/'.$conf->theme.'/img/search.png" name="button_search" alt="'.$langs->trans("Search").'">';
print '</td>'; print '</td>';
print "</tr>\n"; print "</tr>\n";
print '</form>'; print '</form>';
@ -149,11 +149,11 @@ if ($result)
while ($i < min($num,$conf->liste_limit)) while ($i < min($num,$conf->liste_limit))
{ {
$obj = $db->fetch_object(); $obj = $db->fetch_object();
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
// Date // Date
print '<td align="left" nowrap="nowrap">'.dolibarr_print_date($obj->dateevent,'%Y-%m-%d %H:%M:%S').'</td>'; print '<td align="left" nowrap="nowrap">'.dolibarr_print_date($obj->dateevent,'%Y-%m-%d %H:%M:%S').'</td>';
@ -175,14 +175,22 @@ if ($result)
print '</td>'; print '</td>';
// Description // Description
print '<td>'.$obj->description.'</td>'; print '<td>';
$text=$langs->trans($obj->description);
if (eregi('\((.*)\)',$obj->description,$reg))
{
$val=split(',',$reg[1]);
$text=$langs->trans($val[0], isset($val[1])?$val[1]:'', isset($val[2])?$val[2]:'', isset($val[3])?$val[3]:'', isset($val[4])?$val[4]:'');
}
print $text;
print '</td>';
print '<td>&nbsp;</td>'; print '<td>&nbsp;</td>';
print "</tr>\n"; print "</tr>\n";
$i++; $i++;
} }
if ($num == 0) if ($num == 0)
{ {
if ($usefilter) print '<tr><td colspan="6">'.$langs->trans("NoEventFoundWithCriteria").'</td></tr>'; if ($usefilter) print '<tr><td colspan="6">'.$langs->trans("NoEventFoundWithCriteria").'</td></tr>';
@ -190,7 +198,7 @@ if ($result)
} }
print "</table>"; print "</table>";
$db->free(); $db->free();
if ($num && $_GET["action"] != 'purge') if ($num && $_GET["action"] != 'purge')
{ {
print '<div class="tabsAction">'; print '<div class="tabsAction">';

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2005-2008 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -17,28 +17,27 @@
*/ */
/** /**
\file htdocs/includes/triggers/interface_all_Logevents.class.php * \file htdocs/includes/triggers/interface_all_Logevents.class.php
\ingroup core * \ingroup core
\brief Trigger file for * \brief Trigger file for
\version $Id$ * \version $Id$
*/ */
/** /**
\class InterfaceLogevents * \class InterfaceLogevents
\brief Classe des fonctions triggers des actions agenda * \brief Classe des fonctions triggers des actions agenda
*/ */
class InterfaceLogevents class InterfaceLogevents
{ {
var $db; var $db;
var $error; var $error;
var $date; var $date;
var $duree; var $duree;
var $texte; var $texte;
var $desc; var $desc;
/** /**
* \brief Constructeur. * \brief Constructeur.
* \param DB Handler d'acces base * \param DB Handler d'acces base
@ -46,7 +45,7 @@ class InterfaceLogevents
function InterfaceLogevents($DB) function InterfaceLogevents($DB)
{ {
$this->db = $DB ; $this->db = $DB ;
$this->name = eregi_replace('^Interface','',get_class($this)); $this->name = eregi_replace('^Interface','',get_class($this));
$this->family = "core"; $this->family = "core";
$this->description = "Triggers of this module allows to add security event records inside Dolibarr."; $this->description = "Triggers of this module allows to add security event records inside Dolibarr.";
@ -61,7 +60,7 @@ class InterfaceLogevents
{ {
return $this->name; return $this->name;
} }
/** /**
* \brief Renvoi descriptif du lot de triggers * \brief Renvoi descriptif du lot de triggers
* \return string Descriptif du lot de triggers * \return string Descriptif du lot de triggers
@ -103,35 +102,33 @@ class InterfaceLogevents
$key='MAIN_LOGEVENTS_'.$action; $key='MAIN_LOGEVENTS_'.$action;
//dolibarr_syslog("xxxxxxxxxxx".$key); //dolibarr_syslog("xxxxxxxxxxx".$key);
if (empty($conf->global->$key)) return 0; // Log events not enabled for this action if (empty($conf->global->$key)) return 0; // Log events not enabled for this action
// Actions // Actions
if ($action == 'USER_LOGIN') if ($action == 'USER_LOGIN')
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$this->date=time(); $this->date=time();
$this->duree=0; $this->duree=0;
$this->texte=$langs->transnoentities("UserLogged",$object->login); $this->texte="(UserLogged,".$object->login.")";
$this->desc=$langs->transnoentities("UserLogged",$object->login); $this->desc="(UserLogged,".$object->login.")";
} }
if ($action == 'USER_LOGIN_FAILED') if ($action == 'USER_LOGIN_FAILED')
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$this->date=time(); $this->date=time();
$this->duree=0; $this->duree=0;
$this->texte=$object->trigger_mesg; // Message direct $this->texte=$object->trigger_mesg; // Message direct
$this->desc=$object->trigger_mesg; // Message direct $this->desc=$object->trigger_mesg; // Message direct
} }
if ($action == 'USER_CREATE') if ($action == 'USER_CREATE')
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("users"); $langs->load("users");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$this->date=time(); $this->date=time();
$this->duree=0; $this->duree=0;
@ -255,7 +252,7 @@ class InterfaceLogevents
{ {
dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id); dolibarr_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
$langs->load("other"); $langs->load("other");
// Initialisation donnees (date,duree,texte,desc) // Initialisation donnees (date,duree,texte,desc)
$this->date=time(); $this->date=time();
$this->duree=0; $this->duree=0;
@ -337,7 +334,7 @@ class InterfaceLogevents
$this->desc=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref); $this->desc=$langs->transnoentities("PropalClosedRefusedInDolibarr",$object->ref);
$this->desc.="\n".$langs->transnoentities("Author").': '.$user->login; $this->desc.="\n".$langs->transnoentities("Author").': '.$user->login;
} }
// Invoices // Invoices
elseif ($action == 'BILL_VALIDATE') elseif ($action == 'BILL_VALIDATE')
{ {
@ -500,7 +497,7 @@ class InterfaceLogevents
if ($this->date) if ($this->date)
{ {
include_once(DOL_DOCUMENT_ROOT.'/core/events.class.php'); include_once(DOL_DOCUMENT_ROOT.'/core/events.class.php');
$event=new Events($this->db); $event=new Events($this->db);
$event->type=$action; $event->type=$action;
$event->dateevent=$this->date; $event->dateevent=$this->date;

View File

@ -309,7 +309,6 @@ if (! isset($_SESSION["dol_login"]))
session_name($sessionname); session_name($sessionname);
session_start(); session_start();
$langs->load('main');
if ($resultFetchUser == 0) if ($resultFetchUser == 0)
{ {
$langs->load('main'); $langs->load('main');
@ -350,7 +349,6 @@ else
session_name($sessionname); session_name($sessionname);
session_start(); session_start();
$langs->load('main');
if ($resultFetchUser == 0) if ($resultFetchUser == 0)
{ {
$langs->load('main'); $langs->load('main');
@ -901,13 +899,13 @@ function left_menu($menu_array, $helppagename='', $form_search='')
{ {
print $form_search; print $form_search;
} }
// Zone d'affichage permanente des marque pages // Zone d'affichage permanente des marque pages
if ($conf->bookmark->enabled && $user->rights->bookmark->lire) if ($conf->bookmark->enabled && $user->rights->bookmark->lire)
{ {
include_once (DOL_DOCUMENT_ROOT.'/bookmarks/bookmarks.lib.php'); include_once (DOL_DOCUMENT_ROOT.'/bookmarks/bookmarks.lib.php');
$langs->load("bookmarks"); $langs->load("bookmarks");
$ret=printBookmarksList($db, $langs); $ret=printBookmarksList($db, $langs);
print "\n"; print "\n";
print "<!-- Begin Bookmarks -->\n"; print "<!-- Begin Bookmarks -->\n";

View File

@ -69,8 +69,8 @@ function llxHeader($head = "")
if ($user->rights->propale->lire) if ($user->rights->propale->lire)
{ {
$langs->load("propal"); $langs->load("propal");
$menu->add_submenu(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop")); $menu->add_submenu(DOL_URL_ROOT."/comm/propal.php", $langs->trans("Prop"));
} }
} }

View File

@ -167,7 +167,7 @@ class Translate {
/** /**
* \brief Load in a memory array, translation key-value for a particular file. * \brief Load in a memory array, translation key-value for a particular file.
* If data for file already loaded, do nothing. * If data for file already loaded, do nothing.
* All data in translation array are stored in ISO-8859-1 format. * All data in translation array are stored in UTF-8 format.
* \param domain File name to load (.lang file). Use @ before value if domain is in a module directory. * \param domain File name to load (.lang file). Use @ before value if domain is in a module directory.
* \param alt Use alternate file even if file in target language is found * \param alt Use alternate file even if file in target language is found
* \return int <0 if KO, >0 if OK * \return int <0 if KO, >0 if OK
@ -176,7 +176,7 @@ class Translate {
*/ */
function Load($domain,$alt=0) function Load($domain,$alt=0)
{ {
// dolibarr_syslog("Translate::Load domain=".$domain." alt=".$alt); dolibarr_syslog("Translate::Load domain=".$domain." alt=".$alt);
// Check parameters // Check parameters
if (empty($domain)) if (empty($domain))
@ -303,6 +303,16 @@ class Translate {
} }
/**
* \brief Mark domain as not loaded to be able to load it again.
* \param domain File name to load (.lang file). Use @ before value if domain is in a module directory.
*/
function UnLoad($domain)
{
dolibarr_syslog("Translate::UnLoad domain=".$domain." marked as not loaded", LOG_DEBUG);
$this->tab_loaded[$domain]=0;
}
/** /**
* \brief Retourne la liste des domaines charg<EFBFBD>es en memoire * \brief Retourne la liste des domaines charg<EFBFBD>es en memoire
* \return array Tableau des domaines charg<EFBFBD>es * \return array Tableau des domaines charg<EFBFBD>es

View File

@ -1086,15 +1086,15 @@ class User extends CommonObject
*/ */
function update_last_login_date() function update_last_login_date()
{ {
dolibarr_syslog ("Mise a jour date derniere connexion pour user->id=".$this->id); $now=gmmktime();
$now=time();
$sql = "UPDATE ".MAIN_DB_PREFIX."user SET"; $sql = "UPDATE ".MAIN_DB_PREFIX."user SET";
$sql.= " datepreviouslogin = datelastlogin,"; $sql.= " datepreviouslogin = datelastlogin,";
$sql.= " datelastlogin = ".$this->db->idate($now).","; $sql.= " datelastlogin = ".$this->db->idate($now).",";
$sql.= " tms = tms"; // La date de derniere modif doit changer sauf pour la mise a jour de date de derniere connexion $sql.= " tms = tms"; // La date de derniere modif doit changer sauf pour la mise a jour de date de derniere connexion
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
dolibarr_syslog ("Update last login date for user->id=".$this->id." ".$sql, LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {