forked from iamandycohen/UrlRewrite
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Tracking.cs
73 lines (61 loc) · 2.5 KB
/
Tracking.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using Hi.UrlRewrite.Processing.Results;
using Sitecore.Analytics;
using Sitecore.Analytics.Data;
using Sitecore.Analytics.Model;
using Sitecore.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
namespace Hi.UrlRewrite.Analytics
{
public class Tracking
{
private readonly static Guid RedirectEventItemId = new Guid(Constants.RedirectEventItemId);
private readonly static Tracking tracking = new Tracking();
public static void TrackRedirect(ProcessInboundRulesResult results)
{
tracking.RegisterEventOnRedirect(results);
}
public void RegisterEventOnRedirect(ProcessInboundRulesResult results)
{
if (!Tracker.Enabled)
return;
if (!Tracker.IsActive)
Tracker.StartTracking();
try
{
foreach (var result in results.ProcessedResults.Where(e => e.RuleMatched))
{
var itemId = result.ItemId;
var redirectItem = Sitecore.Context.Database.GetItem(new ID(itemId));
if (redirectItem != null)
{
var pageEventModel = new Sitecore.Analytics.Model.PageEventData()
{
PageEventDefinitionId = RedirectEventItemId,
ItemId = itemId,
Name = "UrlRewrite Redirect",
DateTime = DateTime.UtcNow,
Text = string.Format("Redirected from {0} to {1} using {2} [{3}].", result.OriginalUri, result.RewrittenUri, redirectItem.Name, itemId)
};
var pageEventData = new Sitecore.Analytics.Data.PageEventData(pageEventModel);
Tracker.Current.CurrentPage.Item = new Sitecore.Analytics.Model.ItemData
{
Id = itemId,
Language = redirectItem.Language.Name,
Version = redirectItem.Version.Number
};
Tracker.Current.CurrentPage.Register(pageEventData);
Tracker.Current.Interaction.AcceptModifications();
}
}
}
catch (Exception ex)
{
Log.Error(this, ex, "Exception occurred during tracking.");
}
}
}
}