RouteBootstrap.php 3.64 KB
<?php

namespace App\Bootstrap;

use App\BootstrapInterface;
use App\Constants\Services;
use Phalcon\Config;
use Phalcon\DiInterface;
use PhalconRest\Api;

use Google_Client;
use Google_Service_AnalyticsReporting;
use Google_Service_AnalyticsReporting_DateRange;
use Google_Service_AnalyticsReporting_Metric;
use Google_Service_AnalyticsReporting_ReportRequest;
use Google_Service_AnalyticsReporting_GetReportsRequest;

class RouteBootstrap implements BootstrapInterface
{
    public function run(Api $api, DiInterface $di, Config $config)
    {
        $api->get('/', function() use ($api) {

            /** @var \Phalcon\Mvc\View\Simple $view */
            $view = $api->di->get(Services::VIEW);

            return $view->render('general/index');
        });

        $api->get('/proxy.html', function() use ($api, $config) {

            /** @var \Phalcon\Mvc\View\Simple $view */
            $view = $api->di->get(Services::VIEW);

            $view->setVar('client', $config->clientHostName);
            return $view->render('general/proxy');
        });

        $api->get('/documentation.html', function() use ($api, $config) {

            /** @var \Phalcon\Mvc\View\Simple $view */
            $view = $api->di->get(Services::VIEW);

            $view->setVar('title', $config->application->title);
            $view->setVar('description', $config->application->description);
            $view->setVar('documentationPath', $config->hostName . '/export/documentation.json');
            return $view->render('general/documentation');
        });

        $api->get('/test.html', function() use ($api) {

            /** @var \Phalcon\Mvc\View\Simple $view */
            $view = $api->di->get(Services::VIEW);

            $client = new Google_Client();
            $api_key = 'AIzaSyCXzrwqxLN2bCvBhw2cJfdeEu9aj1aH5b8';
            $client->setDeveloperKey($api_key);
            $analytics = new Google_Service_AnalyticsReporting($client);

            $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 = $this->getReport($analytics, $item['metric'], $item['alias']);

            }

            $var_2 = var_dump($response);

            $msg = "testing fine";

            return $view->render('general/test', [
                'var1' => $msg,
                'var2' => $var_2
            ]);
        });
    }

    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 );
    }
}