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 zcmXZee{5FO8Nl)L@}n(n`PEY2Vu8MvQf#R$lu;-Y?JS^f1OW{S%Qg_otSs5UG6r^g zH#aux)CqOy#332Mg$*atNQCLY@dr8-3F(AofhBV&V>0=nkZp0<_uG4trk``}J@=gF zJm9pbKn8ck~iE z@d50s9c-e10_(A`DukKXjB{`UPQo{E241nx`k{V&^1w2jNPiPL@gLB@PN0#WiTw}J zOkIh7hGro5#$9YGchSh;Z;_zFyU3j3Dh|Xk)k%?6 z;%NGl(IQ=dHF!Txz-}~ ztNUNk&(NYQWHke?#5q`vdH7BA{(5wWo6vyv#r_fGbizmI#)@jm{~#Krgy#emn2!^% zKQwsqT)~pF!WIm#`S$LpO3B-PnJ; z&iY~4lw?PhIE4O8w5aBy53E36yACwK%~*mj;s`v9X5V0-higA3y0&==-KT;AJ~VEKN|ag#S;3Tpn>I+hU;(~dc8UJ7veDb?dXO! zpz}OBmHfNlHZE9=yQ4kmnI6ClzK1n<4V|cBTJn9E99@JiydM2%TXyh4ez(#c9cC@;`herMwI&M3jYXVC>xHz(IeqN%S&cQ6H=paos9Hlh>!6n)@%bfFi~0QRGSA4JC; zL2KwFI{xoy?OaCZ&-r}vTnQRb8D?!%&~PW!=n>qEF0cgM$x<}(Rmd9{I&cc^j{U#k z7wKPrYf?Ka(Q!Ml0sn%0#lw(R{*qz~dIS%(l7AzAf(u5x4b8yr=^zV-T0Q2bYMKkz2^!cM`ai79|n7vHHD*qIXxcrXfY-S)ItuPM_ z=n?e6?dX{vz%Ss1czqfj7g~q|@ID-bUyH6rznBkU9&W;X-~VTmM%Wo|>_I2kkG|i( zkNrQR6P`hj;2io#>fiBt0Tq}-zXaXsD0HD}EWifrD{i!wmSCR$jJ5adAO4$EYH@d4 z@z_-8?ke7zy0>TCh}{0EuAZCHCv%5pTJK-BX4&$NwlxoiIqhHXDJp+>=zvMn8=AVG dsjKX3^c<=y$uDk82CiaYn**`u+_bKu{{yt=qjUfO delta 3948 zcmXZeeQa0N8Nl&V?0b2!w6s8hwwAKK&{8VprA0d_t8N5&S=eBiGQhgRmW=^pV7L4> z$EKaSflL$-i3AsxIuSdfoeq^hP#H)FO3eaG7E#7zA}C~A%-Hwady=M~^W1yxInQ~{ zxwpNtE$#BQwCCR$l*$Yt{BK+c`Iu1}!bmK}3~az`oQmn#ilcBgj={TeFm^>B#2bkp z!(9Ab^Z+{EE9iKKF$@1v8d9Nz#;Mrh5<1{jG_gTt$v`=nLtKc%aU6PoGMdnI9EJydNr(txDz47*EI1Sc$FZgB@6mU1$ZiB0pg#zby5uF+PDl z|0%j9BMGcTDS8$v(TYyRJiHAHaW1kYsj!@e53WN?-i1!^3$$d9p$Yvy#;-&&PB_H1QgAyhgM#v(QS-!F=Wqi)onID)hnin1NlYodD|IFM zIa-0ts-%B0W)W8)yAo>A@#e*NDN?lXb4L!ty6l{~Q{{q~`$Tn2R-d12!Qa z$1nr)aB=h=WKm%?I^hoVL-YbR;xSx+*U08I_a{T4K_*=VWfp%q$($MC1Hj5&AdeF7y+<5q*9ediwVwiw38F1$1Hm@jCN| zVNJ=3DsU+AO!QFAK_6IwzIJQT1h?P_d=?AwFj|p*bfQmiIHpfcN?nY`)#&}1=yUTi z<%JF!PP`E<-Gi8q+t9t+hdyu+?SC}Jf5Q>PpQ4H7P=+ELk6v$y@dCV&xD#E_Ms%F+ zY1H2dcX7ejp(pwRx~F|uhVNnxUPA{epPqal8l#KQi8r7huHRrWzKD){0yMx&XRVk0)819zgQJB4Qc5ZZ4yI`BdC?RXPi(A($)XE2+$=X|{X zNpn1eXktYv{t{S{v1qC5&{8&|hiwr$;Zk&>wdhv-5=Y@qG{J-DILFX_XV3{Qp$oi* zCUhO0CwFEteyW&;8JDA9x=F}SxRYPLE)QV|_Mj_#11;@wwA3GDw1B)6k0nunJ5M_7$pqA#N*{Q#}RMRY5!pb2JuF)3{U znrIoiuv+xF7BsP0XvODXZi>bd8m{Ob^mMO9_kI&Pz^~BkDi^&==d48CC?S235~{q|NqNrxRNS#3vNLtSc0x(DVq5zeh;nCcASJyV+EeXGQ2vQ`n%GiFC`OK`?#s#EG~*27xoAQU zpbzdw_p}ecf*0fUX#`HR0Ml_9=HR{2)#w-VKFr3=nCtt$J!yo!@y331fS1rc{d0`p zLkB#IZozrYpv$O=W{b#JRw=cgZEiG*AD5yy5 z-r8NTGi^z4WntD0X^VU7iu<#MhW3@;UDvUutgUm|nq@0`3rg=Fmfq0Zbo18j_2UN` Zy|34g$SsK7I+A|h;fapk3)8!Y{~zAWr3C;0 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:

+ : +
+