From 92eef72fc14457fcb1ffa74e6db1288414fd4b52 Mon Sep 17 00:00:00 2001 From: Ryan Cramer Date: Fri, 25 Aug 2023 08:37:50 -0400 Subject: [PATCH] Fix issue processwire/processwire-issues#1803 --- wire/core/Selectors.php | 4 ++-- .../Process/ProcessPageLister/ProcessPageLister.module | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/wire/core/Selectors.php b/wire/core/Selectors.php index 3e0c1cf8..602614df 100644 --- a/wire/core/Selectors.php +++ b/wire/core/Selectors.php @@ -1276,8 +1276,8 @@ class Selectors extends WireArray { * - `getIndexType` (string): Index type to use in returned array: 'operator', 'className', 'class', or 'none' (default='class') * - `getValueType` (string): Value type to use in returned array: 'operator', 'class', 'className', 'label', 'description', 'compareType', 'verbose' (default='operator'). * If 'verbose' option used then assoc array returned for each operator containing 'class', 'className', 'operator', 'compareType', 'label', 'description'. - * @return array|string|int Returned array where both keys and values are operators (or values are requested 'valueType' option) - * If 'operator' option specified, return value is string, int or array (requested 'valueType'), and there is no indexType. + * @return array|string|int Returned array where values are operators and keys are class names (or requested 'getIndexType or 'getValueType' options) + * If 'operator' option specified, return value is string, int or array (of requested 'getValueType'), and there is no index. * @since 3.0.154 * */ diff --git a/wire/modules/Process/ProcessPageLister/ProcessPageLister.module b/wire/modules/Process/ProcessPageLister/ProcessPageLister.module index 1c72f7a9..2e4526d0 100644 --- a/wire/modules/Process/ProcessPageLister/ProcessPageLister.module +++ b/wire/modules/Process/ProcessPageLister/ProcessPageLister.module @@ -1900,9 +1900,11 @@ class ProcessPageLister extends Process implements ConfigurableModule { * */ public function removeBlankSelectors($selector) { - $selector = preg_replace('/,\s*@?[_a-z0-9]+(=|!=|<=?|>=?|%=|\^=|\$=|\*=|~=)(?=,)/i', '', ",$selector"); - $selector = trim($selector, ','); - return $selector; + // $selector = preg_replace('/,\s*@?[_a-z0-9]+(=|!=|<=?|>=?|%=|\^=|\$=|\*=|~=)(?=,)/i', '', ",$selector"); + $opChars = str_replace('=', '', implode('', Selectors::getOperatorChars())); + $regex = '/,\s*@?[_.a-z0-9]+(=|<|>|[' . $opChars . ']+=)(?=,)/i'; + $selector = preg_replace($regex, '', ",$selector,"); + return trim($selector, ', '); }