@@ -12828,6 +12828,25 @@ dependencyScope.jQuery = $;;
1282812828 return value === true || value === false ;
1282912829 }
1283012830 } ) ;
12831+ attributes . add ( 'HANDLE_UTM' , {
12832+ name : 'handleUtm' ,
12833+ defaultValue : false ,
12834+ validate : function ( value ) {
12835+ return value === true || value === false ;
12836+ }
12837+ } ) ;
12838+ attributes . add ( 'UTM_MAPPER' , {
12839+ name : 'utmMapper' ,
12840+ defaultValue : function ( utmData , user ) {
12841+ return {
12842+ 'utmData' : utmData ,
12843+ 'user' : user
12844+ } ;
12845+ } ,
12846+ validate : function ( value ) {
12847+ return value === null || typeof ( value ) === 'function' ;
12848+ }
12849+ } ) ;
1283112850 attributes . add ( 'AJAX_TIMEOUT' , {
1283212851 name : 'timeout' ,
1283312852 defaultValue : 4000 ,
@@ -13413,6 +13432,38 @@ dependencyScope.jQuery = $;;
1341313432 return unixTimestamp + "-" + paraLocalDateTime + "-" + paraTimezone ;
1341413433 } ,
1341513434
13435+ handleUtmParameters : function ( ) {
13436+
13437+ // get the mapper to be used
13438+ var mapper = _config . get ( ATTR_CONFIG . UTM_MAPPER ) ;
13439+ if ( typeof mapper !== 'function' ) {
13440+ return ;
13441+ }
13442+
13443+ // see https://en.wikipedia.org/wiki/UTM_parameters
13444+ var params = BreinifyUtil . loc . params ( ) ;
13445+
13446+ var utmSource = Breinify . UTL . isEmpty ( params [ 'utm_source' ] ) ? null : params [ 'utm_source' ] ;
13447+ var utmMedium = Breinify . UTL . isEmpty ( params [ 'utm_medium' ] ) ? null : params [ 'utm_medium' ] ;
13448+ var utmCampaign = Breinify . UTL . isEmpty ( params [ 'utm_campaign' ] ) ? null : params [ 'utm_campaign' ] ;
13449+ var utmTerm = Breinify . UTL . isEmpty ( params [ 'utm_term' ] ) ? null : params [ 'utm_term' ] ;
13450+ var utmContent = Breinify . UTL . isEmpty ( params [ 'utm_content' ] ) ? null : params [ 'utm_content' ] ;
13451+
13452+ // create the data
13453+ var values = mapper ( {
13454+ 'utmSource' : utmSource ,
13455+ 'utmMedium' : utmMedium ,
13456+ 'utmCampaign' : utmCampaign ,
13457+ 'utmTerm' : utmTerm ,
13458+ 'utmContent' : utmContent
13459+ } , { } ) ;
13460+
13461+ // make sure we have a result and send the activity
13462+ if ( $ . isPlainObject ( values ) && $ . isPlainObject ( values . user ) && $ . isPlainObject ( values . utmData ) ) {
13463+ Breinify . activity ( values . user , 'utmData' , null , null , values . utmData , null ) ;
13464+ }
13465+ } ,
13466+
1341613467 handleGetParameters : function ( ) {
1341713468 var knownParams = {
1341813469 'brec' : {
@@ -13442,7 +13493,7 @@ dependencyScope.jQuery = $;;
1344213493 }
1344313494 } ,
1344413495
13445- handleGetParameter : function ( name , value , overrides ) {
13496+ handleGetParameter : function ( name , value , overrides ) {
1344613497
1344713498 // parse it and make sure it was parseable
1344813499 var parsedValue = _privates . parseGetParameter ( name , value ) ;
@@ -13478,7 +13529,7 @@ dependencyScope.jQuery = $;;
1347813529 */
1347913530 var user = combinedValue . user ;
1348013531 var activity = combinedValue . activity ;
13481- Breinify . activity ( user , activity . type , activity . category , activity . description , activity . tags , null , function ( ) {
13532+ Breinify . activity ( user , activity . type , activity . category , activity . description , activity . tags , null , function ( ) {
1348213533
1348313534 // mark it as successfully sent
1348413535 BreinifyUtil . cookie . set ( hashId , true ) ;
@@ -13521,6 +13572,10 @@ dependencyScope.jQuery = $;;
1352113572 if ( _config . get ( ATTR_CONFIG . HANDLE_PARAMETERS ) === true ) {
1352213573 _privates . handleGetParameters ( ) ;
1352313574 }
13575+
13576+ if ( _config . get ( ATTR_CONFIG . HANDLE_UTM ) === true ) {
13577+ _privates . handleUtmParameters ( ) ;
13578+ }
1352413579 } ;
1352513580
1352613581 /**
0 commit comments