diff --git a/phpBB/language/en/lang_main.php b/phpBB/language/en/lang_main.php
index cf5d33890c..a31103904c 100644
--- a/phpBB/language/en/lang_main.php
+++ b/phpBB/language/en/lang_main.php
@@ -94,10 +94,11 @@ $lang = array_merge($lang, array(
'VIEW_LATEST_POST' => 'View latest post',
'VIEW_NEWEST_POST' => 'View newest post',
'PAGE_OF' => 'Page %1$d of %2$d',
- 'ICQ' => 'ICQ Number',
- 'AIM' => 'AIM Address',
- 'MSNM' => 'MSN Messenger',
- 'YIM' => 'Yahoo Messenger',
+ 'ICQ' => 'ICQ Number',
+ 'AIM' => 'AIM Address',
+ 'MSNM' => 'MSN Messenger',
+ 'YIM' => 'Yahoo Messenger',
+ 'RANK' => 'Rank',
'FORUM_INDEX' => 'Board Index',
@@ -493,11 +494,9 @@ $lang = array_merge($lang, array(
'CONTACT' => 'Contact',
'EMAIL_ADDRESS' => 'Email address',
'SEND_PRIVATE_MESSAGE' => 'Send private message',
- 'Hidden_email' => '[ Hidden ]',
'Search_user_posts' => 'Find all posts by %s',
'Interests' => 'Interests',
'Occupation' => 'Occupation',
- 'Poster_rank' => 'Poster rank',
'Total_posts' => 'Total posts',
'User_post_pct_stats' => '%.2f%% of total',
'User_post_day_stats' => '%.2f posts per day',
diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php
index e031431b78..aaf8883aa5 100644
--- a/phpBB/memberlist.php
+++ b/phpBB/memberlist.php
@@ -30,6 +30,14 @@ $user->setup();
$auth->acl($user->data);
// End session management
+
+// Can this user view profiles/memberslist?
+if (!$auth->acl_gets('u_viewprofile', 'a_'))
+{
+ trigger_error($user->lang['NO_VIEW']);
+}
+
+
// Grab data
$mode = (isset($_REQUEST['mode'])) ? $_REQUEST['mode'] : '';
@@ -37,8 +45,8 @@ $start = (isset($_GET['start'])) ? intval($_GET['start']) : 0;
$form = (!empty($_GET['form'])) ? $_GET['form'] : 0;
$field = (isset($_GET['field'])) ? $_GET['field'] : 'username';
-$sort_key = (!empty($_REQUEST['sort_key'])) ? intval($_REQUEST['sort_key']) : 0;
-$sort_dir = (!empty($_REQUEST['sort_dir'])) ? $_REQUEST['sort_dir'] : 'd';
+$sort_key = (!empty($_REQUEST['sk'])) ? htmlspecialchars($_REQUEST['sk']) : 'c';
+$sort_dir = (!empty($_REQUEST['sd'])) ? htmlspecialchars($_REQUEST['sd']) : 'a';
$username = (!empty($_REQUEST['username'])) ? trim($_REQUEST['username']) : '';
$email = (!empty($_REQUEST['email'])) ? trim($_REQUEST['email']) : '';
@@ -56,21 +64,35 @@ $count = (!empty($_REQUEST['count'])) ? intval($_REQUEST['count']) : '';
$ipdomain = (!empty($_REQUEST['ip'])) ? trim($_REQUEST['ip']) : '';
+// Grab rank information for later
+$sql = "SELECT *
+ FROM " . RANKS_TABLE . "
+ ORDER BY rank_special, rank_min DESC";
+$result = $db->sql_query($sql, 120);
+
+$ranksrow = array();
+while ($row = $db->sql_fetchrow($result))
+{
+ $ranksrow[] = $row;
+}
+$db->sql_freeresult($result);
// Memberlist sorting
-$sort_key_text = array($user->lang['SORT_JOINED'], $user->lang['SORT_USERNAME'], $user->lang['SORT_EMAIL'], $user->lang['SORT_LOCATION'], $user->lang['SORT_POST_COUNT'], $user->lang['SORT_LAST_ACTIVE']);
-$sort_key_fields = array('user_regdate', 'username', 'user_email', 'user_from', 'user_posts', 'user_lastvisit');
-$s_sort_key = '