diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
index 860dcd46f8..2a3dc1819b 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IContentRepository.cs
@@ -89,7 +89,7 @@ namespace Umbraco.Core.Persistence.Repositories
///
/// An Enumerable list of objects
IEnumerable GetPagedResultsByQuery(IQuery query, long pageIndex, int pageSize, out long totalRecords,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter, object[] filterArgs);
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter = null, object[] filterArgs = null);
///
/// Returns the persisted content's preview XML structure
diff --git a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs
index 816cb12f44..bf7ae1472d 100644
--- a/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/Interfaces/IMediaRepository.cs
@@ -35,9 +35,10 @@ namespace Umbraco.Core.Persistence.Repositories
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
IEnumerable GetPagedResultsByQuery(IQuery query, long pageIndex, int pageSize, out long totalRecords,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter = "");
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter = null, object[] filterArgs = null);
}
}
\ No newline at end of file
diff --git a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
index 62257f08e2..c10c11e992 100644
--- a/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
+++ b/src/Umbraco.Core/Persistence/Repositories/MediaRepository.cs
@@ -489,15 +489,18 @@ namespace Umbraco.Core.Persistence.Repositories
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
public IEnumerable GetPagedResultsByQuery(IQuery query, long pageIndex, int pageSize, out long totalRecords,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter = "")
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter = null, object[] filterArgs = null)
{
- var filterSql = filter.IsNullOrWhiteSpace()
- ? null
- : Sql().Append("AND (umbracoNode." + SqlSyntax.GetQuotedColumnName("text") + " LIKE @0)", "%" + filter + "%");
-
+ Sql filterSql = null;
+ if (filter.IsNullOrWhiteSpace() == false)
+ {
+ filterSql = Sql().Append($"AND ({filter})", filterArgs);
+ }
+
return GetPagedResultsByQuery(query, pageIndex, pageSize, out totalRecords,
MapQueryDtos, orderBy, orderDirection, orderBySystemField,
filterSql);
diff --git a/src/Umbraco.Core/Services/ContentService.cs b/src/Umbraco.Core/Services/ContentService.cs
index 8df66ddf87..e404a53616 100644
--- a/src/Umbraco.Core/Services/ContentService.cs
+++ b/src/Umbraco.Core/Services/ContentService.cs
@@ -506,7 +506,7 @@ namespace Umbraco.Core.Services
if (filter.IsNullOrWhiteSpace() == false)
{
//add the default text filter
- f = $"cmsDocument.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")}=@0";
+ f = $"cmsDocument.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")} LIKE @0";
fa = new object[] { $"%{filter}%" };
}
return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, f, fa);
@@ -564,7 +564,7 @@ namespace Umbraco.Core.Services
if (filter.IsNullOrWhiteSpace() == false)
{
//add the default text filter
- f = $"cmsDocument.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")}=@0";
+ f = $"cmsDocument.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")} LIKE @0";
fa = new object[] { $"%{filter}%" };
}
return GetPagedDescendants(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, f, fa);
diff --git a/src/Umbraco.Core/Services/IMediaService.cs b/src/Umbraco.Core/Services/IMediaService.cs
index 645bcfd1e0..18505a7bfa 100644
--- a/src/Umbraco.Core/Services/IMediaService.cs
+++ b/src/Umbraco.Core/Services/IMediaService.cs
@@ -142,10 +142,11 @@ namespace Umbraco.Core.Services
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
IEnumerable GetPagedChildren(int id, long pageIndex, int pageSize, out long totalRecords,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter);
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter, object[] filterArgs);
///
/// Gets a collection of objects by Parent Id
@@ -171,10 +172,11 @@ namespace Umbraco.Core.Services
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
IEnumerable GetPagedDescendants(int id, long pageIndex, int pageSize, out long totalRecords,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter);
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter, object[] filterArgs);
///
/// Gets descendants of a object by its Id
diff --git a/src/Umbraco.Core/Services/MediaService.cs b/src/Umbraco.Core/Services/MediaService.cs
index 2a459174c0..84e090aecf 100644
--- a/src/Umbraco.Core/Services/MediaService.cs
+++ b/src/Umbraco.Core/Services/MediaService.cs
@@ -409,7 +409,15 @@ namespace Umbraco.Core.Services
public IEnumerable GetPagedChildren(int id, long pageIndex, int pageSize, out long totalChildren,
string orderBy, Direction orderDirection, string filter = "")
{
- return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filter);
+ string f = filter;
+ object[] fa = null;
+ if (filter.IsNullOrWhiteSpace() == false)
+ {
+ //add the default text filter
+ f = $"umbracoNode.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")} LIKE @0";
+ fa = new object[] { $"%{filter}%" };
+ }
+ return GetPagedChildren(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, f, fa);
}
///
@@ -422,10 +430,11 @@ namespace Umbraco.Core.Services
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
public IEnumerable GetPagedChildren(int id, long pageIndex, int pageSize, out long totalChildren,
- string orderBy, Direction orderDirection, bool orderBySystemField, string filter)
+ string orderBy, Direction orderDirection, bool orderBySystemField, string filter, object[] filterArgs)
{
Mandate.ParameterCondition(pageIndex >= 0, "pageIndex");
Mandate.ParameterCondition(pageSize > 0, "pageSize");
@@ -453,7 +462,15 @@ namespace Umbraco.Core.Services
/// An Enumerable list of objects
public IEnumerable GetPagedDescendants(int id, long pageIndex, int pageSize, out long totalChildren, string orderBy = "Path", Direction orderDirection = Direction.Ascending, string filter = "")
{
- return GetPagedDescendants(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, filter);
+ string f = filter;
+ object[] fa = null;
+ if (filter.IsNullOrWhiteSpace() == false)
+ {
+ //add the default text filter
+ f = $"umbracoNode.{RepositoryFactory.SqlSyntax.GetQuotedColumnName("text")} LIKE @0";
+ fa = new object[] { $"%{filter}%" };
+ }
+ return GetPagedDescendants(id, pageIndex, pageSize, out totalChildren, orderBy, orderDirection, true, f, fa);
}
///
@@ -466,9 +483,10 @@ namespace Umbraco.Core.Services
/// Field to order by
/// Direction to order by
/// Flag to indicate when ordering by system field
- /// Search text filter
+ ///
+ ///
/// An Enumerable list of objects
- public IEnumerable GetPagedDescendants(int id, long pageIndex, int pageSize, out long totalChildren, string orderBy, Direction orderDirection, bool orderBySystemField, string filter)
+ public IEnumerable GetPagedDescendants(int id, long pageIndex, int pageSize, out long totalChildren, string orderBy, Direction orderDirection, bool orderBySystemField, string filter, object[] filterArgs)
{
Mandate.ParameterCondition(pageIndex >= 0, "pageIndex");
Mandate.ParameterCondition(pageSize > 0, "pageSize");
diff --git a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
index f9244c3987..a47e3ac7d6 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/ContentRepositoryTest.cs
@@ -699,7 +699,10 @@ namespace Umbraco.Tests.Persistence.Repositories
// Act
var query = repository.Query.Where(x => x.Level == 2);
long totalRecords;
- var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, true, "Page 2");
+
+ var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, true,
+ $"cmsDocument.{SqlSyntax.GetQuotedColumnName("text")} LIKE @0",
+ new object[] { "%Page 2%" });
// Assert
Assert.That(totalRecords, Is.EqualTo(1));
@@ -720,7 +723,9 @@ namespace Umbraco.Tests.Persistence.Repositories
// Act
var query = repository.Query.Where(x => x.Level == 2);
long totalRecords;
- var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, true, "Page");
+ var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "Name", Direction.Ascending, true,
+ $"cmsDocument.{SqlSyntax.GetQuotedColumnName("text")} LIKE @0",
+ new object[] { "%Page%" });
// Assert
Assert.That(totalRecords, Is.EqualTo(2));
diff --git a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
index 116dd2e582..5d31d3cabc 100644
--- a/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
+++ b/src/Umbraco.Tests/Persistence/Repositories/MediaRepositoryTest.cs
@@ -424,7 +424,9 @@ namespace Umbraco.Tests.Persistence.Repositories
// Act
var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2);
long totalRecords;
- var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, true, "File");
+ var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, true,
+ $"umbracoNode.{SqlSyntax.GetQuotedColumnName("text")} LIKE @0",
+ new object[] { "%File%" });
// Assert
Assert.That(totalRecords, Is.EqualTo(1));
@@ -445,7 +447,9 @@ namespace Umbraco.Tests.Persistence.Repositories
// Act
var query = new Query(SqlSyntax, MappingResolver).Where(x => x.Level == 2);
long totalRecords;
- var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, true, "Test");
+ var result = repository.GetPagedResultsByQuery(query, 0, 1, out totalRecords, "SortOrder", Direction.Ascending, true,
+ $"umbracoNode.{SqlSyntax.GetQuotedColumnName("text")} LIKE @0",
+ new object[] { "%Test%" });
// Assert
Assert.That(totalRecords, Is.EqualTo(2));
diff --git a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
index 4667b0f301..7d78e33e04 100644
--- a/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
+++ b/src/Umbraco.Tests/UmbracoExamine/IndexInitializer.cs
@@ -68,8 +68,15 @@ namespace Umbraco.Tests.UmbracoExamine
x => x.GetPagedDescendants(
It.IsAny(), It.IsAny(), It.IsAny(), out totalRecs, It.IsAny(), It.IsAny(), It.IsAny())
==
- allRecs);
- }
+ allRecs
+
+ &&
+
+ x.GetPagedDescendants(
+ It.IsAny(), It.IsAny(), It.IsAny(), out totalRecs, It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny(), It.IsAny