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