<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Event_logger {
/**
* ci
*
* @param instance object
*/
protected $CI;
/**
* log table name
*
* @param string
*/
private $_log_table_name = 'event_logs';
// We'll use a constructor, as you can't directly call a function
// from a property definition.
public function __construct()
{
// Assign the CodeIgniter super-object
$this->CI =& get_instance();
$this->CI->load->database();
$this->_log_table_name = 'event_logs';
}
/*
Logger Function
*/
public function log_event($event,$data,$table,$unique_identifier="",$unique_identifier_value=''){
if(!$this->CI->db->table_exists($table) )
{
echo "Event Logger : Table - $table does not exists";
exit();
}
if($event == "update")
{
if(empty($unique_identifier) || empty($unique_identifier_value))
{
echo "Event Logger : Update operation unique key not defined";
exit();
}
$logData = "";
if(!empty($data) > 0 ){
foreach($data as $key=>$value){
$sql = "SELECT $key FROM $table WHERE $unique_identifier = $unique_identifier_value";
$query = $this->CI->db->query($sql);
$row = $query->row();
if (isset($row)){
if(strtolower($row->$key) != strtolower($value)){
$logData[$key] = array("old_value"=>$row->$key,"new_value" => $value);
}
}
}
if(!empty($logData)){
$finalData = array(
'event_name' =>$event,
'event_table' =>$table,
'table_unique_id' =>$unique_identifier,
'unique_id' =>$unique_identifier_value,
'event_values' =>json_encode($logData),
'updated_by' => $this->CI->session->userdata('admin_id'),
'ip_address' => $this->CI->input->ip_address(),
'user_agent' => $this->CI->input->user_agent(),
'added_on' => date('Y-m-d H:i:s'),
);
$this->CI->db->insert($this->_log_table_name, $finalData);
}
}else{
echo "Event Logger : update event data is blank";
exit();
}
}
if($event == "insert"){
$finalData = array(
'event_name' => $event,
'event_table' =>$table,
'event_values' =>json_encode($data),
'updated_by' => $this->CI->session->userdata('admin_id'),
'ip_address' => $this->CI->input->ip_address(),
'user_agent' => $this->CI->input->user_agent(),
'added_on' => date('Y-m-d H:i:s'),
);
$this->CI->db->insert($this->_log_table_name, $finalData);
}
if($event == "delete"){
$sql = "SELECT * FROM $table WHERE $unique_identifier = $unique_identifier_value";
$query = $this->CI->db->query($sql);
$row = $query->row();
$finalData = array(
'event_name' => $event,
'event_table' =>$table,
'event_values' =>json_encode($row),
'updated_by' => $this->CI->session->userdata('admin_id'),
'ip_address' => $this->CI->input->ip_address(),
'user_agent' => $this->CI->input->user_agent(),
'added_on' => date('Y-m-d H:i:s'),
);
$this->CI->db->insert($this->_log_table_name, $finalData);
}
}
}
Leave a Reply