1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
<?php
/**
* $Header$
*
* $Id$
* @package stats
*/
/**
* required setup
*/
require_once( '../kernel/setup_inc.php' );
include_once ( STATS_PKG_PATH.'Statistics.php');
$gBitSystem->verifyPackage( 'stats' );
$gBitSystem->verifyFeature( 'stats_referers' );
$gBitSystem->verifyPermission( 'p_stats_view_referer' );
$gStats = new Statistics();
if( empty( $_REQUEST['period'] ) || empty( $_REQUEST['timeframe'] ) ) {
bit_redirect( STATS_PKG_URL.'users.php' );
}
// get rid of all referers in the database
if( isset( $_REQUEST["clear"] )) {
$gStats->expungeReferers();
}
$referers = $gStats->getRefererList( $_REQUEST );
$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[$k] ) as $r ) {
$url = parse_url( $referers[$k][$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;
}
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 ) {
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;
}
}
}
}
if( !empty( $revenue['total_orders'] ) ) {
@$aggregateStats[$k]['revenue'] += $revenue['total_revenue'];
@$aggregateStats[$k]['orders'] += $revenue['total_orders'];
}
}
}
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'];
}
$aggregateStats[$k]['values'][$key]['values'][$value]['users'][] = $userHash;
@$aggregateStats[$k]['values'][$key]['registrations']++;
}
$gBitThemes->loadCss( CONFIG_PKG_PATH.'themes/bootstrap/bootstrap-table/bootstrap-table.css');
$gBitThemes->loadJavascript( CONFIG_PKG_PATH.'themes/bootstrap/bootstrap-table/bootstrap-table.js');
$gBitSmarty->assignByRef( 'aggregateStats', $aggregateStats );
$gBitSmarty->assignByRef( 'referers', $referers );
$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' ));
?>
|