From dacb967f326974e052c8b9765d5c064d29cc4105 Mon Sep 17 00:00:00 2001 From: coderkun Date: Tue, 24 Jun 2014 21:29:59 +0200 Subject: [PATCH] add username filter for user listing (issue #316) --- controllers/UsersController.inc | 4 ++- locale/de_DE/LC_MESSAGES/The Legend of Z.mo | Bin 19313 -> 19314 bytes locale/de_DE/LC_MESSAGES/The Legend of Z.po | 37 ++++++++++---------- models/UsersModel.inc | 25 +++++++------ views/html/users/index.tpl | 4 +++ 5 files changed, 38 insertions(+), 32 deletions(-) diff --git a/controllers/UsersController.inc b/controllers/UsersController.inc index dad84df3..8bc0f09f 100644 --- a/controllers/UsersController.inc +++ b/controllers/UsersController.inc @@ -54,11 +54,13 @@ { // Set filters $sortorder = 'username'; + $username = null; $page = 1; if($this->request->getRequestMethod() == 'GET') { $sortorder = $this->request->getGetParam('sortorder'); $sortorder = !empty($sortorder) ? $sortorder : 'username'; + $username = (!is_null($this->request->getGetParam('username'))) ? $this->request->getGetParam('username') : $username; $page = $this->request->getGetParam('page'); $page = !empty($page) ? intval($page) : 1; } @@ -67,7 +69,7 @@ $limit = ($all != 'all') ? \nre\configs\AppConfig::$misc['lists_limit'] : null; $offset = ($all != 'all') ? max((intval($page) - 1), 0) * $limit : 0; $usersCount = $this->Users->getUsersCount(); - $users = $this->Users->getUsers($sortorder, $limit, $offset); + $users = $this->Users->getUsers($sortorder, $username, $limit, $offset); foreach($users as &$user) { $user['roles'] = array_map(function($r) { return $r['name']; }, $this->Userroles->getUserrolesForUserById($user['id'])); } diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.mo b/locale/de_DE/LC_MESSAGES/The Legend of Z.mo index e9eb3dcdeeb56352bb928df892c9bfd1c5ef8698..4ef7e39b2e691bacfcc8a4afed6c5cbc0e3a3dd6 100644 GIT binary patch delta 3949 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 Mi&8hgwCEH90N%`{1poj5 diff --git a/locale/de_DE/LC_MESSAGES/The Legend of Z.po b/locale/de_DE/LC_MESSAGES/The Legend of Z.po index 9a4df4af..b4f63436 100644 --- a/locale/de_DE/LC_MESSAGES/The Legend of Z.po +++ b/locale/de_DE/LC_MESSAGES/The Legend of Z.po @@ -1,8 +1,8 @@ msgid "" msgstr "" "Project-Id-Version: The Legend of Z\n" -"POT-Creation-Date: 2014-06-24 20:53+0100\n" -"PO-Revision-Date: 2014-06-24 20:53+0100\n" +"POT-Creation-Date: 2014-06-24 21:29+0100\n" +"PO-Revision-Date: 2014-06-24 21:29+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: de_DE\n" @@ -18,31 +18,31 @@ msgstr "" "X-Poedit-SearchPath-2: controllers\n" #: controllers/CharactersController.inc:382 -#: controllers/UsersController.inc:312 views/ajax/characters/index.tpl:10 +#: controllers/UsersController.inc:314 views/ajax/characters/index.tpl:10 #: views/ajax/users/index.tpl:10 views/html/characters/index.tpl:39 #: views/html/characters/manage.tpl:35 views/html/characters/manage.tpl:50 #: views/html/characters/manage.tpl:58 views/html/userroles/user.tpl:5 -#: views/html/users/index.tpl:26 views/html/users/manage.tpl:28 +#: views/html/users/index.tpl:30 views/html/users/manage.tpl:28 #: views/html/users/manage.tpl:41 views/html/users/manage.tpl:49 msgid "Admin" msgstr "Administrator" #: controllers/CharactersController.inc:388 -#: controllers/UsersController.inc:318 views/ajax/characters/index.tpl:12 +#: controllers/UsersController.inc:320 views/ajax/characters/index.tpl:12 #: views/ajax/users/index.tpl:12 views/html/characters/index.tpl:40 #: views/html/characters/manage.tpl:36 views/html/characters/manage.tpl:51 #: views/html/characters/manage.tpl:59 views/html/userroles/user.tpl:7 -#: views/html/users/index.tpl:27 views/html/users/manage.tpl:29 +#: views/html/users/index.tpl:31 views/html/users/manage.tpl:29 #: views/html/users/manage.tpl:42 views/html/users/manage.tpl:50 msgid "Moderator" msgstr "Moderator" #: controllers/CharactersController.inc:394 -#: controllers/UsersController.inc:324 views/ajax/characters/index.tpl:14 +#: controllers/UsersController.inc:326 views/ajax/characters/index.tpl:14 #: views/ajax/users/index.tpl:14 views/html/characters/index.tpl:41 #: views/html/characters/manage.tpl:37 views/html/characters/manage.tpl:53 #: views/html/characters/manage.tpl:61 views/html/userroles/user.tpl:9 -#: views/html/users/index.tpl:28 views/html/users/manage.tpl:30 +#: views/html/users/index.tpl:32 views/html/users/manage.tpl:30 #: views/html/users/manage.tpl:44 views/html/users/manage.tpl:52 msgid "User" msgstr "Benutzer" @@ -249,7 +249,7 @@ msgstr "Texteingabe" msgid "%d XPs" msgstr "%d XP" -#: views/ajax/users/index.tpl:20 views/html/users/index.tpl:25 +#: views/ajax/users/index.tpl:20 views/html/users/index.tpl:29 #: views/html/users/manage.tpl:31 views/html/users/user.tpl:22 #, php-format msgid "registered on %s" @@ -889,27 +889,27 @@ msgid "Manage" msgstr "Verwalten" #: views/html/characters/index.tpl:23 views/html/characters/manage.tpl:18 -#: views/html/users/index.tpl:15 views/html/users/manage.tpl:15 +#: views/html/users/index.tpl:16 views/html/users/manage.tpl:15 msgid "Role" msgstr "Rolle" #: views/html/characters/index.tpl:24 views/html/characters/manage.tpl:19 -#: views/html/users/index.tpl:16 views/html/users/manage.tpl:16 +#: views/html/users/index.tpl:17 views/html/users/manage.tpl:16 msgid "Date of registration" msgstr "Registrierungsdatum" #: views/html/characters/index.tpl:29 views/html/characters/manage.tpl:24 -#: views/html/users/index.tpl:18 views/html/users/manage.tpl:18 +#: views/html/users/index.tpl:19 views/html/users/manage.tpl:18 msgid "Sort list" msgstr "Liste sortieren" #: views/html/characters/index.tpl:52 views/html/quests/index.tpl:82 -#: views/html/users/index.tpl:36 +#: views/html/users/index.tpl:40 msgid "Show more" msgstr "Weitere anzeigen" #: views/html/characters/index.tpl:53 views/html/quests/index.tpl:83 -#: views/html/users/index.tpl:37 +#: views/html/users/index.tpl:41 msgid "Show all" msgstr "Alle anzeigen" @@ -956,7 +956,8 @@ msgstr "Login" #: views/html/introduction/index.tpl:7 views/html/users/create.tpl:84 #: views/html/users/create.tpl:85 views/html/users/edit.tpl:87 #: views/html/users/edit.tpl:89 views/html/users/edit.tpl:91 -#: views/html/users/index.tpl:14 views/html/users/login.tpl:12 +#: views/html/users/index.tpl:15 views/html/users/index.tpl:20 +#: views/html/users/index.tpl:21 views/html/users/login.tpl:12 #: views/html/users/login.tpl:13 views/html/users/manage.tpl:14 #: views/html/users/register.tpl:83 views/html/users/register.tpl:84 msgid "Username" @@ -1251,8 +1252,8 @@ msgstr "Text für falsche Antwort" msgid "Task" msgstr "Aufgabe" -#: views/html/quests/index.tpl:13 -msgid "Filter" +#: views/html/quests/index.tpl:13 views/html/users/index.tpl:12 +msgid "Filters" msgstr "Filter" #: views/html/quests/index.tpl:16 views/html/quests/index.tpl:23 @@ -1263,7 +1264,7 @@ msgstr "alle" msgid "Questtype" msgstr "Questtyp" -#: views/html/quests/index.tpl:50 +#: views/html/quests/index.tpl:50 views/html/users/index.tpl:23 msgid "Apply filters" msgstr "Filter anwenden" diff --git a/models/UsersModel.inc b/models/UsersModel.inc index 36135b93..b6158911 100644 --- a/models/UsersModel.inc +++ b/models/UsersModel.inc @@ -58,12 +58,13 @@ * Get registered users. * * @throws ParamsNotValidException - * @param string $sort Field to sort by - * @param int $limit Limit amount of Characters (optional) - * @param int $offset Offset (optional) - * @return array Users + * @param string $sort Field to sort by + * @param string $username Only get users with the given username (optional) + * @param int $limit Limit amount of Characters (optional) + * @param int $offset Offset (optional) + * @return array Users */ - public function getUsers($sort, $limit=null, $offset=0) + public function getUsers($sort, $username=null, $limit=null, $offset=0) { switch($sort) { @@ -75,14 +76,11 @@ ); return $this->db->query( - sprintf( - 'SELECT id, created, username, url, surname, prename, email, mailing '. - 'FROM users '. - 'ORDER BY %s %s '. - (!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null), - $sort, - $orders[$sort] - ) + 'SELECT id, created, username, url, surname, prename, email, mailing '. + 'FROM users '. + (!is_null($username) ? sprintf('WHERE username LIKE \'%%%s%%\' ', $username) : null). + sprintf('ORDER BY %s %s ', $sort, $orders[$sort]). + (!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null) ); break; case 'role': @@ -91,6 +89,7 @@ 'FROM users '. 'LEFT JOIN users_userroles ON users_userroles.user_id = users.id '. 'LEFT JOIN userroles ON userroles.id = users_userroles.user_id '. + (!is_null($username) ? sprintf('WHERE username LIKE \'%%%s%%\' ', $username) : null). 'ORDER BY userroles.id IS NULL, userroles.id ASC '. (!empty($limit) ? sprintf('LIMIT %d, %d', $offset, $limit) : null) ); diff --git a/views/html/users/index.tpl b/views/html/users/index.tpl index 7b319d7c..d8d921d5 100644 --- a/views/html/users/index.tpl +++ b/views/html/users/index.tpl @@ -9,6 +9,7 @@
+

Sortierung:

+ : +
+