Skip to content

Commit 580b90a

Browse files
Merge pull request #6018 from christianbeeznest/C1-22330
Session: Add dynamic sorting for users table by name and date - refs BT#22330
2 parents 135e61e + 8f51bd8 commit 580b90a

File tree

1 file changed

+22
-2
lines changed

1 file changed

+22
-2
lines changed

main/session/resume_session.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -353,12 +353,32 @@
353353
$userList = SessionManager::get_users_by_session($sessionId);
354354

355355
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+
356376
$table = new HTML_Table(
357377
['class' => 'table table-hover table-striped data_table', 'id' => 'session-user-list']
358378
);
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>');
360380
$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>');
362382
$table->setHeaderContents(0, 3, get_lang('Actions'));
363383

364384
$row = 1;

0 commit comments

Comments
 (0)