U4-1604 Fix latest edits dashboard control so that it doesn't make a zillion queries - Limit the latestedits query to specified amount of rows

This commit is contained in:
Sebastiaan Janssen
2013-04-19 06:10:58 -02:00
parent 6c9e82e735
commit 721f813d1e
2 changed files with 29 additions and 15 deletions

View File

@@ -1,16 +1,10 @@
using umbraco.BusinessLogic;
using System;
using umbraco.IO;
using umbraco.cms.businesslogic.web;
namespace dashboardUtilities
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using umbraco.IO;
using umbraco.cms.businesslogic.web;
/// <summary>
/// Summary description for LatestEdits.
/// </summary>
@@ -22,11 +16,12 @@ namespace dashboardUtilities
private int count = 0;
public int MaxRecords { get; set; }
protected void Page_Load(object sender, System.EventArgs e)
protected void Page_Load(object sender, EventArgs e)
{
if (MaxRecords == 0)
MaxRecords = 30;
// Put user code to initialize the page here
Repeater1.DataSource = umbraco.BusinessLogic.Log.GetLogReader(User.GetCurrent(), umbraco.BusinessLogic.LogTypes.Save, DateTime.Now.Subtract(new System.TimeSpan(7,0,0,0,0)));
Repeater1.DataSource = Log.GetLogReader(User.GetCurrent(), LogTypes.Save, DateTime.Now.Subtract(new TimeSpan(7,0,0,0,0)), MaxRecords);
Repeater1.DataBind();
}

View File

@@ -1,4 +1,5 @@
using System;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Threading;
@@ -320,16 +321,34 @@ namespace umbraco.BusinessLogic
/// </summary>
/// <param name="user">The user.</param>
/// <param name="Type">The type of log message.</param>
/// <param name="SinceDate">The since date.</param>
/// <param name="sinceDate">The since date.</param>
/// <returns>A reader for the log.</returns>
[Obsolete("Use the Instance.GetLogItems method which return a list of LogItems instead")]
public static IRecordsReader GetLogReader(User user, LogTypes Type, DateTime SinceDate)
public static IRecordsReader GetLogReader(User user, LogTypes Type, DateTime sinceDate)
{
return SqlHelper.ExecuteReader(
"select userId, NodeId, DateStamp, logHeader, logComment from umbracoLog where UserId = @user and logHeader = @logHeader and DateStamp >= @dateStamp order by dateStamp desc",
SqlHelper.CreateParameter("@logHeader", Type.ToString()),
SqlHelper.CreateParameter("@user", user.Id),
SqlHelper.CreateParameter("@dateStamp", SinceDate));
SqlHelper.CreateParameter("@dateStamp", sinceDate));
}
/// <summary>
/// Gets a reader of specific for the log for specific types and a specified user.
/// </summary>
/// <param name="user">The user.</param>
/// <param name="type">The type of log message.</param>
/// <param name="sinceDate">The since date.</param>
/// <param name="numberOfResults">Number of rows returned</param>
/// <returns>A reader for the log.</returns>
[Obsolete("Use the Instance.GetLogItems method which return a list of LogItems instead")]
internal static IRecordsReader GetLogReader(User user, LogTypes type, DateTime sinceDate, int numberOfResults)
{
return SqlHelper.ExecuteReader(
"select top " + numberOfResults + " userId, NodeId, DateStamp, logHeader, logComment from umbracoLog where UserId = @user and logHeader = @logHeader and DateStamp >= @dateStamp order by dateStamp desc",
SqlHelper.CreateParameter("@logHeader", type.ToString()),
SqlHelper.CreateParameter("@user", user.Id),
SqlHelper.CreateParameter("@dateStamp", sinceDate));
}
#endregion