mirror of
https://github.com/torrentpier/torrentpier
synced 2025-08-20 21:33:54 -07:00
Refactored memberlist.php 🎓 (#1181)
* Refactored memberlist.php 🎓
* Update memberlist.php
This commit is contained in:
parent
efd8a51628
commit
926f57c048
3 changed files with 17 additions and 102 deletions
|
@ -1309,10 +1309,6 @@ $lang['COOKIES_REQUIRED'] = 'Cookies must be enabled!';
|
||||||
$lang['SESSION_EXPIRED'] = 'Session expired';
|
$lang['SESSION_EXPIRED'] = 'Session expired';
|
||||||
|
|
||||||
// Sort memberlist per letter
|
// Sort memberlist per letter
|
||||||
$lang['SORT_PER_LETTER'] = 'Show only usernames starting with';
|
|
||||||
$lang['OTHERS'] = 'others';
|
|
||||||
$lang['ALL'] = 'all';
|
|
||||||
|
|
||||||
$lang['POST_LINK'] = 'Post link';
|
$lang['POST_LINK'] = 'Post link';
|
||||||
$lang['GOTO_QUOTED_POST'] = 'Go to the quoted post';
|
$lang['GOTO_QUOTED_POST'] = 'Go to the quoted post';
|
||||||
$lang['LAST_VISITED'] = 'Last Visited';
|
$lang['LAST_VISITED'] = 'Last Visited';
|
||||||
|
@ -2599,6 +2595,8 @@ $lang['RELEASE_WELCOME'] = 'Please fill in the release form';
|
||||||
$lang['NEW_RELEASE'] = 'New release';
|
$lang['NEW_RELEASE'] = 'New release';
|
||||||
$lang['NEXT'] = 'Continue';
|
$lang['NEXT'] = 'Continue';
|
||||||
$lang['OTHER'] = 'Other';
|
$lang['OTHER'] = 'Other';
|
||||||
|
$lang['OTHERS'] = 'Others';
|
||||||
|
$lang['ALL'] = 'All';
|
||||||
|
|
||||||
$lang['TPL_EMPTY_FIELD'] = 'You must fill the field <b>%s</b>';
|
$lang['TPL_EMPTY_FIELD'] = 'You must fill the field <b>%s</b>';
|
||||||
$lang['TPL_EMPTY_SEL'] = 'You must select <b>%s</b>';
|
$lang['TPL_EMPTY_SEL'] = 'You must select <b>%s</b>';
|
||||||
|
|
110
memberlist.php
110
memberlist.php
|
@ -19,43 +19,19 @@ $start = abs((int)request_var('start', 0));
|
||||||
$mode = (string)request_var('mode', 'joined');
|
$mode = (string)request_var('mode', 'joined');
|
||||||
$sort_order = (request_var('order', 'ASC') == 'ASC') ? 'ASC' : 'DESC';
|
$sort_order = (request_var('order', 'ASC') == 'ASC') ? 'ASC' : 'DESC';
|
||||||
$username = request_var('username', '');
|
$username = request_var('username', '');
|
||||||
$paginationusername = $username;
|
|
||||||
|
|
||||||
//
|
|
||||||
// Memberlist sorting
|
// Memberlist sorting
|
||||||
//
|
$mode_types_text = [$lang['SORT_JOINED'], $lang['SORT_USERNAME'], $lang['SORT_LOCATION'], $lang['SORT_POSTS'], $lang['SORT_EMAIL'], $lang['SORT_WEBSITE'], $lang['SORT_TOP_TEN']];
|
||||||
$mode_types_text = [
|
$mode_types = ['joined', 'username', 'location', 'posts', 'email', 'website', 'topten'];
|
||||||
$lang['SORT_JOINED'],
|
|
||||||
$lang['SORT_USERNAME'],
|
|
||||||
$lang['SORT_LOCATION'],
|
|
||||||
$lang['SORT_POSTS'],
|
|
||||||
$lang['SORT_EMAIL'],
|
|
||||||
$lang['SORT_WEBSITE'],
|
|
||||||
$lang['SORT_TOP_TEN']
|
|
||||||
];
|
|
||||||
|
|
||||||
$mode_types = [
|
|
||||||
'joined',
|
|
||||||
'username',
|
|
||||||
'location',
|
|
||||||
'posts',
|
|
||||||
'email',
|
|
||||||
'website',
|
|
||||||
'topten'
|
|
||||||
];
|
|
||||||
|
|
||||||
// <select> mode
|
|
||||||
$select_sort_mode = '<select name="mode">';
|
$select_sort_mode = '<select name="mode">';
|
||||||
|
|
||||||
for ($i = 0, $iMax = count($mode_types_text); $i < $iMax; $i++) {
|
for ($i = 0, $iMax = count($mode_types_text); $i < $iMax; $i++) {
|
||||||
$selected = ($mode == $mode_types[$i]) ? ' selected' : '';
|
$selected = ($mode == $mode_types[$i]) ? ' selected' : '';
|
||||||
$select_sort_mode .= '<option value="' . $mode_types[$i] . '"' . $selected . '>' . $mode_types_text[$i] . '</option>';
|
$select_sort_mode .= '<option value="' . $mode_types[$i] . '"' . $selected . '>' . $mode_types_text[$i] . '</option>';
|
||||||
}
|
}
|
||||||
$select_sort_mode .= '</select>';
|
$select_sort_mode .= '</select>';
|
||||||
|
|
||||||
// <select> order
|
|
||||||
$select_sort_order = '<select name="order">';
|
$select_sort_order = '<select name="order">';
|
||||||
|
|
||||||
if ($sort_order == 'ASC') {
|
if ($sort_order == 'ASC') {
|
||||||
$select_sort_order .= '<option value="ASC" selected>' . $lang['ASC'] . '</option><option value="DESC">' . $lang['DESC'] . '</option>';
|
$select_sort_order .= '<option value="ASC" selected>' . $lang['ASC'] . '</option><option value="DESC">' . $lang['DESC'] . '</option>';
|
||||||
} else {
|
} else {
|
||||||
|
@ -64,9 +40,6 @@ if ($sort_order == 'ASC') {
|
||||||
$select_sort_order .= '</select>';
|
$select_sort_order .= '</select>';
|
||||||
|
|
||||||
switch ($mode) {
|
switch ($mode) {
|
||||||
case 'joined':
|
|
||||||
$order_by = "user_id $sort_order LIMIT $start, " . $bb_cfg['topics_per_page'];
|
|
||||||
break;
|
|
||||||
case 'username':
|
case 'username':
|
||||||
$order_by = "username $sort_order LIMIT $start, " . $bb_cfg['topics_per_page'];
|
$order_by = "username $sort_order LIMIT $start, " . $bb_cfg['topics_per_page'];
|
||||||
break;
|
break;
|
||||||
|
@ -85,59 +58,14 @@ switch ($mode) {
|
||||||
case 'topten':
|
case 'topten':
|
||||||
$order_by = "user_posts $sort_order LIMIT 10";
|
$order_by = "user_posts $sort_order LIMIT 10";
|
||||||
break;
|
break;
|
||||||
|
case 'joined':
|
||||||
default:
|
default:
|
||||||
$order_by = "user_regdate $sort_order LIMIT $start, " . $bb_cfg['topics_per_page'];
|
$order_by = "user_regdate $sort_order LIMIT $start, " . $bb_cfg['topics_per_page'];
|
||||||
$mode = 'joined';
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// per-letter selection
|
// Generate user information
|
||||||
$by_letter = 'all';
|
$sql = "SELECT username, user_id, user_rank, user_opt, user_posts, user_regdate, user_from, user_website, user_email, avatar_ext_id FROM " . BB_USERS . " WHERE user_id NOT IN(" . EXCLUDED_USERS . ") ORDER BY $order_by";
|
||||||
$letters_range = 'a-z';
|
|
||||||
$letters_range .= iconv('windows-1251', 'UTF-8', chr(224));
|
|
||||||
$letters_range .= '-';
|
|
||||||
$letters_range .= iconv('windows-1251', 'UTF-8', chr(255));
|
|
||||||
$select_letter = $letter_sql = '';
|
|
||||||
|
|
||||||
$by_letter_req = isset($_REQUEST['letter']) ? strtolower(trim($_REQUEST['letter'])) : false;
|
|
||||||
|
|
||||||
if ($by_letter_req) {
|
|
||||||
if ($by_letter_req === 'all') {
|
|
||||||
$by_letter = 'all';
|
|
||||||
$letter_sql = '';
|
|
||||||
} elseif ($by_letter_req === 'others') {
|
|
||||||
$by_letter = 'others';
|
|
||||||
$letter_sql = "username REGEXP '^[!-@\\[-`].*$'";
|
|
||||||
} elseif ($letter_req = preg_replace("#[^$letters_range]#ui", '', iconv('windows-1251', 'UTF-8', $by_letter_req))) {
|
|
||||||
$by_letter = DB()->escape($letter_req);
|
|
||||||
$letter_sql = "LOWER(username) LIKE '$by_letter%'";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ENG
|
|
||||||
for ($i = ord('A'), $cnt = ord('Z'); $i <= $cnt; $i++) {
|
|
||||||
$select_letter .= (strtoupper($by_letter) == chr($i)) ? '<b>' . chr($i) . '</b> ' : '<a class="genmed" href="' . ("memberlist.php?letter=" . chr($i) . "&mode=$mode&order=$sort_order") . '">' . chr($i) . '</a> ';
|
|
||||||
}
|
|
||||||
// RUS
|
|
||||||
$select_letter .= ': ';
|
|
||||||
for ($i = 224, $cnt = 255; $i <= $cnt; $i++) {
|
|
||||||
$select_letter .= (strtoupper($by_letter) == iconv('windows-1251', 'UTF-8', chr($i))) ? '<b>' . iconv('windows-1251', 'UTF-8', chr($i - 32)) . '</b> ' : '<a class="genmed" href="' . ("memberlist.php?letter=%" . strtoupper(base_convert($i, 10, 16)) . "&mode=$mode&order=$sort_order") . '">' . iconv('windows-1251', 'UTF-8', chr($i - 32)) . '</a> ';
|
|
||||||
}
|
|
||||||
|
|
||||||
$select_letter .= ': ';
|
|
||||||
$select_letter .= ($by_letter == 'others') ? '<b>' . $lang['OTHERS'] . '</b> ' : '<a class="genmed" href="' . ("memberlist.php?letter=others&mode=$mode&order=$sort_order") . '">' . $lang['OTHERS'] . '</a> ';
|
|
||||||
$select_letter .= ': ';
|
|
||||||
$select_letter .= ($by_letter == 'all') ? '<b>' . $lang['ALL'] . '</b>' : '<a class="genmed" href="' . ("memberlist.php?letter=all&mode=$mode&order=$sort_order") . '">' . $lang['ALL'] . '</a>';
|
|
||||||
|
|
||||||
// per-letter selection end
|
|
||||||
$sql = "SELECT username, user_id, user_rank, user_opt, user_posts, user_regdate, user_from, user_website, user_email, avatar_ext_id FROM " . BB_USERS . " WHERE user_id NOT IN(" . EXCLUDED_USERS . ")";
|
|
||||||
if ($username) {
|
|
||||||
$username = str_replace("\*", '%', clean_username($username));
|
|
||||||
$letter_sql = "username LIKE '" . DB()->escape($username) . "'";
|
|
||||||
}
|
|
||||||
$sql .= ($letter_sql) ? " AND $letter_sql" : '';
|
|
||||||
$sql .= " ORDER BY $order_by";
|
|
||||||
|
|
||||||
if ($result = DB()->fetch_rowset($sql)) {
|
if ($result = DB()->fetch_rowset($sql)) {
|
||||||
foreach ($result as $i => $row) {
|
foreach ($result as $i => $row) {
|
||||||
$user_id = $row['user_id'];
|
$user_id = $row['user_id'];
|
||||||
|
@ -163,13 +91,12 @@ if ($result = DB()->fetch_rowset($sql)) {
|
||||||
$template->assign_block_vars('no_username', ['NO_USER_ID_SPECIFIED' => $lang['NO_USER_ID_SPECIFIED']]);
|
$template->assign_block_vars('no_username', ['NO_USER_ID_SPECIFIED' => $lang['NO_USER_ID_SPECIFIED']]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$paginationurl = "memberlist.php?letter=$by_letter&mode=$mode&order=$sort_order";
|
// Pagination
|
||||||
if ($paginationusername) {
|
$paginationurl = "memberlist.php?mode=$mode&order=$sort_order";
|
||||||
$paginationurl .= "&username=$paginationusername";
|
$paginationurl .= $username ? "&username=$username" : '';
|
||||||
}
|
|
||||||
if ($mode != 'topten' || $bb_cfg['topics_per_page'] < 10) {
|
if ($mode != 'topten' || $bb_cfg['topics_per_page'] < 10) {
|
||||||
$sql = "SELECT COUNT(*) AS total FROM " . BB_USERS;
|
$sql = "SELECT COUNT(*) AS total FROM " . BB_USERS . " WHERE user_id NOT IN(" . EXCLUDED_USERS . ")";
|
||||||
$sql .= ($letter_sql) ? " WHERE $letter_sql" : " WHERE user_id NOT IN(" . EXCLUDED_USERS . ")";
|
|
||||||
if (!$result = DB()->sql_query($sql)) {
|
if (!$result = DB()->sql_query($sql)) {
|
||||||
bb_die('Error getting total users');
|
bb_die('Error getting total users');
|
||||||
}
|
}
|
||||||
|
@ -180,20 +107,13 @@ if ($mode != 'topten' || $bb_cfg['topics_per_page'] < 10) {
|
||||||
DB()->sql_freeresult($result);
|
DB()->sql_freeresult($result);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
// Generate output
|
||||||
// Generate page
|
|
||||||
//
|
|
||||||
$template->assign_vars([
|
|
||||||
'S_MODE_SELECT' => $select_sort_mode,
|
|
||||||
'S_ORDER_SELECT' => $select_sort_order,
|
|
||||||
'S_MODE_ACTION' => "memberlist.php?letter=$by_letter&mode=$mode&order=$sort_order",
|
|
||||||
'S_USERNAME' => $paginationusername,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$template->assign_vars([
|
$template->assign_vars([
|
||||||
'PAGE_TITLE' => $lang['MEMBERLIST'],
|
'PAGE_TITLE' => $lang['MEMBERLIST'],
|
||||||
'S_LETTER_SELECT' => $select_letter,
|
'S_MODE_SELECT' => $select_sort_mode,
|
||||||
'S_LETTER_HIDDEN' => '<input type="hidden" name="letter" value="' . $by_letter . '">'
|
'S_ORDER_SELECT' => $select_sort_order,
|
||||||
|
'S_MODE_ACTION' => "memberlist.php?mode=$mode&order=$sort_order",
|
||||||
|
'S_USERNAME' => $username,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
print_page('memberlist.tpl');
|
print_page('memberlist.tpl');
|
||||||
|
|
|
@ -12,9 +12,6 @@
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<td align="right" class="med">{L_SORT_PER_LETTER}: {S_LETTER_SELECT}{S_LETTER_HIDDEN}</td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue