File: routes/lib/tracker/sourceIdentification.js
/**
@module Tracker
*/
var getRefererInformation = function (refererUrl, currentUrl, idSite)
{
/**
@class getRefererInformation
@constructor
@params refererUrl {String} The document.referrer of visited url
@params currentUrl {String} The current visiting url
@params Id {Number} Profile Id of registerd website.
@This class provides get the referrer information of the visited url.
*/
this.idsite = idSite;
this.CONSTANTS = require('./constant');
// default values for the referer_* fields
this.refererUrl = this.unsanitizeInputValue(refererUrl);
this.refererUrlParse = this.parseUrl(this.refererUrl);
this.currentUrlParse = this.parseUrl(currentUrl);
this.typeRefererAnalyzed = this.CONSTANTS.REFERER_TYPE_DIRECT_ENTRY;
this.nameRefererAnalyzed = '';
this.keywordRefererAnalyzed = '';
this.refererHost = '';
}
//unsanitize values.
getRefererInformation.prototype.unsanitizeInputValue = function(refererUrl){
/**
@method unsanitizeInputValue
@return {String} url with unwanted things removed.
*/
return refererUrl;
}
getRefererInformation.prototype.parseUrl = function(refererUrl){
/**
@method parseUrl
@using to parse url.
@params {String} url.
@return {Object} url with unwanted things removed.
@uses getUrlVars
*/
var parsed={};
var split1 = refererUrl.split('?')[0];
parsed.queryString = split1[1];
parsed.url = split1[0];
parsed.params = getRefererInformation.getUrlVars();
return parsed;
}
getRefererInformation.prototype.getUrlVars=function (url)
{
/**
@method getUrlVars
@params url the url
@return {Object} of Query string variables as object.
@using to url variables in the object.
*/
var pattern='//';
var keyVal = url.split('?')[1].split('&');
var params={};
for(var i in keyVal){
var k = keyVal[i].split('=')
params[k[0]]=k[1];
}
return params;
}
getRefererInformation.prototype.getRefererObject=function (){
/**
@method getRefererObject
@using to getRefererInformation from url.
@return {object} returns following format
{
'RefererType' : value,
'RefererName' : value,
'RefererKeyword' : value,
'RefererUrl' : value
}
*/
if(isset(this.refererUrlParse['host']))
{
this.refererHost = this.refererUrlParse['host'];
}
refererDetected = false;
if( !empty(this.currentUrlParse['host'])
&& this.detectRefererCampaign() )
{
refererDetected = true;
}
if(!refererDetected)
{
if( this.detectRefererDirectEntry()
|| this.detectRefererSearchEngine() )
{
refererDetected = true;
}
}
if(!empty(this.refererHost)
&& !refererDetected)
{
this.typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_WEBSITE;
this.nameRefererAnalyzed = mb_strtolower(this.refererHost, 'UTF-8');
}
return {
'RefererType' : this.typeRefererAnalyzed,
'RefererName' : this.nameRefererAnalyzed,
'RefererKeyword' : this.keywordRefererAnalyzed,
'RefererUrl' : this.refererUrl,
};
}
getRefererInformation.prototype.getHost(url)
{
/**
@method getHost
@params url {String}
@return {string} host name from the given url.
@using get host from the url.
*/
}
//exporting.
exports.getRefererInformation = getRefererInformation;