diff --git a/htdocs/admin/events.php b/htdocs/admin/events.php
index 85accd21fd7239be0ffeeabc83a530d1972b45b3..13186d2988cb9875b5970ff11352872bb2b97ff0 100644
--- a/htdocs/admin/events.php
+++ b/htdocs/admin/events.php
@@ -20,16 +20,17 @@
  *	    \file       htdocs/admin/events.php
  *      \ingroup    core
  *      \brief      Log event setup page
- *		\version    $Id$
+ *		\version    $Id: events.php,v 1.20 2011/07/18 23:30:56 eldy Exp $
  */
 
 require("../main.inc.php");
 require_once(DOL_DOCUMENT_ROOT."/lib/admin.lib.php");
 require_once(DOL_DOCUMENT_ROOT."/lib/agenda.lib.php");
+require_once(DOL_DOCUMENT_ROOT."/core/class/events.class.php");
 
 
 if (!$user->admin)
-    accessforbidden();
+accessforbidden();
 
 $langs->load("users");
 $langs->load("admin");
@@ -38,52 +39,19 @@ $langs->load("other");
 $action=GETPOST("action");
 
 
-// List of all events supported by triggers
-$eventstolog=array(
-	array('id'=>'USER_LOGIN',             'test'=>1),
-	array('id'=>'USER_LOGIN_FAILED',      'test'=>1),
-    array('id'=>'USER_LOGOUT',            'test'=>1),
-	array('id'=>'USER_CREATE',            'test'=>1),
-	array('id'=>'USER_MODIFY',            'test'=>1),
-	array('id'=>'USER_NEW_PASSWORD',      'test'=>1),
-	array('id'=>'USER_ENABLEDISABLE',     'test'=>1),
-	array('id'=>'USER_DELETE',            'test'=>1),
-	array('id'=>'GROUP_CREATE',           'test'=>1),
-	array('id'=>'GROUP_MODIFY',           'test'=>1),
-	array('id'=>'GROUP_DELETE',           'test'=>1),
-/*	array('id'=>'ACTION_CREATE',          'test'=>$conf->societe->enabled),
-	array('id'=>'COMPANY_CREATE',         'test'=>$conf->societe->enabled),
-	array('id'=>'CONTRACT_VALIDATE',      'test'=>$conf->contrat->enabled),
-	array('id'=>'PROPAL_VALIDATE',        'test'=>$conf->propal->enabled),
-	array('id'=>'PROPAL_CLOSE_SIGNED',    'test'=>$conf->propal->enabled),
-	array('id'=>'PROPAL_CLOSE_REFUSED',   'test'=>$conf->propal->enabled),
-	array('id'=>'PROPAL_SENTBYMAIL',      'test'=>$conf->propal->enabled),
-	array('id'=>'ORDER_VALIDATE',         'test'=>$conf->commande->enabled),
-	array('id'=>'ORDER_SENTBYMAIL',       'test'=>$conf->commande->enabled),
-	array('id'=>'BILL_VALIDATE',          'test'=>$conf->facture->enabled),
-	array('id'=>'BILL_PAYED',             'test'=>$conf->facture->enabled),
-	array('id'=>'BILL_CANCEL',            'test'=>$conf->facture->enabled),
-	array('id'=>'BILL_SENTBYMAIL',        'test'=>$conf->facture->enabled),
-	array('id'=>'PAYMENT_CUSTOMER_CREATE','test'=>$conf->facture->enabled),
-	array('id'=>'PAYMENT_SUPPLIER_CREATE','test'=>$conf->fournisseur->enabled),
-	array('id'=>'MEMBER_CREATE',          'test'=>$conf->adherent->enabled),
-	array('id'=>'MEMBER_VALIDATE',        'test'=>$conf->adherent->enabled),
-	array('id'=>'MEMBER_SUBSCRIPTION',    'test'=>$conf->adherent->enabled),
-	array('id'=>'MEMBER_MODIFY',          'test'=>$conf->adherent->enabled),
-	array('id'=>'MEMBER_RESILIATE',       'test'=>$conf->adherent->enabled),
-	array('id'=>'MEMBER_DELETE',          'test'=>$conf->adherent->enabled),
-*/
-);
+$securityevent=new Events($db);
+$eventstolog=$securityevent->eventstolog;
+
 
 
 /*
-*	Actions
-*/
+ *	Actions
+ */
 if ($action == "save")
 {
-    $i=0;
+	$i=0;
 
-    $db->begin();
+	$db->begin();
 
 	foreach ($eventstolog as $key => $arr)
 	{
@@ -93,8 +61,8 @@ if ($action == "save")
 		else dolibarr_del_const($db,$param,$conf->entity);
 	}
 
-    $db->commit();
-    $mesg = "<font class=\"ok\">".$langs->trans("SetupSaved")."</font>";
+	$db->commit();
+	$mesg = "<font class=\"ok\">".$langs->trans("SetupSaved")."</font>";
 }
 
 
