diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html
index 52d5fc6c3b..47788afd17 100644
--- a/phpBB/docs/CHANGELOG.html
+++ b/phpBB/docs/CHANGELOG.html
@@ -100,6 +100,7 @@
[Fix] Do not return BMP as valid image type for GD image manipulation (Bug #25925)
[Change] For determining the maximum number of private messages in one box, use the biggest value from all groups the user is a member of (Bug #24665)
[Fix] Correctly determine safe mode for temp file creation in functions_upload.php (Bug #23525)
+ [Fix] Correctly sort by rank in memberlist (Bug #24435)
1.ii. Changes since 3.0.0
diff --git a/phpBB/memberlist.php b/phpBB/memberlist.php
index a4c6b18f8f..7f7657a3a4 100644
--- a/phpBB/memberlist.php
+++ b/phpBB/memberlist.php
@@ -896,7 +896,7 @@ switch ($mode)
}
$sort_key_text['m'] = $user->lang['SORT_RANK'];
- $sort_key_sql['m'] = 'u.user_rank DESC, u.user_posts';
+ $sort_key_sql['m'] = 'u.user_rank';
$sort_dir_text = array('a' => $user->lang['ASCENDING'], 'd' => $user->lang['DESCENDING']);
@@ -1156,6 +1156,12 @@ switch ($mode)
$order_by .= $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC');
+ // Unfortunately we must do this here for sorting by rank, else the sort order is applied wrongly
+ if ($sort_key == 'm')
+ {
+ $order_by .= ', u.user_posts DESC';
+ }
+
// Count the users ...
if ($sql_where)
{