protected virtual void FireAfterDownloadUpdate(FileDownloadUpdateEventArgs e) { if (AfterDownloadUpdate != null) { AfterDownloadUpdate(this, e); } }
public void UpdateDownloadCount(int fileId, bool ignoreCookies, bool isPackage) { var cookie = HttpContext.Current.Request.Cookies["ProjectFileDownload" + fileId]; if (cookie != null && ignoreCookies == false) { return; } var downloads = 0; var projectId = 0; var reader = Application.SqlHelper.ExecuteReader("Select downloads, nodeId from wikiFiles where id = @id;", Application.SqlHelper.CreateParameter("@id", fileId)); if (reader.Read()) { downloads = reader.GetInt("downloads"); projectId = reader.GetInt("nodeId"); } downloads = downloads + 1; Application.SqlHelper.ExecuteNonQuery( "update wikiFiles set downloads = @downloads where id = @id;", Application.SqlHelper.CreateParameter("@id", fileId), Application.SqlHelper.CreateParameter("@downloads", downloads)); var totalDownloads = Application.SqlHelper.ExecuteScalar <int>("Select SUM(downloads) from wikiFiles where nodeId = @projectId;", Application.SqlHelper.CreateParameter("@projectId", projectId)); if (isPackage) { var memberHelper = new Umbraco.Web.Security.MembershipHelper(Umbraco.Web.UmbracoContext.Current); var memberId = memberHelper.GetCurrentMemberId(); var currentMemberId = memberId == -1 ? 0 : memberId; //update download count update Application.SqlHelper.ExecuteNonQuery( @"insert into projectDownload(projectId,memberId,timestamp) values((select nodeId from wikiFiles where id = @id) ,@memberId, getdate())", Application.SqlHelper.CreateParameter("@id", fileId), Application.SqlHelper.CreateParameter("@memberId", currentMemberId)); } var e = new FileDownloadUpdateEventArgs { ProjectId = projectId, Downloads = totalDownloads }; FireAfterDownloadUpdate(e); cookie = new HttpCookie("ProjectFileDownload" + fileId) { Expires = DateTime.Now.AddHours(1) }; HttpContext.Current.Response.Cookies.Add(cookie); }