From dbaebc53b0267f526dc0d59275292f8d129b27c4 Mon Sep 17 00:00:00 2001 From: Morris Jobke Date: Wed, 22 Mar 2017 17:11:09 -0600 Subject: [PATCH] fix sorting in the backend Signed-off-by: Morris Jobke --- core/js/sharedialogview.js | 3 - core/js/tests/specs/sharedialogviewSpec.js | 74 ---------------------- lib/private/User/Database.php | 4 +- lib/private/User/Manager.php | 2 +- 4 files changed, 3 insertions(+), 80 deletions(-) diff --git a/core/js/sharedialogview.js b/core/js/sharedialogview.js index 78168336bb..a63960da2b 100644 --- a/core/js/sharedialogview.js +++ b/core/js/sharedialogview.js @@ -260,9 +260,6 @@ var suggestions = users.concat(groups).concat(remotes).concat(emails).concat(lookup); if (suggestions.length > 0) { - suggestions.sort(function (a, b) { - return OC.Util.naturalSortCompare(a.label, b.label); - }); $shareWithField .autocomplete("option", "autoFocus", true); diff --git a/core/js/tests/specs/sharedialogviewSpec.js b/core/js/tests/specs/sharedialogviewSpec.js index 7e3232f86e..307adea85f 100644 --- a/core/js/tests/specs/sharedialogviewSpec.js +++ b/core/js/tests/specs/sharedialogviewSpec.js @@ -490,80 +490,6 @@ describe('OC.Share.ShareDialogView', function() { }); }); describe('autocompletion of users', function() { - it('is sorted naturally', function () { - dialog.render(); - var response = sinon.stub(); - dialog.autocompleteHandler({term: 'p'}, response); - var jsonData = JSON.stringify({ - 'ocs' : { - 'meta' : { - 'status' : 'success', - 'statuscode' : 100, - 'message' : null - }, - 'data' : { - 'exact' : { - 'users' : [], - 'groups' : [], - 'remotes': [] - }, - 'users' : [{ - "label": "Peter A.", - "value": { - "shareType": 0, - "shareWith": "Peter A." - } - }, - { - "label": "Petra", - "value": { - "shareType": 0, - "shareWith": "Petra" - } - }, - { - "label": "peter B.", - "value": { - "shareType": 0, - "shareWith": "peter B." - } - }], - 'groups' : [], - 'remotes': [] - } - } - }); - - fakeServer.requests[0].respond( - 200, - {'Content-Type': 'application/json'}, - jsonData - ); - - expect(response.calledWithExactly([ - { - "label": "Peter A.", - "value": { - "shareType": 0, - "shareWith": "Peter A." - } - }, - { - "label": "peter B.", - "value": { - "shareType": 0, - "shareWith": "peter B." - } - }, - { - "label": "Petra", - "value": { - "shareType": 0, - "shareWith": "Petra" - } - } - ])).toEqual(true); - }); it('triggers autocomplete display and focus with data when ajax search succeeds', function () { dialog.render(); var response = sinon.stub(); diff --git a/lib/private/User/Database.php b/lib/private/User/Database.php index a281572ad5..dfbd995fb2 100644 --- a/lib/private/User/Database.php +++ b/lib/private/User/Database.php @@ -193,7 +193,7 @@ class Database extends Backend implements IUserBackend { $displayNames = array(); $query = \OC_DB::prepare('SELECT `uid`, `displayname` FROM `*PREFIX*users`' - . $searchLike .' ORDER BY `uid` ASC', $limit, $offset); + . $searchLike .' ORDER BY LOWER(`displayname`), LOWER(`uid`) ASC', $limit, $offset); $result = $query->execute($parameters); while ($row = $result->fetchRow()) { $displayNames[$row['uid']] = $row['displayname']; @@ -279,7 +279,7 @@ class Database extends Backend implements IUserBackend { $searchLike = ' WHERE LOWER(`uid`) LIKE LOWER(?)'; } - $query = \OC_DB::prepare('SELECT `uid` FROM `*PREFIX*users`' . $searchLike . ' ORDER BY `uid` ASC', $limit, $offset); + $query = \OC_DB::prepare('SELECT `uid` FROM `*PREFIX*users`' . $searchLike . ' ORDER BY LOWER(`uid`) ASC', $limit, $offset); $result = $query->execute($parameters); $users = array(); while ($row = $result->fetchRow()) { diff --git a/lib/private/User/Manager.php b/lib/private/User/Manager.php index 3d016700ee..77741efcc7 100644 --- a/lib/private/User/Manager.php +++ b/lib/private/User/Manager.php @@ -254,7 +254,7 @@ class Manager extends PublicEmitter implements IUserManager { * @var \OC\User\User $a * @var \OC\User\User $b */ - return strcmp($a->getDisplayName(), $b->getDisplayName()); + return strcmp(strtolower($a->getDisplayName()), strtolower($b->getDisplayName())); }); return $users; }