From 011a441712f833a880f5b35f46d736cd5dcc1ce5 Mon Sep 17 00:00:00 2001 From: Susanne Moog <look@susi.dev> Date: Tue, 17 Mar 2020 09:09:52 +0100 Subject: [PATCH] [BUGFIX] Allow functions in foreign_table_where clause The parser for foreign_table_where consists of a basic regex that did not allow the use of field functions due to its character restrictions. The character match group has been adjusted to allow the following chars additionally: ")( Resolves: #82955 Resolves: #88166 Releases: master, 9.5 Change-Id: I0fa9283d920a0aaf2bacf9168d0e35f09c3d57af Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/63755 Tested-by: TYPO3com <noreply@typo3.com> Tested-by: Oliver Bartsch <bo@cedev.de> Tested-by: Benni Mack <benni@typo3.org> Reviewed-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Guido Schmechel <guido.schmechel@brandung.de> Reviewed-by: Georg Ringer <georg.ringer@gmail.com> Reviewed-by: Benni Mack <benni@typo3.org> --- .../Classes/Form/FormDataProvider/AbstractItemProvider.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php index 2a2fba654e36..05f2dc2d78f3 100644 --- a/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php +++ b/typo3/sysext/backend/Classes/Form/FormDataProvider/AbstractItemProvider.php @@ -1203,13 +1203,13 @@ abstract class AbstractItemProvider } // Find ORDER BY $reg = []; - if (preg_match('/^(.*)[[:space:]]+ORDER[[:space:]]+BY[[:space:]]+([[:alnum:][:space:],._]+)$/is', $foreignTableClause, $reg)) { + if (preg_match('/^(.*)[[:space:]]+ORDER[[:space:]]+BY[[:space:]]+([[:alnum:][:space:],._()"]+)$/is', $foreignTableClause, $reg)) { $foreignTableClauseArray['ORDERBY'] = QueryHelper::parseOrderBy(trim($reg[2])); $foreignTableClause = $reg[1]; } // Find GROUP BY $reg = []; - if (preg_match('/^(.*)[[:space:]]+GROUP[[:space:]]+BY[[:space:]]+([[:alnum:][:space:],._]+)$/is', $foreignTableClause, $reg)) { + if (preg_match('/^(.*)[[:space:]]+GROUP[[:space:]]+BY[[:space:]]+([[:alnum:][:space:],._()"]+)$/is', $foreignTableClause, $reg)) { $foreignTableClauseArray['GROUPBY'] = QueryHelper::parseGroupBy(trim($reg[2])); $foreignTableClause = $reg[1]; } -- GitLab