Blame view

backend/views/report/index.php 4.88 KB
a3fa7958   Alex Savenko   base
1
2
3
4
5
6
7
8
9
10
11
  <?php
  /**
   * Created by PhpStorm.
   * User: Alex Savenko
   * Date: 28.12.2016
   * Time: 21:52
   */
  
  use yii\helpers\Html;
  use yii\grid\GridView;
  use yii\helpers\Url;
a3fa7958   Alex Savenko   base
12
13
14
15
16
17
  
  /* @var $this yii\web\View */
  
  $this->title = Yii::t('app', 'Report');
  $this->params['breadcrumbs'][] = $this->title;
  ?>
a3fa7958   Alex Savenko   base
18
  
a194dccd   Alex Savenko   ga
19
20
21
      <div>
          <h1><?= Html::encode($this->title) ?></h1>
      </div>
f97601c5   Alex Savenko   ga
22
23
24
      <div>
          <form action="" method="post">
              <p>
e46f120b   Alex Savenko   ga
25
                  <select size="1" name="dateRange">
f97601c5   Alex Savenko   ga
26
27
28
29
30
31
32
33
34
35
                      <option disabled>Выберите отрезок времени</option>
                      <option selected value="today">Сегодня</option>
                      <option value="yesterday">Вчера</option>
                      <option value="7daysAgo">Последние 7 дней</option>
                      <option value="30daysAgo">Последние 30 дней</option>
                  </select>
              </p>
              <p><input type="submit" value="Отправить"></p>
          </form>
      </div>
a194dccd   Alex Savenko   ga
36
  
88d016ad   Alex Savenko   testing
37
  <?php
5c506ad7   Alex Savenko   ga
38
      echo $range
f97601c5   Alex Savenko   ga
39
  
88d016ad   Alex Savenko   testing
40
  // Загрузка клиентской библиотеки PHP для Google API.
2d10f818   Alex Savenko   testing
41
  
2d10f818   Alex Savenko   testing
42
  
88d016ad   Alex Savenko   testing
43
  $client = new Google_Client();
5c42bcd6   Alex Savenko   ga
44
  $client->setAuthConfig('./client_secrets.json');
6981a7c2   Alex Savenko   ga
45
  $client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
2d10f818   Alex Savenko   testing
46
  
2d10f818   Alex Savenko   testing
47
  
88d016ad   Alex Savenko   testing
48
49
  // Если пользователь уже авторизовал это приложение, предоставьте токен доступа.
  // В противном случае перенаправьте пользователя на страницу авторизации доступа в Google Analytics.
59a93b93   Alex Savenko   ga
50
51
52
53
54
55
56
57
  if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
      // Установка токена доступа на клиентском компьютере.
      $client->setAccessToken($_SESSION['access_token']);
  
      // Создание авторизованного объекта службы аналитики.
      $analytics = new Google_Service_AnalyticsReporting($client);
  
      // Вызов the Analytics Reporting API V4.
74a48fa5   Alex Savenko   ga
58
59
60
61
  
      $param[] = ['metric' => 'ga:sessions', 'alias' => 'Сессии'];
      $param[] = ['metric' => 'ga:users', 'alias' => 'Пользователи'];
      $param[] = ['metric' => 'ga:CTR', 'alias' => 'CTR'];
d24da82d   Alex Savenko   ga
62
      $param[] = ['metric' => 'ga:goal1Value', 'alias' => 'цель "Корзина"'];
74a48fa5   Alex Savenko   ga
63
64
65
66
67
68
69
70
  
      foreach ($param as $item) {
          $response = getReport($analytics, $item['metric'], $item['alias']);
  
          // Вывод ответа.
          printResults($response);
      }
  
59a93b93   Alex Savenko   ga
71
  
45aa4e58   Alex Savenko   ga
72
  
59a93b93   Alex Savenko   ga
73
  } else {
a2842f96   Alex Savenko   ga
74
      $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/admin/report/callback';
59a93b93   Alex Savenko   ga
75
76
77
78
      header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
  }
  
  
92c9fb64   Alex Savenko   ga
79
  function getReport($analytics, $metric, $alias) {
59a93b93   Alex Savenko   ga
80
81
82
83
84
85
  
      // Замена на свой идентификатор представления, напр. XXXX.
      $VIEW_ID = "119240817";
  
      // Создание объекта DateRange.
      $dateRange = new Google_Service_AnalyticsReporting_DateRange();
130dffde   Alex Savenko   ga
86
      $dateRange->setStartDate("30daysAgo");
f97601c5   Alex Savenko   ga
87
      $dateRange->setEndDate("today");
59a93b93   Alex Savenko   ga
88
89
90
  
      // Создание объекта Metrics.
      $sessions = new Google_Service_AnalyticsReporting_Metric();
130dffde   Alex Savenko   ga
91
      $sessions->setExpression($metric);
92c9fb64   Alex Savenko   ga
92
      $sessions->setAlias($alias);
d5ea26df   Alex Savenko   ga
93
94
  
  
59a93b93   Alex Savenko   ga
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
      // Создание объекта ReportRequest.
      $request = new Google_Service_AnalyticsReporting_ReportRequest();
      $request->setViewId($VIEW_ID);
      $request->setDateRanges($dateRange);
      $request->setMetrics(array($sessions));
  
      $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
      $body->setReportRequests( array( $request) );
      return $analytics->reports->batchGet( $body );
  }
  
  function printResults($reports) {
      for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
          $report = $reports[ $reportIndex ];
          $header = $report->getColumnHeader();
          $dimensionHeaders = $header->getDimensions();
          $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
          $rows = $report->getData()->getRows();
  
          for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
              $row = $rows[ $rowIndex ];
              $dimensions = $row->getDimensions();
              $metrics = $row->getMetrics();
              for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
                  print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n");
              }
  
              for ($j = 0; $j < count( $metricHeaders ) && $j < count( $metrics ); $j++) {
                  $entry = $metricHeaders[$j];
                  $values = $metrics[$j];
92c9fb64   Alex Savenko   ga
125
                  //print("Metric type: " . $entry->getType() . "\n" );
59a93b93   Alex Savenko   ga
126
127
                  for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) {
                      $value = $values->getValues()[ $valueIndex ];
d24da82d   Alex Savenko   ga
128
                      print("<b>" . $entry->getName() . "</b>: " . $value . '<br/>');
59a93b93   Alex Savenko   ga
129
130
131
132
133
                  }
              }
          }
      }
  }
ee720a54   Alex Savenko   ga

ee720a54   Alex Savenko   ga

5776b7c8   Alex Savenko   ga