index.php 4.88 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;

/* @var $this yii\web\View */

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

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

<?php

// Загрузка клиентской библиотеки 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.
    $response = getReport($analytics);

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

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


function getReport($analytics) {

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

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

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

    // Создание объекта 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($entry->getName() . ": " . $value . "\n");
                }
            }
        }
    }
}

/**
 * Note: This code assumes you have an authorized Analytics service object.
 * See the Segments Developer Guide for details.
 */

/**
 * Example #1:
 * Requests a list of all Segments for the authorized user.
 */
try {
    $segments = $analytics->management_segments->listManagementSegments();
} catch (apiServiceException $e) {
    print 'There was an Analytics API service error '
        . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
    print 'There was a general API error '
        . $e->getCode() . ':' . $e->getMessage();
}


/*
 * Example #2:
 * The results of the list method are stored in the segments object.
 * The following code shows how to iterate through them.
 */
foreach ($segments->getItems() as $segment) {
    $html .= <<<HTML
<pre>

Segment ID = {$segment->getId()}
Kind       = {$segment->getKind()}
Self Link  = {$segment->getSelfLink()}
Name       = {$segment->getName()}
Definition = {$segment->getDefinition()}
Created    = {$segment->getCreated()}
Updated    = {$segment->getUpdated()}

</pre>
HTML;
    print $html;
}