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,15 +28,16 @@ class GaController extends CrudResourceController {
28 public function getAction() { 28 public function getAction() {
29 29
30 /** user params **/ 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 /** google params **/ 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 if (empty($view_id)) { 43 if (empty($view_id)) {
@@ -45,19 +46,19 @@ class GaController extends CrudResourceController { @@ -45,19 +46,19 @@ class GaController extends CrudResourceController {
45 foreach ($projects as $project) { 46 foreach ($projects as $project) {
46 $view_id = (string)$project->ga_view_id; 47 $view_id = (string)$project->ga_view_id;
47 if (!empty($view_id)) { 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 else { 53 else {
53 $project = Project::findFirst(['ga_view_id' => $view_id]); 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 return $result; 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 putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON); 63 putenv('GOOGLE_APPLICATION_CREDENTIALS=/var/www/phalcon/'.self::SECRET_JSON);
63 $client = new Google_Client(); 64 $client = new Google_Client();
@@ -100,6 +101,9 @@ class GaController extends CrudResourceController { @@ -100,6 +101,9 @@ class GaController extends CrudResourceController {
100 $request->setDimensions(array($dimensions)); 101 $request->setDimensions(array($dimensions));
101 } 102 }
102 $request->setMetrics(array($metrics)); 103 $request->setMetrics(array($metrics));
  104 + if (!empty($filter_expression)) {
  105 + $request->setFiltersExpression("ga:".$filter_expression);
  106 + }
103 107
104 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 108 $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
105 $body->setReportRequests(array($request)); 109 $body->setReportRequests(array($request));
app/library/App/Resources/GaResource.php
@@ -43,18 +43,19 @@ class GaResource extends ApiResource { @@ -43,18 +43,19 @@ class GaResource extends ApiResource {
43 ->paramsDescription([ 43 ->paramsDescription([
44 'get params' => [ 44 'get params' => [
45 'required params' => [ 45 'required params' => [
46 - 'metric' => 'string(метрика Google, линк в описании запроса)', 46 + 'metric' => 'string(метрика Google, линк в описании запроса)',
47 'dimension' => 'string(размерность Google, линк в описании запроса)', 47 'dimension' => 'string(размерность Google, линк в описании запроса)',
48 - 'start' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата начала загрузки данных)',  
49 - 'end' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата конца загрузки данных)' 48 + 'start' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата начала загрузки данных)',
  49 + 'end' => 'ГГГГ-ММ-ДД/NdaysAgo, где N – целое положительное число(дата конца загрузки данных)'
50 ], 50 ],
51 'optional params' => [ 51 'optional params' => [
52 'user_id' => 'integer(id пользователя в системе)', 52 'user_id' => 'integer(id пользователя в системе)',
53 'view_id' => 'integer(id представления проэкта с гугл аналитики)', 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 ;