Skip to content

Commit 0d94eac

Browse files
2ndkauboystklcode
authored andcommitted
include new data and meta tracking data in PHP and JS
1 parent 8cfeeb8 commit 0d94eac

4 files changed

Lines changed: 29 additions & 38 deletions

File tree

inc/class-statify-api.php

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -99,16 +99,17 @@ public static function track_visit( $request ) {
9999
}
100100
}
101101

102-
$referrer = $request->get_param( 'referrer' );
103-
if ( null !== $referrer ) {
104-
$referrer = filter_var( $referrer, FILTER_SANITIZE_URL );
102+
$tracking_data = $request->get_param( 'tracking_data' );
103+
if ( null !== $tracking_data['referrer'] ) {
104+
$tracking_data['referrer'] = filter_var( $tracking_data['referrer'], FILTER_SANITIZE_URL );
105105
}
106-
$target = $request->get_param( 'target' );
107-
if ( null !== $target ) {
108-
$target = filter_var( $target, FILTER_SANITIZE_URL );
106+
if ( null !== $tracking_data['target'] ) {
107+
$tracking_data['target'] = filter_var( $tracking_data['target'], FILTER_SANITIZE_URL );
109108
}
110109

111-
Statify::track( $referrer, $target );
110+
$tracking_meta = $request->get_param( 'tracking_meta' );
111+
112+
Statify::track( $tracking_data, $tracking_meta );
112113
}
113114

114115
return new WP_REST_Response( null, 204 );

inc/class-statify-frontend.php

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,7 @@ public static function track_visit( $is_snippet = false ) {
8383
return false;
8484
}
8585

86-
// Set target & referrer.
87-
$target = null;
88-
$referrer = null;
89-
if ( isset( $_SERVER['REQUEST_URI'] ) ) {
90-
$target = filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL );
91-
}
92-
if ( isset( $_SERVER['HTTP_REFERER'] ) ) {
93-
$referrer = filter_var( wp_unslash( $_SERVER['HTTP_REFERER'] ), FILTER_SANITIZE_URL );
94-
}
95-
96-
Statify::track( $referrer, $target );
86+
Statify::track( self::$tracking_data, self::$tracking_meta );
9787
}
9888

9989
/**
@@ -146,6 +136,8 @@ public static function wp_footer() {
146136
// Add endpoint to script.
147137
$script_data = array(
148138
'url' => esc_url_raw( rest_url( Statify_Api::REST_NAMESPACE . '/' . Statify_Api::REST_ROUTE_TRACK ) ),
139+
'tracking_data' => self::$tracking_data,
140+
'tracking_meta' => wp_list_pluck( self::$tracking_meta, 'meta_value', 'meta_key' ),
149141
);
150142
if ( Statify::TRACKING_METHOD_JAVASCRIPT_WITH_NONCE_CHECK === self::$_options['snippet'] ) {
151143
$script_data['nonce'] = wp_create_nonce( 'statify_track' );

inc/class-statify.php

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -97,30 +97,30 @@ public static function init() {
9797
/**
9898
* Track the page view.
9999
*
100-
* @param string|null $referrer Referrer URL.
101-
* @param string|null $target Target URL.
100+
* @param array $tracking_data Tracking data.
101+
* @param array $tracking_meta Tracking meta.
102102
*
103103
* @return void
104104
*
105105
* @since 0.1.0
106106
* @since 1.7.0 $is_snippet parameter added.
107107
* @since 2.0.0 Migration from Statify_Frontend::track_visit to Statify::track with multiple parameters.
108108
*/
109-
protected static function track( $referrer, $target ) {
109+
protected static function track( $tracking_data, $tracking_meta ) {
110110
if ( empty( Statify_Frontend::get_tracking_data() ) ) {
111111
Statify_Frontend::init_tracking_data();
112112
}
113113

114114
// Fallbacks for uninitialized or omitted target and referrer values.
115-
if ( is_null( $target ) ) {
116-
$target = '/';
115+
if ( is_null( $tracking_data['target'] ) ) {
116+
$tracking_data['target'] = '/';
117117
}
118-
if ( is_null( $referrer ) ) {
119-
$referrer = '';
118+
if ( is_null( $tracking_data['referrer'] ) ) {
119+
$tracking_data['referrer'] = '';
120120
}
121121

122122
// Invalid target?
123-
if ( empty( $target ) || ! wp_validate_redirect( $target, false ) ) {
123+
if ( empty( $tracking_data['target'] ) || ! wp_validate_redirect( $tracking_data['target'], false ) ) {
124124
return;
125125
}
126126

@@ -130,28 +130,28 @@ protected static function track( $referrer, $target ) {
130130
}
131131

132132
// Sanitize referrer url.
133-
if ( ! empty( $referrer ) && false === self::strposa( $referrer, array( home_url(), network_admin_url() ) ) ) {
134-
$referrer = esc_url_raw( $referrer, array( 'http', 'https' ) );
133+
if ( ! empty( $tracking_data['referrer'] ) && false === self::strposa( $tracking_data['referrer'], array( home_url(), network_admin_url() ) ) ) {
134+
$tracking_data['referrer'] = esc_url_raw( $tracking_data['referrer'], array( 'http', 'https' ) );
135135
} else {
136-
$referrer = '';
136+
$tracking_data['referrer'] = '';
137137
}
138138

139139
// Relative target URL.
140-
$target = user_trailingslashit( str_replace( home_url( '/', 'relative' ), '/', $target ) );
140+
$tracking_data['target'] = user_trailingslashit( str_replace( home_url( '/', 'relative' ), '/', $tracking_data['target'] ) );
141141

142142
/* Global vars */
143143
global $wp_rewrite;
144144

145145
// Trim target URL.
146146
if ( $wp_rewrite->permalink_structure ) {
147-
$target = wp_parse_url( $target, PHP_URL_PATH );
147+
$tracking_data['target'] = wp_parse_url( $tracking_data['target'], PHP_URL_PATH );
148148
}
149149

150150
// Init rows.
151151
$data = array(
152152
'created' => current_time( 'Y-m-d' ),
153-
'referrer' => $referrer,
154-
'target' => $target,
153+
'referrer' => $tracking_data['referrer'],
154+
'target' => $tracking_data['target'],
155155
'hits' => 1,
156156
);
157157

@@ -161,9 +161,7 @@ protected static function track( $referrer, $target ) {
161161

162162
$statify_id = $wpdb->insert_id;
163163

164-
$tracking_meta = Statify_Frontend::get_tracking_data();
165-
166-
foreach ( self::$tracking_meta as $meta_field ) {
164+
foreach ( Statify_Frontend::get_tracking_data() as $meta_field ) {
167165
if ( array_key_exists( $meta_field['meta_key'], $tracking_meta ) ) {
168166
$meta_value = $tracking_meta[ $meta_field['meta_key'] ];
169167

js/snippet.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
statifyReq.open( 'POST', statifyAjax.url, true );
77
statifyReq.setRequestHeader( 'Content-Type', 'application/json' );
88
data = {
9-
referrer: document.referrer,
10-
target: location.pathname + location.search,
9+
tracking_data: statifyAjax.tracking_data,
10+
tracking_meta: statifyAjax.tracking_meta,
1111
};
1212
if ( 'nonce' in statifyAjax ) {
1313
data.nonce = statifyAjax.nonce;

0 commit comments

Comments
 (0)