|
353 | 353 | $userList = SessionManager::get_users_by_session($sessionId);
|
354 | 354 |
|
355 | 355 | if (!empty($userList)) {
|
| 356 | + $sessionId = isset($_GET['id_session']) ? (int) $_GET['id_session'] : null; |
| 357 | + $sortColumn = isset($_GET['sort']) ? Security::remove_XSS($_GET['sort']) : 'registration_date'; |
| 358 | + $sortOrder = isset($_GET['order']) && Security::remove_XSS($_GET['order']) === 'ASC' ? SORT_ASC : SORT_DESC; |
| 359 | + |
| 360 | + $allowedColumns = ['user', 'registration_date']; |
| 361 | + if (!in_array($sortColumn, $allowedColumns, true)) { |
| 362 | + $sortColumn = 'registration_date'; |
| 363 | + } |
| 364 | + |
| 365 | + usort($userList, function ($a, $b) use ($sortColumn, $sortOrder) { |
| 366 | + if ($sortColumn === 'user') { |
| 367 | + $valueA = strtolower(api_get_user_info($a['user_id'])['complete_name_with_username']); |
| 368 | + $valueB = strtolower(api_get_user_info($b['user_id'])['complete_name_with_username']); |
| 369 | + } else { |
| 370 | + $valueA = strtotime($a['registered_at']); |
| 371 | + $valueB = strtotime($b['registered_at']); |
| 372 | + } |
| 373 | + return $sortOrder === SORT_ASC ? $valueA <=> $valueB : $valueB <=> $valueA; |
| 374 | + }); |
| 375 | + |
356 | 376 | $table = new HTML_Table(
|
357 | 377 | ['class' => 'table table-hover table-striped data_table', 'id' => 'session-user-list']
|
358 | 378 | );
|
359 |
| - $table->setHeaderContents(0, 0, get_lang('User')); |
| 379 | + $table->setHeaderContents(0, 0, '<a href="?id_session='.$sessionId.'&sort=user&order='.($sortColumn === 'user' && $sortOrder === SORT_ASC ? 'DESC' : 'ASC').'">'.get_lang('User').'</a>'); |
360 | 380 | $table->setHeaderContents(0, 1, get_lang('Status'));
|
361 |
| - $table->setHeaderContents(0, 2, get_lang('RegistrationDate')); |
| 381 | + $table->setHeaderContents(0, 2, '<a href="?id_session='.$sessionId.'&sort=registration_date&order='.($sortColumn === 'registration_date' && $sortOrder === SORT_ASC ? 'DESC' : 'ASC').'">'.get_lang('RegistrationDate').'</a>'); |
362 | 382 | $table->setHeaderContents(0, 3, get_lang('Actions'));
|
363 | 383 |
|
364 | 384 | $row = 1;
|
|
0 commit comments