summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/jetpack/_inc/lib/tracks/tracks-callables.js')
-rw-r--r--plugins/jetpack/_inc/lib/tracks/tracks-callables.js76
1 files changed, 76 insertions, 0 deletions
diff --git a/plugins/jetpack/_inc/lib/tracks/tracks-callables.js b/plugins/jetpack/_inc/lib/tracks/tracks-callables.js
new file mode 100644
index 00000000..d4e53af6
--- /dev/null
+++ b/plugins/jetpack/_inc/lib/tracks/tracks-callables.js
@@ -0,0 +1,76 @@
+/**
+ * This was abstracted from wp-calypso's analytics lib: https://github.com/Automattic/wp-calypso/blob/master/client/lib/analytics/README.md
+ * Some stuff was removed like GA tracking and other things not necessary for Jetpack tracking.
+ *
+ * This library should only be used and loaded if the Jetpack site is connected.
+ */
+
+// Load tracking scripts
+window._tkq = window._tkq || [];
+
+function buildQuerystring( group, name ) {
+ var uriComponent = '';
+
+ if ( 'object' === typeof group ) {
+ for ( var key in group ) {
+ uriComponent += '&x_' + encodeURIComponent( key ) + '=' + encodeURIComponent( group[ key ] );
+ }
+ } else {
+ uriComponent = '&x_' + encodeURIComponent( group ) + '=' + encodeURIComponent( name );
+ }
+
+ return uriComponent;
+}
+
+var analytics = {
+ initialize: function( userId, username ) {
+ analytics.setUser( userId, username );
+ analytics.identifyUser();
+ },
+
+ mc: {
+ bumpStat: function( group, name ) {
+ var uriComponent = buildQuerystring( group, name ); // prints debug info
+ new Image().src =
+ document.location.protocol +
+ '//pixel.wp.com/g.gif?v=wpcom-no-pv' +
+ uriComponent +
+ '&t=' +
+ Math.random();
+ },
+ },
+
+ tracks: {
+ recordEvent: function( eventName, eventProperties ) {
+ eventProperties = eventProperties || {};
+
+ if ( eventName.indexOf( 'jetpack_' ) !== 0 ) {
+ debug( '- Event name must be prefixed by "jetpack_"' );
+ return;
+ }
+
+ window._tkq.push( [ 'recordEvent', eventName, eventProperties ] );
+ },
+
+ recordPageView: function( urlPath ) {
+ analytics.tracks.recordEvent( 'jetpack_page_view', {
+ path: urlPath,
+ } );
+ },
+ },
+
+ setUser: function( userId, username ) {
+ _user = { ID: userId, username: username };
+ },
+
+ identifyUser: function() {
+ // Don't identify the user if we don't have one
+ if ( _user ) {
+ window._tkq.push( [ 'identifyUser', _user.ID, _user.username ] );
+ }
+ },
+
+ clearedIdentity: function() {
+ window._tkq.push( [ 'clearIdentity' ] );
+ },
+};