Missing conversion of localized search values
authorAlexander Ebert <ebert@woltlab.com>
Wed, 9 Mar 2022 18:06:45 +0000 (19:06 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Wed, 9 Mar 2022 18:06:45 +0000 (19:06 +0100)
Fixes https://www.woltlab.com/community/thread/294505-eingabefeld-profilfeld-dezimalzeichen-problem/

wcfsetup/install/files/lib/system/option/FloatOptionType.class.php

index 66925f17c9a39162209e7dcf06919574f0b92127..2a04b6013a92c15404755517b2890b7c2962639b 100644 (file)
@@ -3,7 +3,9 @@
 namespace wcf\system\option;
 
 use wcf\data\option\Option;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\WCF;
+use wcf\util\StringUtil;
 
 /**
  * Option type implementation for float values.
@@ -50,6 +52,22 @@ class FloatOptionType extends TextOptionType
         return ($value1 > $value2) ? 1 : -1;
     }
 
+    /**
+     * @inheritDoc
+     */
+    public function getCondition(PreparedStatementConditionBuilder &$conditions, Option $option, $value)
+    {
+        if (!isset($_POST['searchOptions'][$option->optionName])) {
+            return false;
+        }
+
+        $value = StringUtil::trim($value);
+        $value = $this->toFloat($value);
+
+        $conditions->add("option_value.userOption" . $option->optionID . " LIKE ?", [$value]);
+        return true;
+    }
+
     /**
      * Converts a localized string value into a float value.
      */