Beispiel #1
0
 public function setDimension($dimension)
 {
     $this->dimension = $dimension;
     $topActivities = Settings::getListTopActivity();
     foreach ($topActivities as $activity) {
         if ($activity->code == $this->dimension) {
             $this->setTitle($activity->name);
         }
     }
 }
 public function initialize($para, $analytic)
 {
     $trackingID = Settings::getAnalyticTrackingID();
     $accountID = Settings::getAnalyticAccountID();
     // CSRF
     $csrf = new Hidden('csrf');
     $csrf->addValidator(new Identical(array('value' => $this->security->getSessionToken(), 'message' => t('CSRF validation failed'))));
     $this->add($csrf);
     $this->add(new Submit('save', ['name' => 'save', 'value' => 'Save Changes', 'class' => 'btn btn-sm btn-info']));
     $author = new Submit('author', ['name' => 'author', 'value' => 'Authorization', 'class' => 'btn btn-sm btn-info']);
     $author->setLabel("Authorization this feature with Google");
     $this->add($author);
     $unauthor = new Submit('unauthor', ['name' => 'unauthor', 'value' => 'Clear Authorization', 'class' => 'btn btn-sm btn-warning']);
     $unauthor->setLabel("This feature had been actived. Clear authorization ?");
     $this->add($unauthor);
     $accessCode = new Text('accessCode', ['placeholder' => t('Access Code'), 'class' => 'form-control', 'value' => '']);
     $accessCode->setLabel('Access Code');
     $this->add($accessCode);
     $listView = $analytic->getListView();
     $listViewDisplay = [];
     if ($listView['state']) {
         foreach ($listView['listView'] as $view) {
             $parse = parse_url($view['profileURL']);
             $listViewDisplay[$view['webPropertyId'] . "_._" . $view['accountID']] = $parse['host'] . " => " . $view['profileName'];
         }
     }
     $selectView = new Select("selectView", $listViewDisplay, ['class' => 'form-control', 'useEmpty' => true, 'emptyText' => 'Please, choose one...']);
     $selectView->setLabel('Select View ');
     $selectView->setDefault($trackingID . "_._" . $accountID);
     $this->add($selectView);
     $data = Settings::getListTopActivity();
     $listTopActivity = [];
     $listDefaultActivity = [];
     foreach ($data as $activity) {
         $listTopActivity[$activity->code] = $activity->name;
         if ($activity->default == 1) {
             $listDefaultActivity[] = $activity->code;
         }
     }
     $topActivity = new Select("topActivity", $listTopActivity, ['name' => 'topActivity[]', 'class' => 'form-control', 'multiple' => 'multiple']);
     $topActivity->setLabel('Select 4 activity on top of dashboard');
     $topActivity->setDefault($listDefaultActivity);
     $this->add($topActivity);
 }
Beispiel #3
0
 /**
  * Get data analytic from google Analytic
  * Using Factory Method pattern to create each of dimensions
  * @return array list of object TopDashboard
  */
 public function getAnalyticData()
 {
     $listTopActivity = Settings::getListTopActivity();
     $objectSubject = new TopDashboardSubject();
     $topDashboardFactory = new TopDashboardFactory();
     $topDashboardFactory->setAnalytic($this->analytic);
     foreach ($listTopActivity as $activity) {
         if ($activity->default == 1) {
             $topDashboardObj = $topDashboardFactory->create($activity->code);
             $objectSubject->attach($topDashboardObj);
         }
     }
     $batchResult = $topDashboardFactory->executeBatch();
     foreach ($batchResult as $objectName => $objectValue) {
         $objectSubject->setKey($objectName);
         $objectSubject->setValue($objectValue['totalsForAllResults']);
         $objectSubject->notify();
     }
     return $objectSubject->getObservers();
 }
Beispiel #4
0
 /**
  * Get google Analytic data from google.
  * If we use google batch, each query to get data will move to batch queue
  * @param  array/string $listGA google dimensions
  * @param  datetime $from   start time to get analytic data
  * @param  datetime $to     end time to get analytic data
  * @param  string $prefix [for batch]. separate different query
  * @return [mixed]
  */
 public function getAnalyticData($listGA, $from, $to, $prefix)
 {
     $profileID = Settings::getAnalyticProfileID();
     if ($profileID) {
         $accountID = Settings::getAnalyticAccountID();
         $service = new \Google_Service_Analytics($this->client);
         if (is_array($listGA)) {
             $metrics = implode(',', $listGA);
         } else {
             $metrics = $listGA;
         }
         if ($this->useBatch) {
             $data = $service->data_ga->get('ga:' . $profileID, $from, $to, $metrics);
             $this->batch->add($data, $metrics . $prefix);
             return true;
         } else {
             $data = $service->data_ga->get('ga:' . $profileID, $from, $to, $metrics);
             return $data['rows'][0];
         }
     }
     return false;
 }
 /**
  *
  * Save changes about what analytic module will display on dashboard
  *
  */
 public function moduleDisplayAction()
 {
     $this->view->disable();
     if ($this->request->getPost('save')) {
         $listActivity = $this->request->getPost('topActivity');
         if (Settings::setListTopActivity($listActivity)) {
             $this->flashSession->success(t('Save Analytic module(s) position success!'));
         } else {
             $this->flashSession->error(t('An error occured, We can\'t save this change!'));
         }
     }
     return $this->currentRedirect();
 }
Beispiel #6
0
 public static function setListTopActivity($arrayTop)
 {
     $listTopActivity = Settings::getListTopActivity();
     for ($i = 0; $i < count($listTopActivity); $i++) {
         $listTopActivity[$i]->default = 0;
         foreach ($arrayTop as $key => $element) {
             if ($listTopActivity[$i]->code == $element) {
                 $listTopActivity[$i]->default = 1;
             }
         }
     }
     $listTopActivity = json_encode($listTopActivity);
     return Settings::setItem("googleAnalyticTopActivities", $listTopActivity);
 }