MDL-73651 calendar: search in localised module type names as well

This commit is contained in:
Shamim Rezaie 2022-02-03 13:00:40 +11:00
parent c352b70022
commit a159527748

View File

@ -410,7 +410,7 @@ class event_vault implements event_vault_interface {
* @return array|null
*/
protected function generate_search_subquery(?string $searchvalue): ?array {
global $DB;
global $CFG, $DB;
if (!$searchvalue) {
return null;
}
@ -427,6 +427,19 @@ class event_vault implements event_vault_interface {
$whereconditions[] = $DB->sql_like('e.modulename', ':modulename', false);
$params['modulename'] = '%' . $DB->sql_like_escape($searchvalue) . '%';
// Activity type searching (localised type name).
require_once($CFG->dirroot . '/course/lib.php');
// Search in modules' singular and plural names.
$modules = array_keys(array_merge(
preg_grep('/' . $searchvalue . '/i', get_module_types_names()) ?: [],
preg_grep('/' . $searchvalue . '/i', get_module_types_names(true)) ?: [],
));
if ($modules) {
[$insql, $inparams] = $DB->get_in_or_equal($modules, SQL_PARAMS_NAMED, 'exactmodulename');
$whereconditions[] = 'e.modulename ' . $insql;
$params += $inparams;
}
$whereclause = '(' . implode(' OR ', $whereconditions) . ')';
return ['where' => $whereclause, 'params' => $params];