コード例 #1
0
ファイル: WikiFile.cs プロジェクト: wanddy/OurUmbraco
 protected virtual void FireAfterDownloadUpdate(FileDownloadUpdateEventArgs e)
 {
     if (AfterDownloadUpdate != null)
     {
         AfterDownloadUpdate(this, e);
     }
 }
コード例 #2
0
ファイル: WikiFile.cs プロジェクト: openweb/OurUmbraco
        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);
        }