Add acp user email search
authorjoshuaruesweg <ruesweg@woltlab.com>
Sun, 4 Apr 2021 20:23:09 +0000 (22:23 +0200)
committerjoshuaruesweg <ruesweg@woltlab.com>
Sun, 4 Apr 2021 20:28:56 +0000 (22:28 +0200)
wcfsetup/install/files/lib/system/search/acp/UserACPSearchResultProvider.class.php

index e846b105d3a20b13b60c9236f2270305c19b8957..8b1ffd8964fcb385a70f3a210f1cbd03c9783e61 100644 (file)
@@ -4,14 +4,15 @@ namespace wcf\system\search\acp;
 
 use wcf\data\user\group\UserGroup;
 use wcf\data\user\User;
+use wcf\system\database\util\PreparedStatementConditionBuilder;
 use wcf\system\request\LinkHandler;
 use wcf\system\WCF;
 
 /**
  * ACP search result provider implementation for users.
  *
- * @author  Matthias Schmidt
- * @copyright   2001-2019 WoltLab GmbH
+ * @author  Joshua Ruesweg, Matthias Schmidt
+ * @copyright   2001-2021 WoltLab GmbH
  * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
  * @package WoltLabSuite\Core\System\Search\Acp
  */
@@ -26,13 +27,20 @@ class UserACPSearchResultProvider implements IACPSearchResultProvider
             return [];
         }
 
-        $results = [];
+        $conditionBuilder = new PreparedStatementConditionBuilder(true, 'OR');
+        $conditionBuilder->add("username LIKE ?", [[$query . '%']]);
+
+        if (WCF::getSession()->getPermission('admin.user.canEditMailAddress')) {
+            $conditionBuilder->add("email LIKE ?", [[$query . '%']]);
+        }
 
         $sql = "SELECT  *
                 FROM    wcf" . WCF_N . "_user
-                WHERE   username LIKE ?";
+                " . $conditionBuilder;
         $statement = WCF::getDB()->prepareStatement($sql);
-        $statement->execute([$query . '%']);
+        $statement->execute($conditionBuilder->getParameters());
+
+        $results = [];
 
         /** @var User $user */
         while ($user = $statement->fetchObject(User::class)) {