From 358b10a337ce6eb218930da141a4107f0bf48572 Mon Sep 17 00:00:00 2001 From: Igor Sazonov Date: Fri, 19 Jan 2018 15:13:17 +0300 Subject: [PATCH] MDL-58410 user: add support for alternative name search The solution about searching all external names fields (middlename etc) from course enrolment page (enrolled and enrolling pages) --- enrol/locallib.php | 5 +++-- user/lib.php | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/enrol/locallib.php b/enrol/locallib.php index 0447951ff4f..b31792f6261 100644 --- a/enrol/locallib.php +++ b/enrol/locallib.php @@ -380,8 +380,9 @@ class course_enrolment_manager { $params = array('guestid' => $CFG->siteguest); if (!empty($search)) { $conditions = get_extra_user_fields($this->get_context()); - $conditions[] = 'u.firstname'; - $conditions[] = 'u.lastname'; + foreach (get_all_user_name_fields() as $field) { + $conditions[] = 'u.'.$field; + } $conditions[] = $DB->sql_fullname('u.firstname', 'u.lastname'); if ($searchanywhere) { $searchparam = '%' . $search . '%'; diff --git a/user/lib.php b/user/lib.php index 6d1cf602214..a79f3699339 100644 --- a/user/lib.php +++ b/user/lib.php @@ -1323,6 +1323,10 @@ function user_get_participants_sql($courseid, $groupid = 0, $accesssince = 0, $r $searchkey1 = 'search' . $index . '1'; $searchkey2 = 'search' . $index . '2'; $searchkey3 = 'search' . $index . '3'; + $searchkey4 = 'search' . $index . '4'; + $searchkey5 = 'search' . $index . '5'; + $searchkey6 = 'search' . $index . '6'; + $searchkey7 = 'search' . $index . '7'; $conditions = array(); // Search by fullname. @@ -1356,10 +1360,30 @@ function user_get_participants_sql($courseid, $groupid = 0, $accesssince = 0, $r } $conditions[] = $idnumber; + // Search by middlename. + $middlename = $DB->sql_like('middlename', ':' . $searchkey4, false, false); + $conditions[] = $middlename; + + // Search by alternatename. + $alternatename = $DB->sql_like('alternatename', ':' . $searchkey5, false, false); + $conditions[] = $alternatename; + + // Search by firstnamephonetic. + $firstnamephonetic = $DB->sql_like('firstnamephonetic', ':' . $searchkey6, false, false); + $conditions[] = $firstnamephonetic; + + // Search by lastnamephonetic. + $lastnamephonetic = $DB->sql_like('lastnamephonetic', ':' . $searchkey7, false, false); + $conditions[] = $lastnamephonetic; + $wheres[] = "(". implode(" OR ", $conditions) .") "; $params[$searchkey1] = "%$keyword%"; $params[$searchkey2] = "%$keyword%"; $params[$searchkey3] = "%$keyword%"; + $params[$searchkey4] = "%$keyword%"; + $params[$searchkey5] = "%$keyword%"; + $params[$searchkey6] = "%$keyword%"; + $params[$searchkey7] = "%$keyword%"; } }