data = $data; $this->return_image = $return_image; } function track($data = false) { $data = ($data) ? $data : $this->data; $newsletter = $this->getNewsletter($data['newsletter']); $subscriber = $this->getSubscriber($data['subscriber']); $queue = $this->getQueue($data['queue']); if(!$subscriber || !$newsletter || !$queue) { return false; } $statistics = StatisticsOpens::where('subscriber_id', $data['subscriber']) ->where('newsletter_id', $data['newsletter']) ->where('queue_id', $data['queue']) ->findOne(); if(!$statistics) { $statistics = StatisticsOpens::create(); $statistics->newsletter_id = $data['newsletter']; $statistics->subscriber_id = $data['subscriber']; $statistics->queue_id = $data['queue']; $statistics->save(); } if($this->return_image) { $this->returnImage(); } return true; } function getNewsletter($newsletter_id) { $newsletter = Newsletter::findOne($newsletter_id); return ($newsletter) ? $newsletter->asArray() : $newsletter; } function getSubscriber($subscriber_id) { $subscriber = Subscriber::findOne($subscriber_id); return ($subscriber) ? $subscriber->asArray() : $subscriber; } function getQueue($queue_id) { $queue = SendingQueue::findOne($queue_id); return ($queue) ? $queue->asArray() : $queue; } function returnImage() { // return 1x1 pixel transparent gif image header('Content-Type: image/gif'); echo "\x47\x49\x46\x38\x37\x61\x1\x0\x1\x0\x80\x0\x0\xfc\x6a\x6c\x0\x0\x0\x2c\x0\x0\x0\x0\x1\x0\x1\x0\x0\x2\x2\x44\x1\x0\x3b"; exit; } }