GaController.php 3.54 KB
<?php
/**
 * Created by PhpStorm.
 * User: Alex Savenko
 * Date: 09.02.2017
 * Time: 18:12
 */

namespace App\Controllers;


use Google_Client;
use Google_Service_AnalyticsReporting;
use Google_Service_AnalyticsReporting_DateRange;
use Google_Service_AnalyticsReporting_GetReportsRequest;
use Google_Service_AnalyticsReporting_Metric;
use Google_Service_AnalyticsReporting_ReportRequest;
use PhalconRest\Mvc\Controllers\CrudResourceController;
use Google_Service_AnalyticsReporting_Report;

class GaController extends CrudResourceController {

    const SECRET_JSON = 'ca4a1bd8aa14.json';
    const VIEW_ID = '119240817';

    public function getAction() {

        putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON);
        $client = new Google_Client();
        $client->useApplicationDefaultCredentials();
        $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
        $analytics = new Google_Service_AnalyticsReporting($client);

        $param[] = ['metric' => 'ga:sessions', 'alias' => 'Сессии'];

        $response = [];

        foreach ($param as $item) {

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

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


            // Создание объекта ReportRequest.
            $request = new Google_Service_AnalyticsReporting_ReportRequest();
            $request->setViewId(self::VIEW_ID);
            $request->setDateRanges($dateRange);
            $request->setMetrics(array($sessions));

            $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
            $body->setReportRequests( array( $request) );

            $response =  $analytics->reports->batchGet( $body );
        }

        return $response->toSimpleObject();

    }

    public function printResults($reports) {
        $res = '';
        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 ];
                        $res .= "<b>" . $entry->getName() . "</b>: " . $value . '<br/>';
                    }
                }
            }
        }

        return $res;
    }


}