Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.htaccess4
-rw-r--r--lib/private/User/Database.php13
-rw-r--r--tests/lib/User/DatabaseTest.php25
3 files changed, 38 insertions, 4 deletions
diff --git a/.htaccess b/.htaccess
index 7bf8759e383..277a9e38c63 100644
--- a/.htaccess
+++ b/.htaccess
@@ -23,7 +23,7 @@
<FilesMatch "\.(css|js|svg|gif)$">
Header set Cache-Control "max-age=15778463"
</FilesMatch>
-
+
# Let browsers cache WOFF files for a week
<FilesMatch "\.woff$">
Header set Cache-Control "max-age=604800"
@@ -77,4 +77,4 @@ AddDefaultCharset utf-8
Options -Indexes
<IfModule pagespeed_module>
ModPagespeed Off
-</IfModule>
+</IfModule> \ No newline at end of file
diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php
index 471ff1f45ae..2d96369de63 100644
--- a/lib/private/User/Database.php
+++ b/lib/private/User/Database.php
@@ -194,7 +194,10 @@ class Database extends Backend implements IUserBackend {
if ($search !== '') {
$parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
$parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
- $searchLike = ' WHERE LOWER(`displayname`) LIKE LOWER(?) OR '
+ $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
+ $searchLike .= ' LEFT JOIN `*PREFIX*preferences` ON `userid` = `uid` AND `appid` = \'settings\' AND `configkey` = \'email\'';
+ $searchLike .= ' WHERE LOWER(`configvalue`) LIKE LOWER(?)';
+ $searchLike .= ' OR LOWER(`displayname`) LIKE LOWER(?) OR '
. 'LOWER(`uid`) LIKE LOWER(?)';
}
@@ -288,8 +291,14 @@ class Database extends Backend implements IUserBackend {
$parameters = [];
$searchLike = '';
if ($search !== '') {
+ // Email
+ $parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
+ $searchLike .= ' LEFT JOIN `*PREFIX*preferences` ON `userid` = `uid` AND `appid` = \'settings\' AND `configkey` = \'email\'';
+ $searchLike .= ' WHERE LOWER(`configvalue`) LIKE LOWER(?)';
+ // UID
$parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
- $searchLike = ' WHERE LOWER(`uid`) LIKE LOWER(?)';
+ $searchLike .= ' OR LOWER(`uid`) LIKE LOWER(?)';
+ // Display name
$parameters[] = '%' . \OC::$server->getDatabaseConnection()->escapeLikeParameter($search) . '%';
$searchLike .= ' OR LOWER(`displayname`) LIKE LOWER(?)';
}
diff --git a/tests/lib/User/DatabaseTest.php b/tests/lib/User/DatabaseTest.php
index 0e6900651cd..a1e77dc128d 100644
--- a/tests/lib/User/DatabaseTest.php
+++ b/tests/lib/User/DatabaseTest.php
@@ -24,6 +24,7 @@ namespace Test\User;
use OC\HintException;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\EventDispatcher\GenericEvent;
+use OC\User\User;
/**
* Class DatabaseTest
@@ -113,4 +114,28 @@ class DatabaseTest extends Backend {
$this->backend->createUser($user1, 'pw2');
$this->assertTrue($this->backend->userExists($user1));
}
+
+ public function testSearch() {
+ parent::testSearch();
+
+ $user1 = $this->getUser();
+ $this->backend->createUser($user1, 'pass1');
+
+ $user2 = $this->getUser();
+ $this->backend->createUser($user2, 'pass1');
+
+ $user1Obj = new User($user1, $this->backend);
+ $user2Obj = new User($user2, $this->backend);
+ $emailAddr1 = "$user1@nextcloud.com";
+ $emailAddr2 = "$user2@nextcloud.com";
+
+ $user1Obj->setEMailAddress($emailAddr1);
+ $user2Obj->setEMailAddress($emailAddr2);
+
+ $result = $this->backend->getUsers('@nextcloud.com');
+ $this->assertSame(2, count($result));
+
+ $result = $this->backend->getDisplayNames('@nextcloud.com');
+ $this->assertSame(2, count($result));
+ }
}