private void ClickThroughsBox_PreRender(object sender, EventArgs e) { Control root = contentPlaceHolder; SiteConfig siteConfig = SiteConfig.GetSiteConfig(); ILoggingDataService logService = LoggingDataServiceFactory.GetService(SiteConfig.GetLogPathFromCurrentContext()); IBlogDataService dataService = BlogDataServiceFactory.GetService(SiteConfig.GetContentPathFromCurrentContext(), logService); Dictionary <string, int> clickThroughUrls = new Dictionary <string, int>(); Dictionary <string, int> userAgents = new Dictionary <string, int>(); Dictionary <string, int> userDomains = new Dictionary <string, int>(); // get the user's local time DateTime utcTime = DateTime.UtcNow; DateTime localTime = siteConfig.GetConfiguredTimeZone().ToLocalTime(utcTime); if (Request.QueryString["date"] != null) { try { DateTime popUpTime = DateTime.ParseExact(Request.QueryString["date"], "yyyy-MM-dd", CultureInfo.InvariantCulture); utcTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, utcTime.Hour, utcTime.Minute, utcTime.Second); localTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, localTime.Hour, localTime.Minute, localTime.Second); } catch (FormatException ex) { ErrorTrace.Trace(System.Diagnostics.TraceLevel.Error, ex); } } LogDataItemCollection logItems = new LogDataItemCollection(); logItems.AddRange(logService.GetClickThroughsForDay(localTime)); if (siteConfig.AdjustDisplayTimeZone) { newtelligence.DasBlog.Util.WindowsTimeZone tz = siteConfig.GetConfiguredTimeZone(); TimeSpan ts = tz.GetUtcOffset(DateTime.UtcNow); int offset = ts.Hours; if (offset < 0) { logItems.AddRange(logService.GetClickThroughsForDay(localTime.AddDays(1))); } else { logItems.AddRange(logService.GetClickThroughsForDay(localTime.AddDays(-1))); } } foreach (LogDataItem log in logItems) { bool exclude = false; if (siteConfig.AdjustDisplayTimeZone) { if (siteConfig.GetConfiguredTimeZone().ToLocalTime(log.RequestedUtc).Date != localTime.Date) { exclude = true; } } if (!exclude) { string key = log.UrlRequested + "°" + log.UrlReferrer; if (!clickThroughUrls.ContainsKey(key)) { clickThroughUrls[key] = 0; } clickThroughUrls[key] = clickThroughUrls[key] + 1; if (!userAgents.ContainsKey(log.UserAgent)) { userAgents[log.UserAgent] = 0; } userAgents[log.UserAgent] = userAgents[log.UserAgent] + 1; if (!userDomains.ContainsKey(log.UserDomain)) { userDomains[log.UserDomain] = 0; } userDomains[log.UserDomain] = userDomains[log.UserDomain] + 1; } } root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(clickThroughUrls), resmgr.GetString("text_activity_click_throughs"), resmgr.GetString("text_activity_clicks"), new StatisticsBuilderCallback(this.BuildClickThroughsRow), dataService)); root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(userDomains), resmgr.GetString("text_activity_user_domains"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildUserDomainRow), dataService)); root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(userAgents), resmgr.GetString("text_activity_user_agent"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildAgentsRow), dataService)); DataBind(); }
private void ClickThroughsBox_PreRender(object sender, EventArgs e) { if (_robotDefinition == null) { return; } Control root = contentPlaceHolder; SiteConfig siteConfig = SiteConfig.GetSiteConfig(); ILoggingDataService logService = LoggingDataServiceFactory.GetService(SiteConfig.GetLogPathFromCurrentContext()); IBlogDataService dataService = BlogDataServiceFactory.GetService(SiteConfig.GetContentPathFromCurrentContext(), logService); Dictionary <string, int> clickThroughUrls = new Dictionary <string, int>(); Dictionary <string, int> userAgents = new Dictionary <string, int>(); Dictionary <string, int> userDomains = new Dictionary <string, int>(); DateTime serverTimeUtc = DateTime.Now.ToUniversalTime(); DateTime localTime = siteConfig.GetConfiguredTimeZone().ToLocalTime(serverTimeUtc); if (Request.QueryString["date"] != null) { try { DateTime popUpTime = DateTime.ParseExact(Request.QueryString["date"], "yyyy-MM-dd", CultureInfo.InvariantCulture); localTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day); serverTimeUtc = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, 23, 59, 59).ToUniversalTime(); } catch (FormatException ex) { ErrorTrace.Trace(System.Diagnostics.TraceLevel.Error, ex); } } LogDataItemCollection logItems = new LogDataItemCollection(); logItems.AddRange(logService.GetClickThroughsForDay(serverTimeUtc)); // depending on the offset (positive or negative) we want to grab events in the // next or previos day to account for timezone difference. if (siteConfig.AdjustDisplayTimeZone) { newtelligence.DasBlog.Util.WindowsTimeZone tz = siteConfig.GetConfiguredTimeZone(); TimeSpan ts = tz.GetUtcOffset(DateTime.Now); int offset = ts.Hours; if (serverTimeUtc.Date != serverTimeUtc.AddHours(offset).Date) { logItems.AddRange(logService.GetClickThroughsForDay(serverTimeUtc.AddHours(offset))); } } foreach (LogDataItem log in logItems) { bool exclude = false; if (siteConfig.AdjustDisplayTimeZone) { if (siteConfig.GetConfiguredTimeZone().ToLocalTime(log.RequestedUtc).Date != localTime.Date) { exclude = true; } } if (_robotDefinition.IsRobot(log)) { exclude = true; } if (!exclude) { string key = log.UrlRequested + "°" + log.UrlReferrer; if (!clickThroughUrls.ContainsKey(key)) { clickThroughUrls[key] = 0; } clickThroughUrls[key] = clickThroughUrls[key] + 1; if (!userAgents.ContainsKey(log.UserAgent)) { userAgents[log.UserAgent] = 0; } userAgents[log.UserAgent] = userAgents[log.UserAgent] + 1; // AG User domain added. if (!userDomains.ContainsKey(log.UserDomain)) { userDomains[log.UserDomain] = 0; } userDomains[log.UserDomain] = userDomains[log.UserDomain] + 1; } } root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(clickThroughUrls), resmgr.GetString("text_activity_click_throughs"), resmgr.GetString("text_activity_clicks"), new StatisticsBuilderCallback(this.BuildClickThroughsRow), dataService)); root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(userDomains), resmgr.GetString("text_activity_user_domains"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildUserDomainRow), dataService)); root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(userAgents), resmgr.GetString("text_activity_user_agent"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildAgentsRow), dataService)); DataBind(); }
private void EventlogBox_PreRender(object sender, EventArgs e) { SiteConfig siteConfig = SiteConfig.GetSiteConfig(); Control root = contentPlaceHolder; ILoggingDataService logService = LoggingDataServiceFactory.GetService(SiteConfig.GetLogPathFromCurrentContext()); Table table = new Table(); table.CssClass = "statsTableStyle"; TableRow row = new TableRow(); row.CssClass = "statsTableHeaderRowStyle"; row.Cells.Add(new TableCell()); row.Cells.Add(new TableCell()); row.Cells.Add(new TableCell()); row.Cells[0].CssClass = "statsTableDateColumnStyle"; row.Cells[1].CssClass = "statsTableNumColumnStyle"; row.Cells[2].CssClass = "statsTableColumnStyle"; row.Cells[0].Text = "<b>" + resmgr.GetString("text_time") + "</b>"; row.Cells[1].Text = "<b>" + resmgr.GetString("text_message_code") + "</b>"; row.Cells[2].Text = "<b>" + resmgr.GetString("text_message_text") + "</b>"; table.Rows.Add(row); // get the user's local time DateTime utcTime = DateTime.UtcNow; DateTime localTime = siteConfig.GetConfiguredTimeZone().ToLocalTime(utcTime); if (Request.QueryString["date"] != null) { try { DateTime popUpTime = DateTime.ParseExact(Request.QueryString["date"], "yyyy-MM-dd", CultureInfo.InvariantCulture); utcTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, utcTime.Hour, utcTime.Minute, utcTime.Second); localTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, localTime.Hour, localTime.Minute, localTime.Second); } catch (FormatException ex) { ErrorTrace.Trace(System.Diagnostics.TraceLevel.Error, ex); } } EventDataItemCollection logItems = new EventDataItemCollection(); logItems.AddRange(logService.GetEventsForDay(localTime)); if (siteConfig.AdjustDisplayTimeZone) { newtelligence.DasBlog.Util.WindowsTimeZone tz = siteConfig.GetConfiguredTimeZone(); TimeSpan ts = tz.GetUtcOffset(DateTime.UtcNow); int offset = ts.Hours; if (offset < 0) { logItems.AddRange(logService.GetEventsForDay(localTime.AddDays(1))); } else { logItems.AddRange(logService.GetEventsForDay(localTime.AddDays(-1))); } } EventDataItem[] sortedLogItems = logItems.ToSortedArray(); foreach (EventDataItem eventItem in sortedLogItems) { if (siteConfig.AdjustDisplayTimeZone) { if (siteConfig.GetConfiguredTimeZone().ToLocalTime(eventItem.EventTimeUtc).Date != localTime.Date) { continue; } } row = new TableRow(); row.CssClass = "statsTableRowStyle"; switch (eventItem.EventCode) { case ((int)EventCodes.Error): case ((int)EventCodes.PingbackServerError): case ((int)EventCodes.PingWeblogsError): case ((int)EventCodes.Pop3ServerError): case ((int)EventCodes.SmtpError): row.CssClass = "statsTableRowStyleError"; break; case ((int)EventCodes.SecurityFailure): row.CssClass = "statsTableRowStyleSecurityFailure"; break; case ((int)EventCodes.TrackbackBlocked): case ((int)EventCodes.ReferralBlocked): case ((int)EventCodes.ItemReferralBlocked): case ((int)EventCodes.CommentBlocked): case ((int)EventCodes.PingbackBlocked): row.CssClass = "statsTableRowStyleBlocked"; break; default: break; } row.Cells.Add(new TableCell()); row.Cells.Add(new TableCell()); row.Cells.Add(new TableCell()); row.Cells[0].CssClass = "statsTableDateColumnStyle"; row.Cells[1].CssClass = "statsTableNumColumnStyle"; row.Cells[2].CssClass = "statsTableColumnStyle"; if (siteConfig.AdjustDisplayTimeZone) { row.Cells[0].Text = siteConfig.GetConfiguredTimeZone().ToLocalTime(eventItem.EventTimeUtc).ToString("yyyy-MM-dd HH:mm:ss tt"); } else { row.Cells[0].Text = eventItem.EventTimeUtc.ToString("yyyy-MM-dd HH:mm:ss tt") + " UTC"; } row.Cells[1].Text = eventItem.EventCode.ToString(); row.Cells[2].Text = eventItem.HtmlMessage; table.Rows.Add(row); } root.Controls.Add(table); DataBind(); }
private void ReferrersBox_PreRender(object sender, EventArgs e) { Control root = contentPlaceHolder; SiteConfig siteConfig = SiteConfig.GetSiteConfig(); ILoggingDataService logService = LoggingDataServiceFactory.GetService(SiteConfig.GetLogPathFromCurrentContext()); string siteRoot = siteConfig.Root.ToUpper(); Dictionary <string, int> referrerUrls = new Dictionary <string, int>(); Dictionary <string, int> userAgents = new Dictionary <string, int>(); Dictionary <string, int> searchUrls = new Dictionary <string, int>(); Dictionary <string, int> userDomains = new Dictionary <string, int>(); // get the user's local time DateTime utcTime = DateTime.UtcNow; DateTime localTime = siteConfig.GetConfiguredTimeZone().ToLocalTime(utcTime); if (Request.QueryString["date"] != null) { try { DateTime popUpTime = DateTime.ParseExact(Request.QueryString["date"], "yyyy-MM-dd", CultureInfo.InvariantCulture); utcTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, utcTime.Hour, utcTime.Minute, utcTime.Second); localTime = new DateTime(popUpTime.Year, popUpTime.Month, popUpTime.Day, localTime.Hour, localTime.Minute, localTime.Second); } catch (FormatException ex) { ErrorTrace.Trace(System.Diagnostics.TraceLevel.Error, ex); } } LogDataItemCollection logItems = new LogDataItemCollection(); logItems.AddRange(logService.GetReferralsForDay(localTime)); if (siteConfig.AdjustDisplayTimeZone) { newtelligence.DasBlog.Util.WindowsTimeZone tz = siteConfig.GetConfiguredTimeZone(); TimeSpan ts = tz.GetUtcOffset(DateTime.UtcNow); int offset = ts.Hours; if (offset < 0) { logItems.AddRange(logService.GetReferralsForDay(localTime.AddDays(1))); } else { logItems.AddRange(logService.GetReferralsForDay(localTime.AddDays(-1))); } } foreach (LogDataItem log in logItems) { bool exclude = false; if (log.UrlReferrer != null) { exclude = log.UrlReferrer.ToUpper().StartsWith(siteRoot); // Let Utils.ParseSearchString decide whether it's a search engine referrer. if (SiteUtilities.ParseSearchString(log.UrlReferrer) != null) { exclude = true; bool addToSearches = true; if (siteConfig.AdjustDisplayTimeZone) { if (siteConfig.GetConfiguredTimeZone().ToLocalTime(log.RequestedUtc).Date != localTime.Date) { addToSearches = false; } } if (addToSearches) { if (!searchUrls.ContainsKey(log.UrlReferrer)) { searchUrls[log.UrlReferrer] = 0; } searchUrls[log.UrlReferrer] = searchUrls[log.UrlReferrer] + 1; } } } if (siteConfig.AdjustDisplayTimeZone) { if (siteConfig.GetConfiguredTimeZone().ToLocalTime(log.RequestedUtc).Date != localTime.Date) { exclude = true; } } if (!exclude) { if (!referrerUrls.ContainsKey(log.UrlReferrer)) { referrerUrls[log.UrlReferrer] = 0; } referrerUrls[log.UrlReferrer] = referrerUrls[log.UrlReferrer] + 1; log.UserAgent = Server.HtmlEncode(log.UserAgent); if (!userAgents.ContainsKey(log.UserAgent)) { userAgents[log.UserAgent] = 0; } userAgents[log.UserAgent] = userAgents[log.UserAgent] + 1; if (!userDomains.ContainsKey(log.UserDomain)) { userDomains[log.UserDomain] = 0; } userDomains[log.UserDomain] = userDomains[log.UserDomain] + 1; } } Table rollupTable = new Table(); rollupTable.CssClass = "statsTableStyle"; TableRow row = new TableRow(); row.CssClass = "statsTableHeaderRowStyle"; row.Cells.Add(new TableCell()); row.Cells.Add(new TableCell()); row.Cells[0].CssClass = "statsTableHeaderColumnStyle"; row.Cells[1].CssClass = "statsTableHeaderNumColumnStyle"; row.Cells[0].Text = resmgr.GetString("text_activity_summary"); row.Cells[1].Text = resmgr.GetString("text_activity_hits"); rollupTable.Rows.Add(row); //SDH: I know this is gross, but I didn't want to totally rewrite this whole thing, I just wanted to get the rollup to work string total = String.Empty; Table internetSearchesTable = BuildStatisticsTable(GenerateSortedSearchStringItemList(searchUrls), resmgr.GetString("text_activity_internet_searches"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildSearchesRow), out total, null); BuildRow(total, rollupTable, resmgr.GetString("text_activity_internet_searches")); Table userDomainsTable = BuildStatisticsTable(GenerateSortedItemList(userDomains), resmgr.GetString("text_activity_user_domains"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildUserDomainRow), out total, null); Table userAgentsTable = BuildStatisticsTable(GenerateSortedItemList(userAgents), resmgr.GetString("text_activity_user_agent"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildAgentsRow), out total, null); Table referrerUrlsTable = BuildStatisticsTable(GenerateSortedItemList(referrerUrls), resmgr.GetString("text_activity_referrer_urls"), resmgr.GetString("text_activity_hits"), new StatisticsBuilderCallback(this.BuildReferrerRow), out total, null); BuildRow(total, rollupTable, resmgr.GetString("text_activity_referrer_urls")); root.Controls.Add(rollupTable); root.Controls.Add(internetSearchesTable); root.Controls.Add(referrerUrlsTable); root.Controls.Add(userDomainsTable); root.Controls.Add(userAgentsTable); //root.Controls.Add(BuildStatisticsTable(GenerateSortedItemList(userAgents), CONSTUSERAGENTSLIST, CONSTHITS, new StatisticsBuilderCallback(this.BuildAgentsRow), out total, null)); DataBind(); }
/// <summary> /// Gets the entries for this month that we will be rendering /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void calendarMonth_PreRender(object sender, EventArgs e) { Control root = contentPlaceHolder; SiteConfig siteConfig = SiteConfig.GetSiteConfig(); string languageFilter = Request.Headers["Accept-Language"]; MonthViewCalendar eventSource = sender as MonthViewCalendar; requestPage = Page as SharedBasePage; // if we adjust for time zones (we don't show everything in UTC), we get the entries // using the configured time zone. eventSource.EntriesThisMonth = new EntryCollection(); if (siteConfig.AdjustDisplayTimeZone) { //Store away these Entries for the DayRender step... eventSource.EntriesThisMonth = requestPage.DataService.GetEntriesForMonth(eventSource.VisibleDate, siteConfig.GetConfiguredTimeZone(), languageFilter); } else { //Store away these Entries for the DayRender step... eventSource.EntriesThisMonth = requestPage.DataService.GetEntriesForMonth(eventSource.VisibleDate, new Util.UTCTimeZone(), languageFilter); } }