summaryrefslogtreecommitdiff
path: root/referrers.php
diff options
context:
space:
mode:
Diffstat (limited to 'referrers.php')
-rw-r--r--referrers.php98
1 files changed, 64 insertions, 34 deletions
diff --git a/referrers.php b/referrers.php
index 0897f8d..7936b03 100644
--- a/referrers.php
+++ b/referrers.php
@@ -10,7 +10,7 @@
* required setup
*/
require_once( '../kernel/includes/setup_inc.php' );
-include_once ( STATS_PKG_PATH.'Statistics.php');
+include_once ( STATS_PKG_CLASS_PATH.'Statistics.php');
$gBitSystem->verifyPackage( 'stats' );
$gBitSystem->verifyFeature( 'stats_referers' );
@@ -46,52 +46,82 @@ foreach( array_keys( $referers ) as $k ) {
require_once( BITCOMMERCE_PKG_CLASS_PATH.'CommerceStatistics.php' );
$revenue = $gCommerceStatistics->getCustomerRevenue( array( 'customers_id' => $referers[$k][$r]['user_id'] ) );
$referers[$k][$r]['revenue'] = $revenue;
- }
- if( !empty( $url['query'] ) ) {
- $urlParams = array();
- parse_str( $url['query'], $urlParams );
- if( !empty( $urlParams['adurl'] ) ) {
- $adUrl = parse_url( $urlParams['adurl'] );
- if( !empty( $adUrl['query'] ) ) {
- $adParams = array();
- parse_str( $adUrl['query'], $adParams );
- foreach( $adParams as $key => $value ) {
+ if( !empty( $url['query'] ) ) {
+ $urlParams = array();
+ parse_str( $url['query'], $urlParams );
+ if( !empty( $urlParams['adurl'] ) ) {
+ $adUrl = parse_url( $urlParams['adurl'] );
+ if( !empty( $adUrl['query'] ) ) {
+ $adParams = array();
+ computeStatsTree( $aggregateStats, $k, $adUrl['query'], $revenue, $referers[$k][$r] );
+ } else {
+ $key = 'Paid';
+ $value = $adUrl['path'];
computeStats( $aggregateStats, $k, $key, $value, $revenue, $referers[$k][$r] );
}
} else {
- $key = 'Paid';
- $value = $adUrl['path'];
- computeStats( $aggregateStats, $k, $key, $value, $revenue, $referers[$k][$r] );
- }
- } 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] );
- break;
+ // 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 ) );
+ break;
+ }
}
}
}
+ @$aggregateStats[$k]['info']['revenue'] += $revenue['total_revenue'];
+ @$aggregateStats[$k]['info']['orders'] += $revenue['total_orders'];
}
- if( !empty( $revenue['total_orders'] ) ) {
- @$aggregateStats[$k]['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['orders'] += $revenue['total_orders'];
+ }
+}
+
+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;
+
+ @$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;
+
+ @$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;
+
+ @$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 );
}
}
}
-function computeStats( &$aggregateStats, $k, $key, $value, $revenue, $userHash ) {
- if( !empty( $revenue['total_orders'] ) ) {
- @$aggregateStats[$k]['values'][$key]['values'][$value]['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['values'][$value]['orders'] += $revenue['total_orders'];
- @$aggregateStats[$k]['values'][$key]['revenue'] += $revenue['total_revenue'];
- @$aggregateStats[$k]['values'][$key]['orders'] += $revenue['total_orders'];
+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;
+
+ 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;
}
- $aggregateStats[$k]['values'][$key]['values'][$value]['users'][] = $userHash;
- @$aggregateStats[$k]['values'][$key]['registrations']++;
+
}
+$gBitThemes->loadCss( STATS_PKG_PATH.'css/stats.css');
$gBitThemes->loadCss( CONFIG_PKG_PATH.'themes/bootstrap/bootstrap-table/bootstrap-table.css');
$gBitThemes->loadJavascript( CONFIG_PKG_PATH.'themes/bootstrap/bootstrap-table/bootstrap-table.js');
@@ -101,4 +131,4 @@ $gBitSmarty->assign( 'totalRegistrations', $totalRegistrations );
$gBitSmarty->assign( 'maxRegistrations', $maxRegistrations );
$gBitSmarty->assign( 'listInfo', $_REQUEST['listInfo'] );
$gBitSystem->display( 'bitpackage:stats/referrer_stats.tpl', tra( 'Referer Statistics' ), array( 'display_mode' => 'display' ));
-?>
+