public void Process(ParseReferrerArgs args) { Sitecore.Diagnostics.Log.Info(this + " : Process()", this); foreach (string hostname in this.Hostnames) { Sitecore.Diagnostics.Log.Info(this + " : hostname : " + hostname, this); if (args.UrlReferrer.DnsSafeHost.IndexOf( hostname, StringComparison.CurrentCultureIgnoreCase) > -1) { Sitecore.Diagnostics.Log.Info(this + " : match!", this); string keywords = args.UrlReferrer.AbsolutePath.Trim('/'); int slash = keywords.IndexOf("/"); if (slash > -1) { keywords = keywords.Substring(0, slash); } keywords = System.Web.HttpUtility.UrlDecode(keywords); args.Visit.Keywords = Tracker.Visitor.DataContext.GetKeywords( keywords); return; } } }
// Methods private void Parse(HttpRequest request, VisitorDataSet.VisitsRow visit) { Assert.ArgumentNotNull(request, "request"); string urlReferrerValue = QueryStringHelper.SessionUrlReferrer; Uri urlReferrer = null; if (!String.IsNullOrEmpty(urlReferrerValue)) { if( !urlReferrerValue.StartsWith("http://") || !urlReferrerValue.StartsWith("https://") ) urlReferrerValue = "http://" + urlReferrerValue + HttpContext.Current.Request.Url.Query; urlReferrer = new Uri(urlReferrerValue); } else { urlReferrer = request.UrlReferrer; } if (urlReferrer == null) { visit.Keywords = Tracker.Visitor.DataContext.GetKeywords(string.Empty); visit.ReferringSite = Tracker.Visitor.DataContext.GetReferringSite(string.Empty); visit.Referrer = string.Empty; } else { visit.ReferringSite = Tracker.Visitor.DataContext.GetReferringSite(urlReferrer.Host); visit.Referrer = urlReferrer.ToString(); ParseReferrerArgs args2 = new ParseReferrerArgs { UrlReferrer = urlReferrer, Visit = visit }; ParseReferrerArgs args = args2; ParseReferrerPipeline.Run(args); if (visit.Keywords == null) { visit.Keywords = Tracker.Visitor.DataContext.GetKeywords(string.Empty); } } }
private void SetReferrer(TrackerData trackerData) { if (trackerData.Referrer == null) { return; } //Only set the referrer if it hasn't been set previously - or if the previous referrer is the current site if (Tracker.Current.Interaction.Referrer != null && !HttpContext.Current.Request.Url.Host.Equals(Tracker.Current.Interaction.ReferringSite, StringComparison.InvariantCultureIgnoreCase)) { return; } Tracker.Current.Interaction.Referrer = trackerData.Referrer.ToString(); Tracker.Current.Interaction.ReferringSite = trackerData.Referrer.Host; var args = new ParseReferrerArgs { UrlReferrer = trackerData.Referrer, Interaction = Tracker.Current.Interaction }; ParseReferrerPipeline.Run(args); }