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 * @return array|null
*/ */
protected function generate_search_subquery(?string $searchvalue): ?array { protected function generate_search_subquery(?string $searchvalue): ?array {
global $DB; global $CFG, $DB;
if (!$searchvalue) { if (!$searchvalue) {
return null; return null;
} }
@ -427,6 +427,19 @@ class event_vault implements event_vault_interface {
$whereconditions[] = $DB->sql_like('e.modulename', ':modulename', false); $whereconditions[] = $DB->sql_like('e.modulename', ':modulename', false);
$params['modulename'] = '%' . $DB->sql_like_escape($searchvalue) . '%'; $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) . ')'; $whereclause = '(' . implode(' OR ', $whereconditions) . ')';
return ['where' => $whereclause, 'params' => $params]; return ['where' => $whereclause, 'params' => $params];