Die betreffende Übersichtsseite stellt alle Board-User gleichzeitig dar, was bei ab der gewissen Anzahl zu Abbrüchen per Timeout oder anderen Ursachen führt.
Was hier fehlt, ist eine Aufteilung dieser Übersicht in mehrere Seiten, wie man das in der Foren- oder Postansicht gewohnt ist.
Nachfolgend dazu die nötige Abhilfe:
Code: Alles auswählen
#
#-----[ OPEN ]-----
#
admin/admin_jr_admin.php
#
#-----[ FIND ]-----
#
function jr_admin_make_bookmark_heading($letters_list)
#
#-----[ REPLACE WITH ]-----
#
function jr_admin_make_bookmark_heading($letters_list, $start)
#
#-----[ FIND ]-----
#
$start = '[ ';
#
#-----[ REPLACE WITH ]-----
#
$startb = '[ <a href="'.append_sid("admin_jr_admin.php?sort_item=" . ( ( isset($HTTP_GET_VARS['sort_item']) || isset($HTTP_POST_VARS['sort_item']) ) ? $sort_item : 'username' ) . "&start=$start&alphanum=" . strtoupper(chr($first_link))).'" class="nav">All</a> | ';
#
#-----[ FIND ]-----
#
$list .= '<a href="#'.strtoupper(chr($first_link)).'" class="nav">'.strtoupper(chr($items[0])).' - '.strtoupper(chr($items[1])).'</a>';
#
#-----[ REPLACE WITH ]-----
#
$list .= '<a href="'.append_sid("admin_jr_admin.php?sort_item=" . ( ( isset($HTTP_GET_VARS['sort_item']) || isset($HTTP_POST_VARS['sort_item']) ) ? $sort_item : 'username' ) . "&start=$start&alphanum=0").'" class="nav">0 - 9</a>';
#
#-----[ FIND ]-----
#
$list .= '<a href="#'.strtoupper(chr($i)).'" class="nav">'.strtoupper(chr($i)).'</a>';
#
#-----[ REPLACE WITH ]-----
#
$list .= '<a href="'.append_sid("admin_jr_admin.php?sort_item=" . ( ( isset($HTTP_GET_VARS['sort_item']) || isset($HTTP_POST_VARS['sort_item']) ) ? $sort_item : 'username' ) . "&start=$start&alphanum=" . strtoupper(chr($i))).'" class="nav">'.strtoupper(chr($i)).'</a>';
#
#-----[ FIND ]-----
#
$list .= '<a href="#'.strtoupper(chr($ord_value)).'" class="nav">'.strtoupper(chr($ord_value)).'</a>';
#
#-----[ REPLACE WITH ]-----
#
$list .= '<a href="'.append_sid("admin_jr_admin.php?sort_item=" . ( ( isset($HTTP_GET_VARS['sort_item']) || isset($HTTP_POST_VARS['sort_item']) ) ? $sort_item : 'username' ) . "&start=$start&alphanum=" . strtoupper(chr($ord_value))).'" class="nav">'.strtoupper(chr($ord_value)).'</a>';
#
#-----[ FIND ]-----
#
return ($start . $list);
#
#-----[ REPLACE WITH ]-----
#
return ($startb . $list);
#
#-----[ FIND ]-----
#
$params = array('mode' => '', 'user_id' => '', 'color_group_id' => '', 'order' => 'ASC', 'sort_item' => 'username');
#
#-----[ REPLACE WITH ]-----
#
$params = array('mode' => '', 'user_id' => '', 'color_group_id' => '', 'order' => 'ASC', 'sort_item' => 'username', 'start' => '0', 'alphanum' => '');
#
#-----[ FIND ]-----
#
$current_letter = ''; //for alpha links
$assigned_current_letter_link = false; //for alpha links
$letter_list = array(); //hold letters
$sql = "SELECT $color_group username, user_id, user_rank, user_allow_pm, user_allowavatar, user_active
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
ORDER BY $sort_item $order";
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Error_User_Table'], '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$test_letter = strtoupper(substr($row['username'], 0, 1));
if ($test_letter != $current_letter)
{
//If we have a new letter, get it here.
$current_letter = $test_letter;
$assigned_current_letter_link = false;
$letter_list[ord($current_letter)] = true;
}
#
#-----[ REPLACE WITH ]-----
#
$proof = '';
for ($i = 97; $i <= 122; $i++)
{
$proof .= " AND username NOT LIKE '" . chr($i) . "%' ";
}
$alpha_where = ( $alphanum == '0' ) ? $proof : (($alphanum != '') ? "AND username LIKE '$alphanum%'" : '');
$per_page = $board_config['topics_per_page'];
$sql = "SELECT $color_group username, user_id, user_rank, user_allow_pm, user_allowavatar, user_active
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
$alpha_where
ORDER BY $sort_item $order
LIMIT $start, $per_page";
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Error_User_Table'], '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
#
#-----[ FIND ]-----
#
//Make sort image choice and sorting links
#
#-----[ BEFORE, ADD ]-----
#
$sql = "SELECT user_id FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
$alpha_where";
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Error_User_Table'], '', __LINE__, __FILE__, $sql);
}
$row = $db->sql_numrows($result);
$total_users_count = $row;
$template->assign_vars(array(
'PAGINATION' => generate_pagination("admin_jr_admin.$phpEx?sort_item=$sort_item", $total_users_count, $per_page, $start),
'PAGE_NUMBER' => sprintf($lang['Page_of'], ( floor( $start / $per_page ) + 1 ), ceil( $total_users_count / $per_page )))
);
#
#-----[ FIND ]-----
#
if ($sort_item == 'username')
{
$template->assign_var('LETTER_HEADING', jr_admin_make_bookmark_heading($letter_list));
}
#
#-----[ REPLACE WITH ]-----
#
$sql = "SELECT username FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, $lang['Error_User_Table'], '', __LINE__, __FILE__, $sql);
}
while ($row = $db->sql_fetchrow($result))
{
$test_letter = strtoupper(substr($row['username'], 0, 1));
if ($test_letter != $current_letter)
{
//If we have a new letter, get it here.
$current_letter = $test_letter;
$assigned_current_letter_link = false;
$letter_list[ord($current_letter)] = true;
}
}
if ($sort_item == 'username')
{
$template->assign_var('LETTER_HEADING', jr_admin_make_bookmark_heading($letter_list, $start));
}
#
#-----[ OPEN ]-----
#
templates/subSilver/admin/jr_admin_user_list.tpl
#
#-----[ FIND ]-----
#
</form>
#
#-----[ AFTER, ADD ]-----
#
<table border="0" cellpadding="3" cellspacing="1" width="96%" class="forumline" align="center">
<tr>
<td><span class="mainmenu"><b>{PAGE_NUMBER}</b></span></td>
<td align="right"><span class="mainmenu"><b>{PAGINATION}</b></span></td>
</table>
#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoMZu der Anzahl User pro Seite:
Es wird die Anzahl Topics pro Forum herangezogen, die per ACP eingestellt wird und der Variablen $per_page übergeben. Diese ist wird nur einmal definiert und kann entweder durch Einstellungsänderungen im ACP oder mit einem anderen, unabhängigen Wert versehen werden (z.B. 100).
Nun sollte auch der Junior Admin Mod bei einem Board mit sehr vielen Usern keine weiteren Probleme mehr haben.
--> CODE aktualisiert
--> CODE erneut aktualisiert!

