%@ WebHandler Language="C#" Class="BannerRedirect" %>
using System;
using System.Web;
using CMS.GlobalHelper;
using CMS.WebAnalytics;
using CMS.CMSHelper;
using CMS.SiteProvider;
using CMS.PortalEngine;
public class BannerRedirect : IHttpHandler
{
#region "Public methods"
///
/// Redirects user to the address specified in query parameter "redirectURL" and logs
/// banner click for banner with ID specified in query parameter "bannerID".
///
///
public void ProcessRequest(HttpContext context)
{
var banner = BannerInfoProvider.GetBannerInfo(QueryHelper.GetInteger("bannerID", 0));
if ((banner == null) || (!banner.IsGlobal && (banner.BannerSiteID != CMSContext.CurrentSiteID)))
{
context.Response.ContentType = "text/plain";
context.Response.Write("Unknown banner or wrong site");
return;
}
// Count click only on live site
if (PortalContext.ViewMode == ViewModeEnum.LiveSite)
{
string currentSiteName = CMSContext.CurrentSiteName;
if (AnalyticsHelper.AnalyticsEnabled(currentSiteName))
{
HitLogProvider.LogHit("bannerclick", currentSiteName, null, null, banner.BannerID);
}
BannerInfoProvider.DecrementClicksLeft(banner.BannerID);
}
string bannerRedirectURL = URLHelper.ResolveUrl(banner.BannerURL);
context.Response.Redirect(bannerRedirectURL, true);
}
#endregion
#region "Properties"
///
/// This handler can be reused.
///
public bool IsReusable
{
get { return true; }
}
#endregion
}