summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--referrers.php115
1 files changed, 67 insertions, 48 deletions
diff --git a/referrers.php b/referrers.php
index 7936b03..2c9b513 100644
--- a/referrers.php
+++ b/referrers.php
@@ -31,95 +31,114 @@ $totalRegistrations = 0;
$maxRegistrations = 0;
$aggregateStats = array();
-foreach( array_keys( $referers ) as $k ) {
- $kCount = count( $referers[$k] );
- $totalRegistrations += $kCount;
- if( $kCount > $maxRegistrations ) {
- $maxRegistrations = $kCount;
+foreach( array_keys( $referers ) as $refSite ) {
+ $refSiteCount = count( $referers[$refSite] );
+ $totalRegistrations += $refSiteCount;
+ if( $refSiteCount > $maxRegistrations ) {
+ $maxRegistrations = $refSiteCount;
}
- foreach( array_keys( $referers[$k] ) as $r ) {
- $url = parse_url( $referers[$k][$r]['referer_url'] );
+ foreach( array_keys( $referers[$refSite] ) as $r ) {
+ $url = parse_url( $referers[$refSite][$r]['referer_url'] );
$revenue = array();
if( $gBitSystem->isPackageActive( 'bitcommerce' ) ) {
require_once( BITCOMMERCE_PKG_INCLUDE_PATH.'bitcommerce_start_inc.php' );
require_once( BITCOMMERCE_PKG_CLASS_PATH.'CommerceStatistics.php' );
- $revenue = $gCommerceStatistics->getCustomerRevenue( array( 'customers_id' => $referers[$k][$r]['user_id'] ) );
- $referers[$k][$r]['revenue'] = $revenue;
+ $revenue = $gCommerceStatistics->getCustomerRevenue( array( 'customers_id' => $referers[$refSite][$r]['user_id'] ) );
+ $referers[$refSite][$r]['revenue'] = $revenue;
+ $subVals = array( $refSite );
if( !empty( $url['query'] ) ) {
$urlParams = array();
parse_str( $url['query'], $urlParams );
if( !empty( $urlParams['adurl'] ) ) {
$adUrl = parse_url( $urlParams['adurl'] );
if( !empty( $adUrl['query'] ) ) {
+ array_push( $subVals, 'PPC' );
$adParams = array();
- computeStatsTree( $aggregateStats, $k, $adUrl['query'], $revenue, $referers[$k][$r] );
+ parse_str( $adUrl['query'], $adParams );
+ foreach( array( 'ctm_campaign', 'ctm_adgroup', 'ctm_term' ) as $subKey ) {
+ if( isset( $adParams[$subKey] ) ) {
+ $subKeyVal = !empty( $adParams[$subKey] ) ? $adParams[$subKey] : 'unknown' ;
+ array_push( $subVals, $subKeyVal );
+ }
+ }
} else {
- $key = 'Paid';
- $value = $adUrl['path'];
- computeStats( $aggregateStats, $k, $key, $value, $revenue, $referers[$k][$r] );
+ array_push( $subVals, 'Paid', $adUrl['path'] );
}
} else {
// bing paid query
foreach( array( 'pq' => 'Paid', 'q' => 'Organic', 'p' => 'Organic', 'unknown' => 'Unknown' ) as $key=>$title ) {
if( $key == 'unknown' || isset( $urlParams[$key] ) ) {
- $value = BitBase::getParameter( $urlParams, $key, 'unknown' );
- computeStats( $aggregateStats, $k, $title, $value, $revenue, $referers[$k][$r], BitBase::getParameter( $urlParams, $key, $key ) );
+ array_push( $subVals, $title, BitBase::getParameter( $urlParams, $key, 'unknown' ) );
break;
}
}
}
+ } else {
+if( !empty( $url['path'] ) && $url['path'] != '/' ) {
+ array_push( $subVals, $url['path'] );
+}
+
}
- @$aggregateStats[$k]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['info']['orders'] += $revenue['total_orders'];
+ computeStats( $aggregateStats, $subVals, $revenue, $referers[$refSite][$r] );
}
}
}
-function computeStatsTree( &$aggregateStats, $k, $queryUrl, $revenue, &$userHash ) {
- parse_str( $queryUrl, $adParams );
- if( isset( $adParams['ctm_campaign'] ) && isset( $adParams['ctm_adgroup'] ) && isset( $adParams['ctm_term'] ) ) {
- $key = 'PPC';
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['title'] = $adParams['ctm_term'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['users'][] = $userHash;
+function computeStats( &$pAggregateStats, &$subStats, $revenue, &$userHash ) {
+ do {
+ $subStatKey = array_shift( $subStats );
+ @$pAggregateStats[$subStatKey]['info']['title'] = $subStatKey;
+ @$pAggregateStats[$subStatKey]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$subStatKey]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$subStatKey]['info']['users'][] = $userHash;
+ if( empty( $pAggregateStats[$subStatKey]['values'] ) ) {
+ $pAggregateStats[$subStatKey]['values'] = array();
+ }
+ if( $subStats ) {
+ computeStats( $pAggregateStats[$subStatKey]['values'], $subStats, $revenue, $userHash );
+ }
+ } while( !empty( $subStats ) );
+//global $aggregateStats; eb( $subStatKey, $pTitle, $subStats, $revenue, $userHash, $aggregateStats );
+/*
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['title'] = $adParams['ctm_term'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['values'][$adParams['ctm_term']]['info']['users'][] = $userHash;
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['title'] = $adParams['ctm_adgroup'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['users'][] = $userHash;
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['title'] = $adParams['ctm_adgroup'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['values'][$adParams['ctm_adgroup']]['info']['users'][] = $userHash;
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['title'] = $adParams['ctm_campaign'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['users'][] = $userHash;
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['title'] = $adParams['ctm_campaign'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$adParams['ctm_campaign']]['info']['users'][] = $userHash;
- @$aggregateStats[$k]['values'][$key]['info']['title'] = $key;
- @$aggregateStats[$k]['values'][$key]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['info']['users'][] = $userHash;
} else {
foreach( $adParams as $key => $value ) {
- computeStats( $aggregateStats, $k, $key, $value, $revenue, $userHash );
+ computeStats( $pAggregateStats, $k, $key, $value, $revenue, $userHash );
}
}
+*/
}
-
-function computeStats( &$aggregateStats, $k, $key, $value, $revenue, &$userHash, $subKey = NULL ) {
- @$aggregateStats[$k]['values'][$key]['info']['title'] = $key;
- @$aggregateStats[$k]['values'][$key]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['info']['users'][] = $userHash;
+/*
+function computeStats( &$pAggregateStats, $k, $key, $value, $revenue, &$userHash, $subKey = NULL ) {
+ @$pAggregateStats[$k]['values'][$key]['info']['title'] = $key;
+ @$pAggregateStats[$k]['values'][$key]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$k]['values'][$key]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$k]['values'][$key]['info']['users'][] = $userHash;
if( $subKey ) {
- @$aggregateStats[$k]['values'][$key]['values'][$subKey]['info']['title'] = $subKey;
- @$aggregateStats[$k]['values'][$key]['values'][$subKey]['info']['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['values'][$subKey]['info']['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['values'][$subKey]['info']['users'][] = $userHash;
+ @$pAggregateStats[$k]['values'][$key]['values'][$subKey]['info']['title'] = $subKey;
+ @$pAggregateStats[$k]['values'][$key]['values'][$subKey]['info']['revenue'] += $revenue['total_revenue'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$subKey]['info']['orders'] += $revenue['total_orders'];
+ @$pAggregateStats[$k]['values'][$key]['values'][$subKey]['info']['users'][] = $userHash;
}
}
+*/
$gBitThemes->loadCss( STATS_PKG_PATH.'css/stats.css');
$gBitThemes->loadCss( CONFIG_PKG_PATH.'themes/bootstrap/bootstrap-table/bootstrap-table.css');