| @@ -87,9 +87,19 @@ | ||
| 87 | 87 | $validSortFields = ['last_activity', 'display_name', 'created_at']; |
| 88 | 88 | |
| 89 | 89 | $sortColumn = in_array($sortBy, $validSortFields, true) ? $sortBy : 'last_activity'; |
| 90 | 90 | |
| 91 | - $sortDirection = ($sortColumn === 'last_activity') ? 'DESC' : 'ASC'; | |
| 91 | + $defaultDirections = [ | |
| 92 | + 'last_activity' => 'DESC', | |
| 93 | + 'display_name' => 'ASC', | |
| 94 | + 'created_at' => 'DESC', | |
| 95 | + ]; | |
| 96 | + | |
| 97 | + $sortDir = strtoupper($request->getSafe('sort_dir', 'sanitize_text_field', '')); | |
| 98 | + | |
| 99 | + $sortDirection = in_array($sortDir, ['ASC', 'DESC'], true) | |
| 100 | + ? $sortDir | |
| 101 | + : $defaultDirections[$sortColumn]; | |
| 92 | 102 | |
| 93 | 103 | $members = $members->orderBy($sortColumn, $sortDirection); |
| 94 | 104 | |
| 95 | 105 | $members = $members |