From dbebd5b2426d09c79bc3b19fa596c2d73cdef902 Mon Sep 17 00:00:00 2001
From: srosse <stephane.rosse@frentix.com>
Date: Tue, 22 Oct 2019 17:22:45 +0200
Subject: [PATCH] OO-4314: search "authors" field with author search

---
 .../repository/manager/RepositoryEntryAuthorQueries.java  | 8 ++++++--
 .../manager/RepositoryEntryMyCourseQueries.java           | 6 ++++--
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
index ab366ec0436..01caba5fb16 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryAuthorQueries.java
@@ -226,7 +226,7 @@ public class RepositoryEntryAuthorQueries {
 		if (StringHelper.containsNonWhitespace(params.getAuthor())) { // fuzzy author search
 			author = PersistenceHelper.makeFuzzyQueryString(params.getAuthor());
 
-			sb.append(" and v.key in (select rel.entry.key from repoentrytogroup as rel, bgroupmember as membership, ")
+			sb.append(" and (v.key in (select rel.entry.key from repoentrytogroup as rel, bgroupmember as membership, ")
 			     .append(IdentityImpl.class.getName()).append(" as identity, ").append(UserImpl.class.getName()).append(" as user")
 		         .append("    where rel.group.key=membership.group.key and membership.identity.key=identity.key and user.identity.key=identity.key")
 		         .append("      and membership.role='").append(GroupRoles.owner.name()).append("'")
@@ -236,7 +236,11 @@ public class RepositoryEntryAuthorQueries {
 			PersistenceHelper.appendFuzzyLike(sb, "user.lastName", "author", dbInstance.getDbVendor());
 			sb.append(" or ");
 			PersistenceHelper.appendFuzzyLike(sb, "identity.name", "author", dbInstance.getDbVendor());
-			sb.append(" ))");
+			sb.append(" or ");
+			PersistenceHelper.appendFuzzyLike(sb, "identity.name", "author", dbInstance.getDbVendor());
+			sb.append(" )) or ");
+			PersistenceHelper.appendFuzzyLike(sb, "v.authors", "author", dbInstance.getDbVendor());
+			sb.append(" )");
 		}
 
 		String displayname = params.getDisplayname();
diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
index a24352b01fe..82fe4c23c4a 100644
--- a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
+++ b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java
@@ -251,7 +251,7 @@ public class RepositoryEntryMyCourseQueries {
 		if (StringHelper.containsNonWhitespace(author)) { // fuzzy author search
 			author = PersistenceHelper.makeFuzzyQueryString(author);
 
-			sb.append(" and v.key in (select rel.entry.key from repoentrytogroup as rel, bgroupmember as membership, ")
+			sb.append(" and (v.key in (select rel.entry.key from repoentrytogroup as rel, bgroupmember as membership, ")
 			     .append(IdentityImpl.class.getName()).append(" as identity, ").append(UserImpl.class.getName()).append(" as user")
 		         .append("    where rel.group.key=membership.group.key and membership.identity.key=identity.key and user.identity.key=identity.key")
 		         .append("      and membership.role='").append(GroupRoles.owner.name()).append("'")
@@ -261,7 +261,9 @@ public class RepositoryEntryMyCourseQueries {
 			PersistenceHelper.appendFuzzyLike(sb, "user.lastName", "author", dbInstance.getDbVendor());
 			sb.append(" or ");
 			PersistenceHelper.appendFuzzyLike(sb, "identity.name", "author", dbInstance.getDbVendor());
-			sb.append(" ))");
+			sb.append(" )) or");
+			PersistenceHelper.appendFuzzyLike(sb, "v.authors", "author", dbInstance.getDbVendor());
+			sb.append(" )");
 		}
 
 		String text = params.getText();
-- 
GitLab