index.php 4.9 KB
<?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;
use yii\bootstrap\ActiveForm;

/* @var $this yii\web\View */
/* @var $model \backend\models\DateRange */

$this->title = Yii::t('app', 'Report');
$this->params['breadcrumbs'][] = $this->title;
?>

    <div>
        <h1><?= Html::encode($this->title) ?></h1>
    </div>

    <div>
        <?php $form = ActiveForm::begin(['id' => 'range-form']); ?>

        <?= $form->field($model, 'date')->dropDownList([
            'today' => 'Сегодня',
            'yesterday' => 'Вчера',
            '7daysAgo'=>'Последние 7 дней',
            '30daysAgo'=>'Последние 30 дней'
        ]);
        ?>

        <div class="form-group">
            <?= Html::submitButton('Send', ['class' => 'btn btn-primary', 'name' => 'range-button']) ?>
        </div>

        <?php ActiveForm::end(); ?>
    </div>

<?= Html::encode($model->date) ?>
<?php
    var_dump($model);

// Загрузка клиентской библиотеки PHP для Google API.


$client = new Google_Client();
$client->setAuthConfig('./client_secrets.json');
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);


// Если пользователь уже авторизовал это приложение, предоставьте токен доступа.
// В противном случае перенаправьте пользователя на страницу авторизации доступа в Google Analytics.
if (isset($_SESSION['access_token']) && $_SESSION['access_token']) {
    // Установка токена доступа на клиентском компьютере.
    $client->setAccessToken($_SESSION['access_token']);

    // Создание авторизованного объекта службы аналитики.
    $analytics = new Google_Service_AnalyticsReporting($client);

    // Вызов the Analytics Reporting API V4.

    $param[] = ['metric' => 'ga:sessions', 'alias' => 'Сессии'];
    $param[] = ['metric' => 'ga:users', 'alias' => 'Пользователи'];
    $param[] = ['metric' => 'ga:CTR', 'alias' => 'CTR'];
    $param[] = ['metric' => 'ga:goal1Value', 'alias' => 'цель "Корзина"'];

    foreach ($param as $item) {
        $response = getReport($analytics, $item['metric'], $item['alias']);

        // Вывод ответа.
        printResults($response);
    }



} else {
    $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/admin/report/callback';
    header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
}


function getReport($analytics, $metric, $alias) {

    // Замена на свой идентификатор представления, напр. XXXX.
    $VIEW_ID = "119240817";

    // Создание объекта DateRange.
    $dateRange = new Google_Service_AnalyticsReporting_DateRange();
    $dateRange->setStartDate("30daysAgo");
    $dateRange->setEndDate("today");

    // Создание объекта Metrics.
    $sessions = new Google_Service_AnalyticsReporting_Metric();
    $sessions->setExpression($metric);
    $sessions->setAlias($alias);


    // Создание объекта 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];
                //print("Metric type: " . $entry->getType() . "\n" );
                for ( $valueIndex = 0; $valueIndex < count( $values->getValues() ); $valueIndex++ ) {
                    $value = $values->getValues()[ $valueIndex ];
                    print("<b>" . $entry->getName() . "</b>: " . $value . '<br/>');
                }
            }
        }
    }
}