Add useragent in llx_events
This commit is contained in:
parent
5ff8353fc2
commit
192fea4164
@ -81,7 +81,7 @@ $form=new Form($db);
|
||||
$userstatic=new User($db);
|
||||
$usefilter=0;
|
||||
|
||||
$sql = "SELECT e.rowid, e.type, e.ip, e.dateevent,";
|
||||
$sql = "SELECT e.rowid, e.type, e.ip, e.user_agent, e.dateevent,";
|
||||
$sql.= " e.fk_user, e.description,";
|
||||
$sql.= " u.login";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."events as e";
|
||||
@ -91,6 +91,7 @@ if ($_GET["search_code"]) { $usefilter++; $sql.=" AND e.type like '%".$_GET["sea
|
||||
if ($_GET["search_ip"]) { $usefilter++; $sql.=" AND e.ip like '%".$_GET["search_ip"]."%'"; }
|
||||
if ($_GET["search_user"]) { $usefilter++; $sql.=" AND u.login like '%".$_GET["search_user"]."%'"; }
|
||||
if ($_GET["search_desc"]) { $usefilter++; $sql.=" AND e.description like '%".$_GET["search_desc"]."%'"; }
|
||||
if ($_GET["search_ua"]) { $usefilter++; $sql.=" AND e.user_agent like '%".$_GET["search_ua"]."%'"; }
|
||||
$sql.= $db->order($sortfield,$sortorder);
|
||||
$sql.= $db->plimit($conf->liste_limit+1, $offset);
|
||||
//print $sql;
|
||||
@ -193,7 +194,11 @@ if ($result)
|
||||
print $text;
|
||||
print '</td>';
|
||||
|
||||
print '<td> </td>';
|
||||
// More informations
|
||||
print '<td align="right">';
|
||||
$htmltext='<b>'.$langs->trans("UserAgent").'</b>: '.$obj->user_agent;
|
||||
print $form->textwithpicto('',$htmltext);
|
||||
print '</td>';
|
||||
|
||||
print "</tr>\n";
|
||||
$i++;
|
||||
|
||||
@ -33,10 +33,10 @@
|
||||
|
||||
|
||||
/**
|
||||
\class Events
|
||||
\brief Events class
|
||||
\remarks Initialy built by build_class_from_table on 2008-02-28 17:25
|
||||
*/
|
||||
\class Events
|
||||
\brief Events class
|
||||
\remarks Initialy built by build_class_from_table on 2008-02-28 17:25
|
||||
*/
|
||||
class Events // extends CommonObject
|
||||
{
|
||||
var $db; //!< To store db handler
|
||||
@ -45,7 +45,7 @@ class Events // extends CommonObject
|
||||
var $element='events'; //!< Id that identify managed objects
|
||||
var $table_element='events'; //!< Name of table without prefix where object is stored
|
||||
|
||||
var $id;
|
||||
var $id;
|
||||
|
||||
var $tms;
|
||||
var $type;
|
||||
@ -55,156 +55,162 @@ class Events // extends CommonObject
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Constructor
|
||||
* \param DB Database handler
|
||||
*/
|
||||
function Events($DB)
|
||||
{
|
||||
$this->db = $DB;
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* \brief Constructor
|
||||
* \param DB Database handler
|
||||
*/
|
||||
function Events($DB)
|
||||
{
|
||||
$this->db = $DB;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Create in database
|
||||
* \param user User that create
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function create($user)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
// Clean parameters
|
||||
$this->id=trim($this->id);
|
||||
$this->description=trim($this->description);
|
||||
|
||||
// Check parameters
|
||||
if (! $this->description) { $this->error='ErrorBadValueForParameter'; return -1; }
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."events(";
|
||||
$sql.= "type,";
|
||||
$sql.= "entity,";
|
||||
$sql.= "ip,";
|
||||
$sql.= "dateevent,";
|
||||
$sql.= "fk_user,";
|
||||
$sql.= "description";
|
||||
$sql.= ") VALUES (";
|
||||
$sql.= " '".$this->type."',";
|
||||
$sql.= " ".$conf->entity.",";
|
||||
$sql.= " '".$_SERVER['REMOTE_ADDR']."',";
|
||||
$sql.= " ".$this->db->idate($this->dateevent).",";
|
||||
$sql.= " ".($user->id?"'".$user->id."'":'NULL').",";
|
||||
$sql.= " '".addslashes($this->description)."'";
|
||||
$sql.= ")";
|
||||
/**
|
||||
* \brief Create in database
|
||||
* \param user User that create
|
||||
* \return int <0 si ko, >0 si ok
|
||||
*/
|
||||
function create($user)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
dol_syslog("Events::create sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."events");
|
||||
return $this->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::create ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
// Clean parameters
|
||||
$this->id=trim($this->id);
|
||||
$this->description=trim($this->description);
|
||||
|
||||
// Check parameters
|
||||
if (! $this->description) { $this->error='ErrorBadValueForParameter'; return -1; }
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."events(";
|
||||
$sql.= "type,";
|
||||
$sql.= "entity,";
|
||||
$sql.= "ip,";
|
||||
$sql.= "user_agent,";
|
||||
$sql.= "dateevent,";
|
||||
$sql.= "fk_user,";
|
||||
$sql.= "description";
|
||||
$sql.= ") VALUES (";
|
||||
$sql.= " '".$this->type."',";
|
||||
$sql.= " ".$conf->entity.",";
|
||||
$sql.= " '".$_SERVER['REMOTE_ADDR']."',";
|
||||
$sql.= " ".($_SERVER['HTTP_USER_AGENT']?"'".$_SERVER['HTTP_USER_AGENT']."'":'NULL').",";
|
||||
$sql.= " ".$this->db->idate($this->dateevent).",";
|
||||
$sql.= " ".($user->id?"'".$user->id."'":'NULL').",";
|
||||
$sql.= " '".addslashes($this->description)."'";
|
||||
$sql.= ")";
|
||||
|
||||
dol_syslog("Events::create sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."events");
|
||||
return $this->id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::create ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* \brief Update database
|
||||
* \param user User that modify
|
||||
* \param notrigger 0=no, 1=yes (no update trigger)
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user=0, $notrigger=0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
// Clean parameters
|
||||
$this->id=trim($this->id);
|
||||
$this->type=trim($this->type);
|
||||
$this->description=trim($this->description);
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."events SET";
|
||||
$sql.= " type='".$this->type."',";
|
||||
$sql.= " dateevent=".$this->db->idate($this->dateevent).",";
|
||||
$sql.= " description='".addslashes($this->description)."'";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
dol_syslog("Events::update sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::update ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
/**
|
||||
* \brief Update database
|
||||
* \param user User that modify
|
||||
* \param notrigger 0=no, 1=yes (no update trigger)
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function update($user=0, $notrigger=0)
|
||||
{
|
||||
global $conf, $langs;
|
||||
|
||||
// Clean parameters
|
||||
$this->id=trim($this->id);
|
||||
$this->type=trim($this->type);
|
||||
$this->description=trim($this->description);
|
||||
|
||||
// Check parameters
|
||||
// Put here code to add control on parameters values
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."events SET";
|
||||
$sql.= " type='".$this->type."',";
|
||||
$sql.= " dateevent=".$this->db->idate($this->dateevent).",";
|
||||
$sql.= " description='".addslashes($this->description)."'";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
dol_syslog("Events::update sql=".$sql, LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::update ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* \brief Load object in memory from database
|
||||
* \param id id object
|
||||
* \param user User that load
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id, $user=0)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
$sql = "SELECT";
|
||||
$sql.= " t.rowid,";
|
||||
$sql.= " ".$this->db->pdate('t.tms').",";
|
||||
$sql.= " t.type,";
|
||||
$sql.= " t.entity,";
|
||||
$sql.= " ".$this->db->pdate('t.dateevent').",";
|
||||
$sql.= " t.description";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."events as t";
|
||||
$sql.= " WHERE t.rowid = ".$id;
|
||||
/**
|
||||
* \brief Load object in memory from database
|
||||
* \param id id object
|
||||
* \param user User that load
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function fetch($id, $user=0)
|
||||
{
|
||||
global $langs;
|
||||
|
||||
dol_syslog("Events::fetch sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->tms = $obj->tms;
|
||||
$this->type = $obj->type;
|
||||
$this->entity = $obj->entity;
|
||||
$this->dateevent = $obj->dateevent;
|
||||
$this->description = $obj->description;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
$sql = "SELECT";
|
||||
$sql.= " t.rowid,";
|
||||
$sql.= " ".$this->db->pdate('t.tms').",";
|
||||
$sql.= " t.type,";
|
||||
$sql.= " t.entity,";
|
||||
$sql.= " ".$this->db->pdate('t.dateevent').",";
|
||||
$sql.= " t.description,";
|
||||
$sql.= " t.ip,";
|
||||
$sql.= " t.user_agent";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."events as t";
|
||||
$sql.= " WHERE t.rowid = ".$id;
|
||||
|
||||
dol_syslog("Events::fetch sql=".$sql, LOG_DEBUG);
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
if ($this->db->num_rows($resql))
|
||||
{
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
|
||||
$this->id = $obj->rowid;
|
||||
$this->tms = $obj->tms;
|
||||
$this->type = $obj->type;
|
||||
$this->entity = $obj->entity;
|
||||
$this->dateevent = $obj->dateevent;
|
||||
$this->description = $obj->description;
|
||||
$this->ip = $obj->ip;
|
||||
$this->user_agent = $obj->user_agent;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::fetch ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* \brief Delete object in database
|
||||
* \param user User that delete
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
/**
|
||||
* \brief Delete object in database
|
||||
* \param user User that delete
|
||||
* \return int <0 if KO, >0 if OK
|
||||
*/
|
||||
function delete($user)
|
||||
{
|
||||
global $conf, $langs;
|
||||
@ -212,12 +218,12 @@ class Events // extends CommonObject
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."events";
|
||||
$sql.= " WHERE rowid=".$this->id;
|
||||
|
||||
dol_syslog("Events::delete sql=".$sql);
|
||||
dol_syslog("Events::delete sql=".$sql);
|
||||
$resql = $this->db->query($sql);
|
||||
if (! $resql)
|
||||
{
|
||||
$this->error="Error ".$this->db->lasterror();
|
||||
dol_syslog("Events::delete ".$this->error, LOG_ERR);
|
||||
dol_syslog("Events::delete ".$this->error, LOG_ERR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
@ -74,7 +74,7 @@ class Form
|
||||
|
||||
/**
|
||||
* \brief Show a text and picto with tooltip on text or picto
|
||||
* \param text Texte a afficher
|
||||
* \param text Texte to show
|
||||
* \param htmltext Contenu html du tooltip, code en Html / UTF8
|
||||
* \param tooltipon 1=tooltip sur texte, 2=tooltip sur picto, 3=tooltip sur les 2, 4=tooltip sur les 2 et force en Ajax
|
||||
* \param direction -1=Le picto est avant, 0=pas de picto, 1=le picto est apres
|
||||
@ -83,6 +83,7 @@ class Form
|
||||
* \param width Width of tooltip
|
||||
* \param shiftX Shift of tooltip
|
||||
* \return string Code html du tooltip (texte+picto)
|
||||
* \remarks Use function textwithpicto if you can.
|
||||
*/
|
||||
function textwithtooltip($text,$htmltext,$tooltipon=1,$direction=0,$img='',$i=1,$width='200',$shiftX='10')
|
||||
{
|
||||
|
||||
@ -100,11 +100,11 @@ class InterfaceLogevents
|
||||
function run_trigger($action,$object,$user,$langs,$conf,$entity=1)
|
||||
{
|
||||
if (! empty($conf->global->MAIN_LOGEVENTS_DISABLE_ALL)) return 0; // Log events is disabled (hidden features)
|
||||
|
||||
|
||||
$key='MAIN_LOGEVENTS_'.$action;
|
||||
//dol_syslog("xxxxxxxxxxx".$key);
|
||||
if (empty($conf->global->$key)) return 0; // Log events not enabled for this action
|
||||
|
||||
|
||||
if (empty($conf->entity)) $conf->entity = $entity; // forcing of the entity if it's not defined (ex: in login form)
|
||||
|
||||
// Actions
|
||||
@ -241,6 +241,7 @@ class InterfaceLogevents
|
||||
$event->dateevent=$this->date;
|
||||
$event->label=$this->texte;
|
||||
$event->description=$this->desc;
|
||||
$event->user_agent=$_SERVER["HTTP_USER_AGENT"];
|
||||
|
||||
$result=$event->create($user);
|
||||
if ($result > 0)
|
||||
|
||||
@ -215,6 +215,8 @@ UPDATE llx_const SET entity=0 WHERE name='SYSLOG_LEVEL';
|
||||
ALTER TABLE llx_dolibarr_modules drop primary KEY;
|
||||
ALTER TABLE llx_dolibarr_modules ADD PRIMARY KEY pk_dolibarr_modules (numero, entity);
|
||||
|
||||
ALTER TABLE llx_events add column user_agent varchar(128) NULL after ip;
|
||||
|
||||
|
||||
alter table llx_commande_fournisseur add column ref_supplier varchar(30) after entity;
|
||||
|
||||
|
||||
@ -33,6 +33,7 @@ create table llx_events
|
||||
fk_user integer, -- id user
|
||||
description varchar(250) NOT NULL, -- full description of action
|
||||
ip varchar(32) NOT NULL, -- ip
|
||||
user_agent varchar(128) NULL, -- user agent
|
||||
fk_object integer -- id of related object
|
||||
) type=innodb;
|
||||
|
||||
|
||||
@ -242,7 +242,7 @@ if (empty($dolibarr_main_authentication)) $dolibarr_main_authentication='http,do
|
||||
if ($dolibarr_main_authentication == 'forceuser' && empty($dolibarr_auto_user)) $dolibarr_auto_user='auto';
|
||||
|
||||
// Set authmode
|
||||
$authmode=split(',',$dolibarr_main_authentication);
|
||||
$authmode=explode(',',$dolibarr_main_authentication);
|
||||
|
||||
// No authentication mode
|
||||
if (! sizeof($authmode))
|
||||
|
||||
Loading…
Reference in New Issue
Block a user