@@ -130,14 +98,14 @@ foreach ($eventstolog as $key => $arr)
 {
 	if ($arr['id'])
 	{
-	    $var=!$var;
-	    print '<tr '.$bc[$var].'>';
-	    print '<td>'.$arr['id'].'</td>';
-	    print '<td>';
-	    $key='MAIN_LOGEVENTS_'.$arr['id'];
+		$var=!$var;
+		print '<tr '.$bc[$var].'>';
+		print '<td>'.$arr['id'].'</td>';
+		print '<td>';
+		$key='MAIN_LOGEVENTS_'.$arr['id'];
 		$value=$conf->global->$key;
 		print '<input '.$bc[$var].' type="checkbox" name="'.$key.'" value="1"'.($value?' checked="true"':'').'>';
-	    print '</td></tr>'."\n";
+		print '</td></tr>'."\n";
 	}
 }
 print '</table>';
@@ -151,12 +119,10 @@ print "</form>\n";
 print '</div>';
 
 
-
-if ($mesg) print "<br>$mesg<br>";
-print "<br>";
+dol_htmloutput_mesg($mesg);
 
 
 $db->close();
 
-llxFooter('$Date$ - $Revision$');
+llxFooter('$Date: 2011/07/18 23:30:56 $ - $Revision: 1.20 $');
 ?>
diff --git a/htdocs/admin/tools/listevents.php b/htdocs/admin/tools/listevents.php
index f0ad5511ddf08f2377802af1bf551c13820dfe0d..f2ad75a748d8ebf5e0e32babd320afd28b55356b 100644
--- a/htdocs/admin/tools/listevents.php
+++ b/htdocs/admin/tools/listevents.php
@@ -21,19 +21,19 @@
  *		\file       htdocs/admin/tools/listevents.php
  *      \ingroup    core
  *      \brief      List of security events
- *      \version    $Id$
+ *      \version    $Id: listevents.php,v 1.31 2011/07/18 23:28:30 eldy Exp $
  */
 
 require("../../main.inc.php");
-
+require_once(DOL_DOCUMENT_ROOT.'/core/class/events.class.php');
 if (! $user->admin)
-  accessforbidden();
+accessforbidden();
 
 // Security check
 if ($user->societe_id > 0)
 {
-  $action = '';
-  $socid = $user->societe_id;
+	$action = '';
+	$socid = $user->societe_id;
 }
 
 $langs->load("admin");
@@ -61,23 +61,48 @@ $search_ua   = GETPOST("search_ua");
  * Actions
  */
 
+$now=dol_now();
+
 // Purge audit events
 if ($_REQUEST['action'] == 'confirm_purge' && $_REQUEST['confirm'] == 'yes' && $user->admin)
 {
+	$error=0;
+
+	$db->begin();
+	$securityevents=new Events($db);
+
+	// Delete events
 	$sql = "DELETE FROM ".MAIN_DB_PREFIX."events";
 	$sql.= " WHERE entity = ".$conf->entity;
 	$resql = $db->query($sql);
 	if (! $resql)
 	{
+		$error++;
 		$mesg='<div class="error">'.$db->lasterror().'</div>';
 	}
+	// Add event purge
+	$text=$langs->trans("SecurityEventsPurged");
+	$securityevent=new Events($db);
+	$securityevent->type='SECURITY_EVENTS_PURGE';
+	$securityevent->dateevent=$now;
+	$securityevent->description=$text;
+	$result=$securityevent->create($user);
+	if ($result > 0)
+	{
+		dol_syslog($text, LOG_WARNING);
+	}
+	else
+	{
+		$error++;
+		dol_syslog($securityevent->error, LOG_ERROR);
+		$db->rolback();
+	}
 }
 
 
-
 /*
-*	View
-*/
+ *	View
+ */
 
 llxHeader();
 
@@ -215,21 +240,21 @@ if ($result)
 		else print '<tr><td colspan="6">'.$langs->trans("NoEventOrNoAuditSetup").'</td></tr>';
 	}
 	print "</table>";
