Analytics.php
4.37 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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
namespace backend\models;
use yii\base\Model;
class Analytics extends Model
{
public $viewId;
private function executeQuery()
{
$client = new \Google_Client();
$client->setAuthConfig(\Yii::getAlias('@common/config/Artbox-85b8559147bc.json'));
$client->addScope(\Google_Service_Analytics::ANALYTICS_READONLY);
$analytics = new \Google_Service_AnalyticsReporting($client);
$profile_id = $this->viewId;
$dateRange = new \Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate("30daysAgo");
$dateRange->setEndDate("today");
$sessions = new \Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression('ga:sessions');
$sessions->setAlias('Сеансы');
$users = new \Google_Service_AnalyticsReporting_Metric();
$users->setExpression('ga:users');
$users->setAlias('Пользователи');
$views = new \Google_Service_AnalyticsReporting_Metric();
$views->setExpression('ga:pageviews');
$views->setAlias('Просмотры');
$new_sessions = new \Google_Service_AnalyticsReporting_Metric();
$new_sessions->setExpression('ga:percentNewSessions');
$new_sessions->setAlias('Новые сессии');
$dimensions = new \Google_Service_AnalyticsReporting_Dimension();
$dimensions->setName('ga:date');
$request = new \Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($profile_id);
$request->setDateRanges($dateRange);
$request->setMetrics(
[
$sessions,
$users,
$views,
$new_sessions,
]
);
$request->setDimensions($dimensions);
$body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests([ $request ]);
$response = $analytics->reports->batchGet($body);
return $response;
}
public function generateData()
{
$reports = $this->executeQuery();
$data = [];
for ($reportIndex = 0; $reportIndex < count($reports); $reportIndex++) {
$report = $reports[ $reportIndex ];
$header = $report->getColumnHeader();
// $dimensionHeaders = $header->getDimensions();
$metricHeaders = $header->getMetricHeader()
->getMetricHeaderEntries();
$rows = $report->getData()
->getRows();
$totals = $report->getData()
->getTotals();
$total_values = $totals[ 0 ]->getValues();
$data[ 'sessions' ] = $total_values[ 0 ];
$data[ 'users' ] = $total_values[ 1 ];
$data[ 'views' ] = $total_values[ 2 ];
$data[ 'new' ] = $total_values[ 3 ];
for ($rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
// $dimensions = $row->getDimensions();
// for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
// print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
// }
$row = $rows[ $rowIndex ];
$metrics = $row->getMetrics();
for ($j = 0; $j < count($metricHeaders) && $j < count($metrics); $j++) {
$values = $metrics[ $j ];
for ($valueIndex = 0; $valueIndex < count($values->getValues()); $valueIndex++) {
$value = $values->getValues()[ $valueIndex ];
$data[ $valueIndex ][] = (int) $value;
}
}
}
}
return $data;
}
}