Blame view

backend/controllers/AjaxController.php 2.74 KB
c237629a   Anastasia   first commit
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
  <?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" => "Новых посетителей",
                          "column-1" => round(intval($data[ 'new' ]), 2),
                      ],
                      [
                          "category" => "Вернувшихся посетителей",
                          "column-1" => 100 - round(intval($data[ 'new' ]), 2),
                      ],
                  ],
                  'browsers'  => $this->renderPartial(
                      '_table',
                      [
                          'data' => $browsers,
                          'name' => 'Браузер',
                      ]
                  ),
                  'cityes'    => $this->renderPartial(
                      '_table',
                      [
                          'data' => $cityes,
                          'name' => 'Город',
                      ]
                  ),
                  'countries' => $this->renderPartial(
                      '_table',
                      [
                          'data' => $countries,
                          'name' => 'Страна',
                      ]
                  ),
                  'sessions'  => (int) $data[ 'sessions' ],
                  'users'     => (int) $data[ 'users' ],
                  'views'     => (int) $data[ 'views' ],
                  'newusers'  => round(intval($data[ 'new' ]), 2),
              ];
          }
      }