diff --git a/src/Glpi/CustomObject/AbstractDefinition.php b/src/Glpi/CustomObject/AbstractDefinition.php index 459aaa4a0f27..c3b96e2984d0 100644 --- a/src/Glpi/CustomObject/AbstractDefinition.php +++ b/src/Glpi/CustomObject/AbstractDefinition.php @@ -434,7 +434,11 @@ protected function prepareInput(array $input): array|bool $has_errors = false; if (array_key_exists('system_name', $input)) { - if (!is_string($input['system_name']) || preg_match('/^[a-z]+$/i', $input['system_name']) !== 1) { + // 1. Must start with a letter. + // 2. Must contain only letters or numbers. + $system_name_pattern = '/^[a-z][a-z0-9]*$/i'; + + if (!is_string($input['system_name']) || preg_match($system_name_pattern, $input['system_name']) !== 1) { Session::addMessageAfterRedirect( htmlescape(sprintf( __('The following field has an incorrect value: "%s".'), diff --git a/src/Glpi/Search/Provider/SQLProvider.php b/src/Glpi/Search/Provider/SQLProvider.php index 606c808190bb..8f9c97a9e9e8 100644 --- a/src/Glpi/Search/Provider/SQLProvider.php +++ b/src/Glpi/Search/Provider/SQLProvider.php @@ -4789,15 +4789,10 @@ public static function constructData(array &$data, $onlycount = false) // Parse data foreach ($newrow['raw'] as $key => $val) { - if (preg_match('/ITEM(_(\w[^\d]+))?_(\d+)(_(.+))?/', $key, $matches)) { - $j = $matches[3]; - if (isset($matches[2]) && !empty($matches[2])) { - $j = $matches[2] . '_' . $matches[3]; - } - $fieldname = 'name'; - if (isset($matches[5])) { - $fieldname = $matches[5]; - } + $matches = []; + if (preg_match('/^ITEM(_(?[a-z]\w*))?_(?\d+)(_(?.+))?$/i', $key, $matches)) { + $j = (isset($matches['itemtype']) ? $matches['itemtype'] . '_' : '') . $matches['num']; + $fieldname = $matches['fieldname'] ?? 'name'; // No Group_concat case if ($fieldname == 'content' || !is_string($val) || strpos($val, \Search::LONGSEP) === false) { diff --git a/templates/pages/admin/customobjects/main.html.twig b/templates/pages/admin/customobjects/main.html.twig index 459662ff7a25..0fd375b3a872 100644 --- a/templates/pages/admin/customobjects/main.html.twig +++ b/templates/pages/admin/customobjects/main.html.twig @@ -128,30 +128,38 @@ {% endif %}