コード例 #1
0
 function a360_request_handler()
 {
     if (!empty($_GET['a360_action'])) {
         $params =& JComponentHelper::getParams('com_joomailermailchimpintegration');
         $paramsPrefix = version_compare(JVERSION, '1.6.0', 'ge') ? 'params.' : '';
         $a360_api_key = $params->get($paramsPrefix . 'MCapi');
         switch ($_GET['a360_action']) {
             case 'get_mc_data':
                 $api = new joomlamailerMCAPI($a360_api_key);
                 switch ($_GET['data_type']) {
                     case 'campaigns':
                         $results = $api->campaigns(array('sendtime_start' => $_GET['start_date'], 'end_start' => $_GET['end_date']));
                         if ($results) {
                             die($this->cf_json_encode(array('success' => true, 'data' => $results, 'cached' => false)));
                         } else {
                             if (empty($api->errorCode)) {
                                 die($this->cf_json_encode(array('success' => true, 'data' => $results, 'cached' => false)));
                             } else {
                                 die($this->cf_json_encode(array('success' => false, 'error' => $api->errorMessage)));
                             }
                         }
                         break;
                     case 'list_growth':
                         $results = $api->listGrowthHistory($_GET['list_id']);
                         if ($results) {
                             die($this->cf_json_encode(array('success' => true, 'data' => $results, 'cached' => false)));
                         } else {
                             die($this->cf_json_encode(array('success' => false, 'error' => $api->errorMessage)));
                         }
                         break;
                 }
                 break;
             case 'get_ga_data':
                 $params =& JComponentHelper::getParams('com_joomailermailchimpintegration');
                 $paramsPrefix = version_compare(JVERSION, '1.6.0', 'ge') ? 'params.' : '';
                 $report_id = $params->get($paramsPrefix . 'gprofileid');
                 $parameters = array('start-date' => $_GET['start_date'], 'end-date' => $_GET['end_date'], 'sort' => 'date', 'ids' => 'ga:' . $a360_ga_profile_id);
                 // split up top referrals by filtering on each medium in turn
                 if ($_GET['data_type'] == 'top_referrals') {
                     $requests = array('referral' => null, 'organic' => null, 'email' => null, 'cpc' => null, '*' => null);
                     $parameters['dimensions'] = array('medium', 'source');
                     $parameters['metrics'] = array('visits', 'timeOnSite', 'pageviews');
                     $parameters['sort'] = '-visits';
                     $all_results = array();
                     $filters = array('referral', 'organic', 'email', 'cpc', '*');
                     foreach ($filters as $f) {
                         $parameters['filter'] = 'medium==' . $f;
                         $all_results[$f] = $this->requestReportData($report_id, $parameters['dimensions'], $parameters['metrics'], $parameters['sort'], $parameters['filters'], $parameters['start-date'], $parameters['end-date'], 1, 30);
                     }
                     header('Content-type: text/javascript');
                     die($this->cf_json_encode(array('success' => true, 'data' => $all_results, 'cached' => false)));
                     break;
                 } else {
                     switch ($_GET['data_type']) {
                         case 'visits':
                             $parameters['dimensions'] = array('date', 'medium');
                             $parameters['metrics'] = array('visits', 'bounces', 'entrances', 'pageviews', 'newVisits', 'timeOnSite');
                             //$parameters['filters'] = 'ga:medium==referral,ga:medium==organic,ga:medium==email,ga:medium==cpc';
                             //$parameters['sort'] = '-ga:visits';
                             break;
                         case 'geo':
                             $parameters['dimensions'] = array('country');
                             $parameters['metrics'] = array('visits');
                             $parameters['sort'] = array('-visits');
                             break;
                         case 'top_referrals':
                             $parameters['dimensions'] = array('medium', 'source');
                             $parameters['metrics'] = array('visits', 'timeOnSite', 'pageviews');
                             $parameters['sort'] = array('-visits');
                             $parameters['filters'] = 'medium==referral || medium==organic || medium==email || medium==cpc';
                             break;
                         case 'referral_media':
                             $parameters['dimensions'] = array('medium');
                             $parameters['metrics'] = array('visits');
                             $parameters['sort'] = array('-visits');
                             break;
                         case 'top_content':
                             $parameters['dimensions'] = array('pagePath');
                             $parameters['metrics'] = array('pageviews', 'uniquePageviews', 'timeOnPage', 'exits');
                             $parameters['sort'] = array('-pageviews');
                             break;
                         case 'keywords':
                             $parameters['dimensions'] = array('keyword');
                             $parameters['metrics'] = array('pageviews', 'uniquePageviews', 'timeOnPage', 'exits');
                             $parameters['sort'] = array('-pageviews');
                             $parameters['filters'] = 'source==' . $_GET['source_name'];
                             break;
                         case 'referral_paths':
                             $parameters['dimensions'] = array('source,referralPath');
                             $parameters['metrics'] = array('pageviews', 'uniquePageviews', 'timeOnPage', 'exits');
                             $parameters['sort'] = array('-pageviews');
                             $parameters['filters'] = 'source==' . $_GET['source_name'];
                             break;
                         case 'email_referrals':
                             $parameters['dimensions'] = array('campaign');
                             $parameters['metrics'] = array('pageviews', 'uniquePageviews', 'timeOnPage', 'exits');
                             $parameters['sort'] = array('-pageviews');
                             $parameters['filters'] = 'medium==email';
                             break;
                         default:
                             break;
                     }
                 }
                 //call the API
                 $result = $this->requestReportData($report_id, $parameters['dimensions'], $parameters['metrics'], $parameters['sort'], $parameters['filters'], $parameters['start-date'], $parameters['end-date'], 1, 3000);
                 header('Content-type: text/javascript');
                 die($this->cf_json_encode(array('success' => true, 'data' => $result, 'cached' => false)));
                 break;
         }
     }
 }