|
Server : Apache/2.4.18 (Ubuntu) System : Linux canvaswebdesign 3.13.0-71-generic #114-Ubuntu SMP Tue Dec 1 02:34:22 UTC 2015 x86_64 User : oppastar ( 1041) PHP Version : 7.0.33-0ubuntu0.16.04.15 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority, Directory : /var/www/laciasmara.com/public_html/shop/application/models/ |
Upload File : |
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class Campaign_email_log_m extends MY_Model
{
protected $table = 'campaign_email_logs';
protected $fillable = array('campaign_id', 'subscriber_id', 'email', 'status', 'error_message', 'sent_at', 'delivered_at', 'opened_at', 'clicked_at', 'bounced_at', 'unsubscribed_at', 'tracking_id', 'user_agent', 'ip_address');
/**
* Log email sent
*/
public function log_sent($campaign_id, $subscriber_id, $email, $status = 'sent', $tracking_id = null)
{
$data = array(
'campaign_id' => $campaign_id,
'subscriber_id' => $subscriber_id,
'email' => $email,
'status' => $status,
'tracking_id' => $tracking_id ?: $this->generate_tracking_id(),
'sent_at' => date('Y-m-d H:i:s')
);
return $this->insert($data);
}
/**
* Generate unique tracking ID
*/
private function generate_tracking_id()
{
return md5(uniqid(rand(), true));
}
/**
* Track email open
*/
public function track_open($tracking_id, $ip_address = null, $user_agent = null)
{
$data = array(
'status' => 'opened',
'opened_at' => date('Y-m-d H:i:s'),
'ip_address' => $ip_address,
'user_agent' => $user_agent
);
$this->db->where('tracking_id', $tracking_id);
return $this->db->update($this->table, $data);
}
/**
* Track email click
*/
public function track_click($tracking_id, $url, $ip_address = null, $user_agent = null)
{
// Update email log
$email_log = $this->_get_by(array('tracking_id' => $tracking_id));
if ($email_log) {
$this->db->where('tracking_id', $tracking_id);
$this->db->update($this->table, array(
'status' => 'clicked',
'clicked_at' => date('Y-m-d H:i:s')
));
// Insert click tracking record
$click_data = array(
'email_log_id' => $email_log['id'],
'url' => $url,
'ip_address' => $ip_address,
'user_agent' => $user_agent
);
$this->db->insert('campaign_click_tracking', $click_data);
return true;
}
return false;
}
}