AjaxController.php
2.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
namespace backend\controllers;
use backend\models\Analytics;
use common\models\Settings;
use yii\filters\VerbFilter;
use yii\web\Controller;
use yii\web\Response;
class AjaxController extends Controller
{
public $enableCsrfValidation = false;
public function behaviors()
{
return [
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'analytics' => [ 'post' ],
],
],
];
}
public function actionAnalytics()
{
\Yii::$app->response->format = Response::FORMAT_JSON;
$settings = Settings::getInstance();
$analytics = new Analytics(
[
'viewId' => $settings->analytics_key,
]
);
$data = $analytics->generateData();
$browsers = $data[ 'table' ][ 0 ];
arsort($browsers);
$cityes = $data[ 'table' ][ 1 ];
arsort($cityes);
$countries = $data[ 'table' ][ 2 ];
arsort($countries);
return [
'plot' => $data[ 'plot' ],
'pie' => [
[
"category" => "New Visitor",
"column-1" => round(intval($data[ 'new' ]), 2),
],
[
"category" => "Returning Visitor",
"column-1" => 100 - round(intval($data[ 'new' ]), 2),
],
],
'browsers' => $this->renderPartial(
'_table',
[
'data' => $browsers,
'name' => 'Browser',
]
),
'cityes' => $this->renderPartial(
'_table',
[
'data' => $cityes,
'name' => 'City',
]
),
'countries' => $this->renderPartial(
'_table',
[
'data' => $countries,
'name' => 'Country',
]
),
'sessions' => (int) $data[ 'sessions' ],
'users' => (int) $data[ 'users' ],
'views' => (int) $data[ 'views' ],
'newusers' => round(intval($data[ 'new' ]), 2),
];
}
}