Fix incorrect use of `mb_strpos` in MysqlSearchEngine
authorTim Düsterhus <duesterhus@woltlab.com>
Thu, 12 May 2022 12:48:06 +0000 (14:48 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Thu, 12 May 2022 12:48:06 +0000 (14:48 +0200)
The return value of `mb_strpos` needs to be checked type-safely, as both `0`
and `false` are falsy. In this case this likely was safe, as the inner join may
not appear at the start of the query, it was a questionable nonetheless.

Fix this by using `str_contains()` which makes the intent even clearer.

wcfsetup/install/files/lib/system/search/mysql/MysqlSearchEngine.class.php

index 91e3677540fd17dc90adc5545379d16aaff5fc2a..40a52080966e99eab6b2d35e9b9d4eff2dcadd86 100644 (file)
@@ -85,7 +85,7 @@ class MysqlSearchEngine extends AbstractSearchEngine
                     " . ($additionalConditions[$objectTypeName] ?? '');
             }
 
-            if (\mb_strpos($query, '{WCF_SEARCH_INNER_JOIN}')) {
+            if (\str_contains($query, '{WCF_SEARCH_INNER_JOIN}')) {
                 $innerJoin = $this->getInnerJoin(
                     $objectTypeName,
                     $q,