Commit 0c1a07f0d6b1b3303f59d01921df46e45887b649

Authored by Alex Savenko
1 parent 365177f8

add filter param to Ga Collections

app/library/App/Controllers/GaController.php
... ... @@ -28,15 +28,16 @@ class GaController extends CrudResourceController {
28 28 public function getAction() {
29 29  
30 30 /** user params **/
31   - $user_id = $this->request->get('user_id')?? '1';
32   - $view_id= $this->request->get('view_id');
33   - $chart = $this->request->get('chart') ?? false;
  31 + $user_id = $this->request->get('user_id')?? '1';
  32 + $view_id = $this->request->get('view_id');
  33 + $chart = $this->request->get('chart') ?? false;
34 34  
35 35 /** google params **/
36   - $get_metrics = $this->request->get('metric') ?? 'users';
37   - $get_dimensions = $this->request->get('dimension');
38   - $get_start_date = $this->request->get('start') ?? '30daysAgo';
39   - $get_end_date = $this->request->get('end') ?? 'today';
  36 + $get_metrics = $this->request->get('metric') ?? 'users';
  37 + $get_dimensions = $this->request->get('dimension');
  38 + $get_start_date = $this->request->get('start') ?? '30daysAgo';
  39 + $get_end_date = $this->request->get('end') ?? 'today';
  40 + $filter_expression = $this->request->get('filter');
40 41  
41 42  
42 43 if (empty($view_id)) {
... ... @@ -45,19 +46,19 @@ class GaController extends CrudResourceController {
45 46 foreach ($projects as $project) {
46 47 $view_id = (string)$project->ga_view_id;
47 48 if (!empty($view_id)) {
48   - $result[] = $this->sendGaRequest($project->name, $view_id, $get_metrics, $get_dimensions, $get_start_date, $get_end_date, $chart);
  49 + $result[] = $this->sendGaRequest($project->name, $view_id, $get_metrics, $get_dimensions, $get_start_date, $get_end_date, $chart, $filter_expression);
49 50 }
50 51 }
51 52 }
52 53 else {
53 54 $project = Project::findFirst(['ga_view_id' => $view_id]);
54   - $result = $this->sendGaRequest($project->name , $view_id, $get_metrics, $get_dimensions, $get_start_date, $get_end_date, $chart);
  55 + $result = $this->sendGaRequest($project->name , $view_id, $get_metrics, $get_dimensions, $get_start_date, $get_end_date, $chart, $filter_expression);
55 56 }
56 57 return $result;
57 58  
58 59 }
59 60  
60   - public function sendGaRequest($project_name, $view, $get_metrics, $get_dimensions, $start, $end, $chart = false) {
  61 + public function sendGaRequest($project_name, $view, $get_metrics, $get_dimensions, $start, $end, $chart = false, $filter_expression = null) {
61 62  
62 63 putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON);
63 64 $client = new Google_Client();
... ... @@ -100,6 +101,9 @@ class GaController extends CrudResourceController {
100 101 $request->setDimensions(array($dimensions));
101 102 }
102 103 $request->setMetrics(array($metrics));
  104 + if (!empty($filter_expression)) {
  105 + $request->setFiltersExpression("ga:".$filter_expression);
  106 + }
103 107  
104 108 $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
105 109 $body->setReportRequests(array($request));
... ...
app/library/App/Resources/GaResource.php
... ... @@ -43,18 +43,19 @@ class GaResource extends ApiResource {
43 43 ->paramsDescription([
44 44 'get params' => [
45 45 'required params' => [
46   - 'metric' => 'string(метрика Google, линк в описании запроса)',
  46 + 'metric' => 'string(метрика Google, линк в описании запроса)',
47 47 'dimension' => 'string(размерность Google, линк в описании запроса)',
48   - 'start' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата начала загрузки данных)',
49   - 'end' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата конца загрузки данных)'
  48 + 'start' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата начала загрузки данных)',
  49 + 'end' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата конца загрузки данных)'
50 50 ],
51 51 'optional params' => [
52 52 'user_id' => 'integer(id пользователя в системе)',
53 53 'view_id' => 'integer(id представления проэкта с гугл аналитики)',
54   - 'chart' => 'boolean(Задает структуру возвращаемых данных(true для графиков))',
  54 + 'chart' => 'boolean(Задает структуру возвращаемых данных(true для графиков))',
  55 + 'filter' => 'expression(https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters)',
55 56 ]
56 57 ],
57   - 'summary' => 'http://test-30.artweb.com.ua/ga?view_id=119240817&metric=users,sessions&dimension=source,browser'
  58 + 'summary' => '/ga?view_id=119240817&metric=users,sessions&dimension=source,browser&filter=browser=~^Firef'
58 59 ])
59 60 )
60 61 ;
... ...