Corregido bug en la extensión SimpleDownloadCounter

by Ollydbg 31. January 2011 21:01

La extensión SimpleDownloadCounter (descarga: http://nyveldt.com/blog/post/Simple-BlogEngineNET-Download-Counter-Extension.aspx )

tiene un bug en la visualización. En contador se actualiza correctamente en el archivo App_Data\downloadcounts.xml pero no se visualiza correctamente el valor en la edición del post

Para solucionarlo hay que modificar la rutina UpdateDisplay que se encuentra en el archivo SimpleDownloadCounter.cs

La rutina original es esta:

 

private string UpdateDisplay(string body)
  {
      if (body.Contains("file.axd?file="))
      {
          int pos = body.IndexOf("file.axd?file=");
          while (pos > 0)
          {
              pos = pos + 14;
              string filename = body.Substring(pos, body.IndexOf("\"", pos) - pos);
              int count = GetFileCount(filename);
              int linkTextEnds = body.IndexOf("</a>", pos);
              body = body.Insert(linkTextEnds, " [Downloads: " + count.ToString() + "]");
              pos = body.IndexOf("file.axd?file=", pos);
          }
      }
      return body;
  }

 

y hay que substituirla por esta otra:

 

private string UpdateDisplay(string body)
  {
      if (body.Contains("file.axd?file="))
      {
          int pos = body.IndexOf("file.axd?file=");
          while (pos > 0)
          {
              pos = pos + 14;

              /* Bug fixes:
                 - http://www.amergerzic.com/post/Simple-Download-Counter-Al-Nyveldt.aspx */
              int quote_pos = body.IndexOf("\"", pos);
              if (quote_pos > -1)
              {
                  /* Get the file name */
                  string url_filename = body.Substring(pos, quote_pos - pos);

                  /* Get rid of special characters */
                  string filename = System.Web.HttpUtility.UrlDecode(url_filename);

                  /* Find where the download link ends */
                  int linkTextEnds = body.IndexOf("</a>", pos);

                  /* Serch for link begin */
                  int linkTextBegins = body.IndexOf("<a ", pos);

                  /* If we found a link begin before the link end, 
                     then our link end does not belong to the download */
                  if (linkTextBegins != -1)
                      if (linkTextBegins < linkTextEnds)
                          break;

                  /* Verify that we found link end in the first place */
                  if (linkTextEnds > -1)
                  {
                      /* Look up the count */
                      int count = GetFileCount(filename);

                      /* Insert the number */
                      body = body.Insert(linkTextEnds, " [Downloads: " + count.ToString() + "]");
                  }
              }
              pos = body.IndexOf("file.axd?file=", pos);
          }
      }
      return body;
  }

 

Con esta nueva rutina si que se visualizarán los contadores en la edición del post

Tags: ,

BlogEngine.NET

Comments are closed

TextBox

RecentPosts

Calendar

<<  June 2017  >>
MoTuWeThFrSaSu
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

View posts in large calendar

Month List