установил мод Filter member list версии 1.0.8
никак не могу допереть, как его заставить фильтровать исключительно по цифрам, а не по совпадению любого куска текста.
Т.е. если я задам например фильтровать пользователей по какому-то параметру равному 2, то для него будет в одной куче 2, 12, 22 и т.д.
Хотел сделать дроп-меню и только из него выбор - тоже нифига не получается...
подскажите хоть в каком месте мода нужно сделать эти изменения.
Код: Выделить всё
## EasyMod 0.0.10a compliant
#################################################################
## MOD Title: Filter member list
## MOD Author: Shannado <sven@shannado.nl> (Sven) http://www.shannado.nl/forumorg
## MOD Description: With this MOD an user is able to filter the memberslist.
## MOD Version: 1.0.8
##
##
## Installation Level: Easy
## Installation Time: 10 - 20 Minutes
## Files To Edit: memberlist.php,
## lang_main.php,
## memberlist_body.tpl
## Included Files: N/A
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/ for the
## latest version of this MOD. Downloading this MOD from other sites could cause malicious code
## to enter into your phpBB Forum. As such, phpBB will not offer support for MOD's not offered
## in our MOD-Database, located at: http://www.phpbb.com/mods/
##############################################################
## Author Notes:
##
##############################################################
##
## When you don't like the extra selectbox AND you don't mind that user only can filter on 'Username'
## Then you don't put '{L_MEMBERLIST_FILTER_SEL} {S_FILTER_SELECT} ' in the memberlist_body.tpl
## By default the MOD filters on Username.
## Change $lang['Memberlist_filter'] = "keyword (wildcards allowed) "; into
## $lang['Memberlist_filter'] = "username (wildcards allowed) ";
##
## An user is able to filter on email, but if a user has set his email on hidden, then the user
## will not show up in the list, if the filter matches the criteria. This does not concern if the user is an ADMIN
##
##############################################################
## MOD History:
##
## ------------
## 01-01-2002 - 0.9.0 beta
## - Beta
##
## 01-01-2002 - 0.9.1 beta
## - The pagination will not take into account the filter used,
## and as a result the pagination will be created based on the total members.
## Thanks goto JamesB for finding the bug and making the solution for this bug
##
## 01-01-2002 - 0.9.5 beta
## - Text stays in the textarea when you hit the sort button or clicking for the next page
## - User is able to filter on Username, location, email OR website
##
## 01-01-2002 - 0.9.6 beta
## - When nothing matches the critera a message will be show
##
## 01-01-2002 - 0.9.7 beta
## - Forgot to change some code in the HOWTO
##
## 01-01-2002 - 1.0.0 FINAL
## - Final
## - No changes
##
## 01-01-2002 - 1.0.1 FINAL
## - Some minor code cosmetic updates
##
## 01-01-2002 - 1.0.2 FINAL
## - Add rank to the filter
##
## 01-01-2002 - 1.0.3 FINAL
## - Fixed small typos
##
## 01-01-2002 - 1.0.4 FINAL
## - Fixed small typos
##
## 01-01-2002 - 1.0.5 FINAL
## - Fixed small typos
##
## 01-01-2002 - 1.0.6 FINAL
## - Made phpBB v2.0.2 complaint and EasyMod 0.0.7 complaint
##
## 01-01-2002 - 1.0.7 FINAL
## - Made phpBB v2.0.4 complaint and fixed a small bug
##
## 05-12-2003 - 1.0.8 FINAL
## - Made phpBB v2.0.6 complaint and EasyMod 0.0.10a complaint
## - Adjusted to the new Template
#################################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
#################################################################
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Filter memberslist MOD
$lang['Memberlist_filter'] = 'keyword (wildcards allowed) ';
$lang['Memberlist_filter_sel'] = 'Choose filter: ';
$lang['Click_return_memberlist'] = 'Click %sHere%s to return to the memberlist';
#
#-----[ OPEN ]------------------------------------------
#
memberlist.php
#
#-----[ FIND ]------------------------------------------
#
//
// Memberlist sorting
//
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
// Filter Memberlist MOD - BEGIN
//
$filter_mode_types_text = array($lang['Sort_Username'], $lang['Sort_Location'], $lang['Sort_Email'], $lang['Sort_Website'], $lang['Poster_rank']);
$filter_mode_types = array('username', 'location', 'email', 'website', 'rank');
$select_filter_mode = '<select name="filter_mode">';
for($i = 0; $i < count($filter_mode_types_text); $i++)
{
$selected = ( $filter_mode == $filter_mode_types[$i] ) ? ' selected="selected"' : '';
$select_filter_mode .= "<option value=\"" . $filter_mode_types[$i] . "\"$selected>" . $filter_mode_types_text[$i] . "</option>";
}
$select_filter_mode .= '</select>';
//
// Filter Memberlist MOD - END
//
#
#-----[ FIND ]------------------------------------------
#
//
// Generate page
//
#
#-----[ BEFORE, ADD ]------------------------------------------
#
//
// Filter Memberlist MOD - BEGIN
//
if ( isset($HTTP_POST_VARS['filter']) || isset($HTTP_GET_VARS['filter']) )
{
$filter = ( isset($HTTP_POST_VARS['filter']) ) ? $HTTP_POST_VARS['filter'] : $HTTP_GET_VARS['filter'];
if (empty($filter) )
{
$sql_filter = '';
}
else
{
$username_filter = "*". $filter . "*";
$username_filter = preg_replace('/\*/', '%', trim(strip_tags($username_filter)));
if ( isset($HTTP_GET_VARS['filter_mode']) || isset($HTTP_POST_VARS['filter_mode']) )
{
$filter_mode = ( isset($HTTP_POST_VARS['filter_mode']) ) ? $HTTP_POST_VARS['filter_mode'] : $HTTP_GET_VARS['filter_mode'];
switch( $filter_mode )
{
case 'username':
$sql_filter = " AND username LIKE '" . str_replace("\'", "''", $username_filter) . "'";
break;
case 'location':
$sql_filter = " AND user_from LIKE '" . str_replace("\'", "''", $username_filter) . "'";
break;
case 'email':
if ($userdata['user_level'] == ADMIN )
{
$sql_filter = " AND user_email LIKE '" . str_replace("\'", "''", $username_filter) . "'";
}
else
{
$sql_filter = " AND user_viewemail != '0' AND user_email LIKE '" . str_replace("\'", "''", $username_filter) . "'";
}
break;
case 'website':
$sql_filter = " AND user_website LIKE '" . str_replace("\'", "''", $username_filter) . "'";
break;
case 'rank':
$sql_filter = " AND r.rank_title LIKE '" . str_replace("\'", "''", $username_filter) . "'";
break;
default:
$sql_filter = " AND username LIKE '" . str_replace("\'", "''", $username_filter) . "'";
break;
}
}
else
{
$sql_filter = " AND username LIKE '" . str_replace("\'", "''", $username_filter) . "'";
}
}
}
else
{
$sql_filter = '';
}
//
// Filter Memberlist MOD - END
//
#
#-----[ FIND ]------------------------------------------
#
'L_POSTS' => $lang['Posts'],
#
#-----[ AFTER, ADD ]------------------------------------------
#
'FILTER' => $filter,
'L_MEMBERLIST_FILTER' => $lang['Memberlist_filter'],
'L_MEMBERLIST_FILTER_SEL' => $lang['Memberlist_filter_sel'],
'S_FILTER_SELECT' => $select_filter_mode,
#
#-----[ FIND ]------------------------------------------
#
$sql = "SELECT username
#
#-----[ IN-LINE FIND ]------------------------------------------
#
, user_allowavatar
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
, r.rank_title
#
#-----[ FIND ]------------------------------------------
#
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "
#
#-----[ IN-LINE FIND ]------------------------------------------
#
USERS_TABLE . "
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
LEFT JOIN " . RANKS_TABLE . " r ON r.rank_id = user_rank
#
#-----[ IN-LINE FIND ]------------------------------------------
#
<> " . ANONYMOUS . "
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
$sql_filter
#
#-----[ FIND ]------------------------------------------
#
while ( $row = $db->sql_fetchrow($result) );
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
else
{
$message = $lang['No_match'] . '<br /><br />' . sprintf($lang['Click_return_memberlist'], '<a href="' . append_sid('memberlist.'.$phpEx) . '">', '</a>' );
message_die(GENERAL_MESSAGE, $message);
}
#
#-----[ FIND ]------------------------------------------
#
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;
#
#-----[ REPLACE WITH ]------------------------------------------
#
FROM " . USERS_TABLE . " LEFT JOIN " . RANKS_TABLE . " r
ON r.rank_id = user_rank
WHERE user_id <> " . ANONYMOUS . " $sql_filter";
#
#-----[ FIND ]------------------------------------------
#
$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order", $total_members, $board_config['topics_per_page'], $start). ' ';
#
#-----[ IN-LINE FIND ]------------------------------------------
#
memberlist.$phpEx?mode=$mode&order=$sort_order
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
&filter=$filter&filter_mode=$filter_mode
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/memberlist_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<form method="post" action="{S_MODE_ACTION}">
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
<tr>
<td align="left"><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td>
<td align="right" nowrap="nowrap"><span class="genmed">{L_SELECT_SORT_METHOD}: {S_MODE_SELECT} {L_ORDER} {S_ORDER_SELECT}
<input type="submit" name="submit" value="{L_SUBMIT}" class="liteoption" />
</span></td>
</tr>
</table>
#
#-----[ REPLACE WITH ]------------------------------------------
#
<table width="100%" cellspacing="2" cellpadding="2" border="0" align="center">
<form method="post" action="{S_MODE_ACTION}">
<tr>
<td align="right" nowrap="nowrap" colspan="2"><span class="genmed">{L_SELECT_SORT_METHOD}: {S_MODE_SELECT} {L_ORDER} {S_ORDER_SELECT} </span></td>
</tr>
<tr>
<td align="left" valign="bottom"><span class="nav"><a href="{U_INDEX}" class="nav">{L_INDEX}</a></span></td>
<td align="right" nowrap="nowrap"><span class="genmed">{L_MEMBERLIST_FILTER_SEL} {S_FILTER_SELECT} {L_MEMBERLIST_FILTER}<input type="text" style="width: 150px" name="filter" class="post" size="28" value="{FILTER}" />
<input type="submit" name="submit" value="{L_SUBMIT}" class="liteoption" />
</span></td>
</tr>
</form>
</table>
#
#-----[ FIND ]------------------------------------------
#
</table></form>
#
#-----[ REPLACE WITH ]------------------------------------------
#
</table>
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
А еще если кто знает - подскажите как сделать чтобы фильтр не сбрасывался на вариант по умолчанию каждый раз, а оставался на последнем выбранном. Т.е. если я выбрал фильтр по количеству сообщений, чтобы после вывода списка пользователей меню фильтра так и осталось "по количеству сообщений", а если выбрал по дате регистрации - то соотв. по дате