-	$db->free();
+	$db->free($result);
 
 	if ($num)
 	{
-	    print '<div class="tabsAction">';
-    	print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=purge">'.$langs->trans("Purge").'</a>';
-    	print '</div>';
+		print '<div class="tabsAction">';
+		print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=purge">'.$langs->trans("Purge").'</a>';
+		print '</div>';
 	}
 }
 else
 {
-  dol_print_error($db);
+	dol_print_error($db);
 }
 
 $db->close();
 
-llxFooter('$Date$ - $Revision$');
+llxFooter('$Date: 2011/07/18 23:28:30 $ - $Revision: 1.31 $');
 ?>
\ No newline at end of file
diff --git a/htdocs/core/class/events.class.php b/htdocs/core/class/events.class.php
index 8e5417323486af06650c9756cb3e4b7254b41683..918b93de6adb5fca295f142bcb9f5d2ca1c6983d 100644
--- a/htdocs/core/class/events.class.php
+++ b/htdocs/core/class/events.class.php
@@ -21,7 +21,7 @@
  *      \file       htdocs/core/class/events.class.php
  *      \ingroup    core
  *		\brief      File of class to manage security events.
- *		\version    $Id$
+ *		\version    $Id: events.class.php,v 1.7 2011/07/18 23:32:00 eldy Exp $
  *		\author		Laurent Destailleur
  */
 
@@ -52,6 +52,42 @@ class Events // extends CommonObject
 	var $dateevent;
 	var $description;
 
+	// List of all events supported by triggers
+	var $eventstolog=array(
+		array('id'=>'USER_LOGIN',             'test'=>1),
+		array('id'=>'USER_LOGIN_FAILED',      'test'=>1),
+	    array('id'=>'USER_LOGOUT',            'test'=>1),
+		array('id'=>'USER_CREATE',            'test'=>1),
+		array('id'=>'USER_MODIFY',            'test'=>1),
+		array('id'=>'USER_NEW_PASSWORD',      'test'=>1),
+		array('id'=>'USER_ENABLEDISABLE',     'test'=>1),
+		array('id'=>'USER_DELETE',            'test'=>1),
+		array('id'=>'GROUP_CREATE',           'test'=>1),
+		array('id'=>'GROUP_MODIFY',           'test'=>1),
+		array('id'=>'GROUP_DELETE',           'test'=>1),
+	/*	array('id'=>'ACTION_CREATE',          'test'=>$conf->societe->enabled),
+		array('id'=>'COMPANY_CREATE',         'test'=>$conf->societe->enabled),
+		array('id'=>'CONTRACT_VALIDATE',      'test'=>$conf->contrat->enabled),
+		array('id'=>'PROPAL_VALIDATE',        'test'=>$conf->propal->enabled),
+		array('id'=>'PROPAL_CLOSE_SIGNED',    'test'=>$conf->propal->enabled),
+		array('id'=>'PROPAL_CLOSE_REFUSED',   'test'=>$conf->propal->enabled),
+		array('id'=>'PROPAL_SENTBYMAIL',      'test'=>$conf->propal->enabled),
+		array('id'=>'ORDER_VALIDATE',         'test'=>$conf->commande->enabled),
+		array('id'=>'ORDER_SENTBYMAIL',       'test'=>$conf->commande->enabled),
+		array('id'=>'BILL_VALIDATE',          'test'=>$conf->facture->enabled),
+		array('id'=>'BILL_PAYED',             'test'=>$conf->facture->enabled),
+		array('id'=>'BILL_CANCEL',            'test'=>$conf->facture->enabled),
+		array('id'=>'BILL_SENTBYMAIL',        'test'=>$conf->facture->enabled),
+		array('id'=>'PAYMENT_CUSTOMER_CREATE','test'=>$conf->facture->enabled),
+		array('id'=>'PAYMENT_SUPPLIER_CREATE','test'=>$conf->fournisseur->enabled),
+		array('id'=>'MEMBER_CREATE',          'test'=>$conf->adherent->enabled),
+		array('id'=>'MEMBER_VALIDATE',        'test'=>$conf->adherent->enabled),
+		array('id'=>'MEMBER_SUBSCRIPTION',    'test'=>$conf->adherent->enabled),
+		array('id'=>'MEMBER_MODIFY',          'test'=>$conf->adherent->enabled),
+		array('id'=>'MEMBER_RESILIATE',       'test'=>$conf->adherent->enabled),
+		array('id'=>'MEMBER_DELETE',          'test'=>$conf->adherent->enabled),
+	*/
+	);
 
 
 	/**
@@ -75,7 +111,6 @@ class Events // extends CommonObject
 		global $conf, $langs;
 
 		// Clean parameters
-		$this->id=trim($this->id);
 		$this->description=trim($this->description);
 
 		// Check parameters