Compare commits

...

4 Commits

Author SHA1 Message Date
Robert 5af5671795 Merge pull request #3715 from umbraco/huntsman-case-7.12.4
Huntsman case - AuditLog was not returning NodeId from DB
2018-11-26 11:38:01 +01:00
Warren Buckley 5eab37573c Sets AuditItem to be the NodeId from the DTO/Database table as opposed to the DB incremental ID 2018-11-19 11:44:13 +00:00
Warren Buckley d5168afc00 Further updates needed from Roberts notes on this huntsman case 2018-11-19 11:29:36 +00:00
Warren Buckley 8c070bd14d Make the changes from Roberts notes on the huntsman case 2018-11-19 10:44:35 +00:00
2 changed files with 14 additions and 10 deletions
+3 -3
View File
@@ -808,10 +808,10 @@ namespace Umbraco.Core.Persistence
public Page<T> Page<T>(long page, long itemsPerPage, string sql, params object[] args)
{
string sqlCount, sqlPage;
BuildPageQueries<T>((page-1)*itemsPerPage, itemsPerPage, sql, ref args, out sqlCount, out sqlPage);
BuildPageQueries<T>(itemsPerPage.Equals(int.MaxValue) ? 0 : (page - 1) * itemsPerPage, itemsPerPage, sql, ref args, out sqlCount, out sqlPage);
// Save the one-time command time out and use it for both queries
int saveTimeout = OneTimeCommandTimeout;
// Save the one-time command time out and use it for both queries
int saveTimeout = OneTimeCommandTimeout;
// Setup the paged result
var result = new Page<T>();
@@ -47,6 +47,7 @@ namespace Umbraco.Core.Persistence.Repositories
var sql = GetBaseQuery(false);
if (query == null) query = new Query<IAuditItem>();
var queryHasWhereClause = query.GetWhereClauses().Any();
var translatorIds = new SqlTranslator<IAuditItem>(sql, query);
var translatedQuery = translatorIds.Translate();
@@ -65,8 +66,8 @@ namespace Umbraco.Core.Persistence.Repositories
filterSql.Append(string.Format("({0})", filterClaus.Item1), filterClaus.Item2);
first = false;
}
translatedQuery = GetFilteredSqlForPagedResults(translatedQuery, filterSql);
translatedQuery = GetFilteredSqlForPagedResults(translatedQuery, filterSql, queryHasWhereClause);
}
if (auditTypeFilter.Length > 0)
@@ -82,8 +83,8 @@ namespace Umbraco.Core.Persistence.Repositories
filterSql.Append("(logHeader = @logHeader)", new {logHeader = filterClaus.ToString() });
first = false;
}
translatedQuery = GetFilteredSqlForPagedResults(translatedQuery, filterSql);
translatedQuery = GetFilteredSqlForPagedResults(translatedQuery, filterSql, queryHasWhereClause || hasCustomFilter);
}
if (orderDirection == Direction.Descending)
@@ -96,7 +97,7 @@ namespace Umbraco.Core.Persistence.Repositories
totalRecords = pagedResult.TotalItems;
var pages = pagedResult.Items.Select(
dto => new AuditItem(dto.Id, dto.Comment, Enum<AuditType>.ParseOrNull(dto.Header) ?? AuditType.Custom, dto.UserId)).ToArray();
dto => new AuditItem(dto.NodeId, dto.Comment, Enum<AuditType>.ParseOrNull(dto.Header) ?? AuditType.Custom, dto.UserId)).ToArray();
//Mapping the DateStamp
for (int i = 0; i < pages.Length; i++)
@@ -169,14 +170,17 @@ namespace Umbraco.Core.Persistence.Repositories
}
#endregion
private Sql GetFilteredSqlForPagedResults(Sql sql, Sql filterSql)
private Sql GetFilteredSqlForPagedResults(Sql sql, Sql filterSql, bool hasWhereClause)
{
Sql filteredSql;
// Apply filter
if (filterSql != null)
{
var sqlFilter = " WHERE " + filterSql.SQL.TrimStart("AND ");
//ensure we don't append a WHERE if there is already one
var sqlFilter = hasWhereClause
? " AND " + filterSql.SQL.TrimStart(" AND ")
: " WHERE " + filterSql.SQL.TrimStart("AND ");
//NOTE: this is certainly strange - NPoco handles this much better but we need to re-create the sql
// instance a couple of times to get the parameter order correct, for some reason the first