1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-09-19 16:01:34 +02:00
invoiceninja/app/Listeners/AnalyticsListener.php

71 lines
1.7 KiB
PHP
Raw Normal View History

2017-01-30 20:40:43 +01:00
<?php
namespace App\Listeners;
use App\Events\PaymentWasCreated;
2017-01-30 20:40:43 +01:00
use Utils;
/**
2017-01-30 20:40:43 +01:00
* Class AnalyticsListener.
*/
class AnalyticsListener
{
/**
* @param PaymentWasCreated $event
*/
public function trackRevenue(PaymentWasCreated $event)
{
$payment = $event->payment;
$invoice = $payment->invoice;
$account = $payment->account;
2016-06-08 15:06:48 +02:00
2017-06-05 15:31:28 +02:00
$analyticsId = false;
if ($account->isNinjaAccount() || $account->account_key == NINJA_LICENSE_ACCOUNT_KEY) {
$analyticsId = env('ANALYTICS_KEY');
} else {
if (Utils::isNinja()) {
$analyticsId = $account->analytics_key;
} else {
$analyticsId = $account->analytics_key ?: env('ANALYTICS_KEY');
}
}
if (! $analyticsId) {
return;
}
2016-06-08 15:06:48 +02:00
$client = $payment->client;
$amount = $payment->amount;
2016-07-28 11:10:57 +02:00
$item = $invoice->invoice_items->last()->product_key;
2016-06-08 15:06:48 +02:00
$base = "v=1&tid={$analyticsId}&cid={$client->public_id}&cu=USD&ti={$invoice->invoice_number}";
$url = $base . "&t=transaction&ta=ninja&tr={$amount}";
$this->sendAnalytics($url);
2016-07-28 11:10:57 +02:00
$url = $base . "&t=item&in={$item}&ip={$amount}&iq=1";
$this->sendAnalytics($url);
}
2016-06-08 15:06:48 +02:00
/**
* @param $data
*/
private function sendAnalytics($data)
{
2016-07-27 20:52:42 +02:00
$data = utf8_encode($data);
$curl = curl_init();
$opts = [
CURLOPT_URL => GOOGLE_ANALYITCS_URL,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => 'POST',
CURLOPT_POSTFIELDS => $data,
];
curl_setopt_array($curl, $opts);
2016-07-27 15:31:52 +02:00
curl_exec($curl);
curl_close($curl);
}
2016-07-27 15:31:52 +02:00
}