diff --git a/enrol/locallib.php b/enrol/locallib.php index ec46efaf4e..78e3735857 100644 --- a/enrol/locallib.php +++ b/enrol/locallib.php @@ -382,7 +382,7 @@ class course_enrolment_manager { foreach (get_all_user_name_fields() as $field) { $conditions[] = 'u.'.$field; } - $conditions[] = $DB->sql_fullname('u.firstname', 'u.lastname'); + $conditions['fullname'] = $DB->sql_fullname('u.firstname', 'u.lastname'); if ($searchanywhere) { $searchparam = '%' . $search . '%'; } else { @@ -390,8 +390,25 @@ class course_enrolment_manager { } $i = 0; foreach ($conditions as $key => $condition) { - $conditions[$key] = $DB->sql_like($condition, ":con{$i}00", false); - $params["con{$i}00"] = $searchparam; + if ($key === 'fullname') { + $j = 0; + $searchsplit = preg_split('/\s+/', $search); + $conditionssplit = array(); + foreach ($searchsplit as $subsearch) { + if ($searchanywhere) { + $searchparam = '%' . $subsearch . '%'; + } else { + $searchparam = $subsearch . '%'; + } + $conditionssplit[] = $DB->sql_like($condition, ":con{$i}00{$j}", false); + $params["con{$i}00{$j}"] = $searchparam; + $j++; + } + $conditions[$key] = '(' . implode(' AND ', $conditionssplit) . ')'; + } else { + $conditions[$key] = $DB->sql_like($condition, ":con{$i}00", false); + $params["con{$i}00"] = $searchparam; + } $i++; } $tests[] = '(' . implode(' OR ', $conditions) . ')';