Blame view

backend/views/report/index.php 4.93 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;
e46f120b   Alex Savenko   ga
12
  use Yii;
a3fa7958   Alex Savenko   base
13
14
15
16
17
18
  
  /* @var $this yii\web\View */
  
  $this->title = Yii::t('app', 'Report');
  $this->params['breadcrumbs'][] = $this->title;
  ?>
a3fa7958   Alex Savenko   base
19
  
a194dccd   Alex Savenko   ga
20
21
22
      <div>
          <h1><?= Html::encode($this->title) ?></h1>
      </div>
f97601c5   Alex Savenko   ga
23
24
25
      <div>
          <form action="" method="post">
              <p>
e46f120b   Alex Savenko   ga
26
                  <select size="1" name="dateRange">
f97601c5   Alex Savenko   ga
27
28
29
30
31
32
33
34
35
36
                      <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
37
  
88d016ad   Alex Savenko   testing
38
  <?php
e46f120b   Alex Savenko   ga
39
40
      $name = $request->post('dateRange');
      echo $name;
f97601c5   Alex Savenko   ga
41
  
88d016ad   Alex Savenko   testing
42
  // Загрузка клиентской библиотеки PHP для Google API.
2d10f818   Alex Savenko   testing
43
  
2d10f818   Alex Savenko   testing
44
  
88d016ad   Alex Savenko   testing
45
  $client = new Google_Client();
5c42bcd6   Alex Savenko   ga
46
  $client->setAuthConfig('./client_secrets.json');
6981a7c2   Alex Savenko   ga
47
  $client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);
2d10f818   Alex Savenko   testing
48
  
2d10f818   Alex Savenko   testing
49
  
88d016ad   Alex Savenko   testing
50
51
  // Если пользователь уже авторизовал это приложение, предоставьте токен доступа.
  // В противном случае перенаправьте пользователя на страницу авторизации доступа в Google Analytics.
59a93b93   Alex Savenko   ga
52
53
54
55
56
57
58
59
  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
60
61
62
63
  
      $param[] = ['metric' => 'ga:sessions', 'alias' => 'Сессии'];
      $param[] = ['metric' => 'ga:users', 'alias' => 'Пользователи'];
      $param[] = ['metric' => 'ga:CTR', 'alias' => 'CTR'];
d24da82d   Alex Savenko   ga
64
      $param[] = ['metric' => 'ga:goal1Value', 'alias' => 'цель "Корзина"'];
74a48fa5   Alex Savenko   ga
65
66
67
68
69
70
71
72
  
      foreach ($param as $item) {
          $response = getReport($analytics, $item['metric'], $item['alias']);
  
          // Вывод ответа.
          printResults($response);
      }
  
59a93b93   Alex Savenko   ga
73
  
45aa4e58   Alex Savenko   ga
74
  
59a93b93   Alex Savenko   ga
75
  } else {
a2842f96   Alex Savenko   ga
76
      $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/admin/report/callback';
59a93b93   Alex Savenko   ga
77
78
79
80
      header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
  }
  
  
92c9fb64   Alex Savenko   ga
81
  function getReport($analytics, $metric, $alias) {
59a93b93   Alex Savenko   ga
82
83
84
85
86
87
  
      // Замена на свой идентификатор представления, напр. XXXX.
      $VIEW_ID = "119240817";
  
      // Создание объекта DateRange.
      $dateRange = new Google_Service_AnalyticsReporting_DateRange();
130dffde   Alex Savenko   ga
88
      $dateRange->setStartDate("30daysAgo");
f97601c5   Alex Savenko   ga
89
      $dateRange->setEndDate("today");
59a93b93   Alex Savenko   ga
90
91
92
  
      // Создание объекта Metrics.
      $sessions = new Google_Service_AnalyticsReporting_Metric();
130dffde   Alex Savenko   ga
93
      $sessions->setExpression($metric);
92c9fb64   Alex Savenko   ga
94
      $sessions->setAlias($alias);
d5ea26df   Alex Savenko   ga
95
96
  
  
59a93b93   Alex Savenko   ga
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
125
126
      // Создание объекта 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
127
                  //print("Metric type: " . $entry->getType() . "\n" );
59a93b93   Alex Savenko   ga
128
129
                  for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) {
                      $value = $values->getValues()[ $valueIndex ];
d24da82d   Alex Savenko   ga
130
                      print("<b>" . $entry->getName() . "</b>: " . $value . '<br/>');
59a93b93   Alex Savenko   ga
131
132
133
134
135
                  }
              }
          }
      }
  }
ee720a54   Alex Savenko   ga

ee720a54   Alex Savenko   ga

5776b7c8   Alex Savenko   ga