diff options
Diffstat (limited to 'referrers.php')
| -rw-r--r-- | referrers.php | 98 |
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' )); -?> + |
