http://phpbb-tw.net/phpbb/viewtopic.php?t=33382
--------------------------------------------------------------------------------
代碼: 選擇全部
代碼:
##############################################################
## MOD Title: Nested Quote Limit Mod
## MOD Version: 1.0.3
## MOD Author: GUI <spam> Nick Muerdter http://www.nickm.org/
## MOD Description: Allows users to specify a maximum level
## of nested quotes before higher levels
## are removed.
##
## Installation Level: Intermediate
## Installation Time: ~15 Minutes
## Files To Edit: admin/admin_board.php
## includes/bbcode.php
## includes/usercp_register.php
## language/lang_english/lang_admin.php
## language/lang_english/lang_main.php
## templates/subSilver/admin/board_config_body.tpl
## templates/subSilver/profile_add_body.tpl
## Included Files: n/a
##############################################################
## For Security Purposes, Please Check: http://www.phpbb.com/mods/downloads/ 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/downloads/
##############################################################
## Author Notes:
##
##############################################################
## MOD History:
## 1.0.0 (06-01-03)
## - Initial Release.
## 1.0.1 (06-01-03)
## - Fixed a small bug that forced the default admin value
## in some instances.
## 1.0.2 (06-02-03)
## - Fixed stupid mistake in the SQL.
## 1.0.3 (06-02-03)
## - Corrected version number in mod file.
##############################################################
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
#
#-----[ SQL ]------------------------------------------
#
ALTER TABLE phpbb_users
ADD user_nqlm_enable tinyint(1) default NULL,
ADD user_nqlm_level tinyint(4) default NULL;
INSERT INTO phpbb_config (config_name, config_value) VALUES ('nqlm_default_enable', '1');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('nqlm_override', '0');
INSERT INTO phpbb_config (config_name, config_value) VALUES ('nqlm_default_level', '3');
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_board.php
#
#-----[ FIND ]------------------------------------------
#
$template->set_filenames(array(
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$nqlm_default_enable_yes = ($new['nqlm_default_enable'] == 1) ? "checked="checked"" : "";
$nqlm_default_enable_no = ($new['nqlm_default_enable'] == 0) ? "checked="checked"" : "";
$nqlm_default_level = $new['nqlm_default_level'];
$nqlm_override_yes = ($new['nqlm_override'] == 1) ? "checked="checked"" : "";
$nqlm_override_no = ($new['nqlm_override'] == 0) ? "checked="checked"" : "";
// Nested Quote Limit Mod : End
#
#-----[ FIND ]------------------------------------------
#
"SERVER_NAME" => $new['server_name'],
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
"L_NQLM_SETTINGS" => $lang['NQLM_Settings'],
"L_NQLM_DEFAULT_ENABLE" => $lang['NQLM_Default_enable'],
"L_NQLM_DEFAULT_LEVEL" => $lang['NQLM_Default_level'],
"L_NQLM_OVERRRIDE" => $lang['NQLM_Override'],
"NQLM_DEFAULT_ENABLE_YES" => $nqlm_default_enable_yes,
"NQLM_DEFAULT_ENABLE_NO" => $nqlm_default_enable_no,
"NQLM_DEFAULT_LEVEL" => $nqlm_default_level,
"NQLM_OVERRIDE_YES" => $nqlm_override_yes,
"NQLM_OVERRIDE_NO" => $nqlm_override_no,
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
includes/bbcode.php
#
#-----[ FIND ]------------------------------------------
#
return $bbcode_tpl;
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
function returnInts ($var) {
return (is_int ($var)) ? $var : null;
}
// Nested Quote Limit Mod : End
#
#-----[ FIND ]------------------------------------------
\n#
$text = bbencode_second_pass_code($text, $uid, $bbcode_tpl);
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
global $board_config, $userdata;
if (($board_config['nqlm_override'] == false && $userdata['user_nqlm_enable'] == true) || ($board_config['nqlm_override'] == false && !isset ($userdata['user_nqlm_enable']) && $board_config['nqlm_default_enable'] == true) || ($board_config['nqlm_override'] == true && $board_config['nqlm_default_enable'] == true)) {
$nqlm_level = (isset ($userdata['user_nqlm_level']) && $board_config['nqlm_override'] == false) ? $userdata['user_nqlm_level'] : $board_config['nqlm_default_level'];
// Make sure there's enough quotes in the entire message to even
// meet the limit.
$num_quotes = preg_match_all ("/[quote:$uid/si", $text, $matches);
if ($num_quotes > $nqlm_level) {
// Define default values.
$curr_pos = 1;
$level = 0;
while (isset ($curr_pos) && ($curr_pos < strlen ($text))) {
// Find all instances of quote tags.
$curr_pos_cmp[0] = strpos ($text, "[quote:$uid]", $curr_pos);
$curr_pos_cmp[1] = strpos ($text, "[quote:$uid=", $curr_pos);
$curr_pos_cmp[2] = strpos ($text, "[/quote:$uid]", $curr_pos);
// Filter out all the empty values to determine if we should
// continue or bail. Also makes the array play nice with min ().
$curr_pos_cmp = array_filter ($curr_pos_cmp, 'returnInts');
if (!empty ($curr_pos_cmp)) {
// Find the first tag we should deal with.
$curr_pos = min ($curr_pos_cmp);
// Set everything to false so things won't get messy with the loop.
$quote_open = null;
$quote_open_user = null;
$quote_close = null;
// Find out which type of tag we're dealing with.
switch ($curr_pos) {
case $curr_pos_cmp[0]:
$quote_open = true;
break;
case $curr_pos_cmp[1]:
$quote_open_user = true;
break;
case $curr_pos_cmp[2]:
$quote_close = true;
break;
}
} else {
// $curr_pos_cmp array is empty so there's nothing left to do.
$curr_pos = null;
}
// If we have a tag we'll start.
if (isset ($curr_pos)) {
// If we're in front of an opening quote tag at the maxmimum
// level, we'll insert a [quote_kill] tag.
if ((isset ($quote_open) || isset ($quote_open_user)) && $level == $nqlm_level) {
$text = substr_replace ($text, "[quote_kill:$uid]", $curr_pos, 0);
$curr_pos += strlen ("[quote_kill:$uid]");
}
// Depending on the type of tag we have, increase or decrease
// the level count and set the cursor ahead of the tag.
if (isset ($quote_open)) {
$level++;
$curr_pos += strlen ("[quote:$uid]");
} else if (isset ($quote_open_user)) {
$level++;
// Find the ending of the quote tag for usernames.
$end_bracket_pos = strpos ($text, ']', $curr_pos);
$curr_pos += (($end_bracket_pos + 1) - $curr_pos);
} else if (isset ($quote_close)) {
$level--;
$curr_pos += strlen ("[/quote:$uid]");
}
// Now we're positioned after a quote closing quote tag at
// the maximum level, so we'll insert an ending [/quote_kill] tag
if (isset ($quote_close) && $level == $nqlm_level) {
$text = substr_replace ($text, "[/quote_kill:$uid]", $curr_pos, 0);
$curr_pos += strlen ("[/quote_kill:$uid]");
}
}
}
// We've now traversed all of the text and have inserted [quote_kill]
// tags as needed. Now all we delete the tags and everything inside.
$text = preg_replace ("/(s*)[quote_kill:$uid](.*?)[/quote_kill:$uid](s*)/si", ' ', $text);
}
}
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
$allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $board_config['allow_smilies'];
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$nqlm_enable = (isset ($HTTP_POST_VARS['nqlm_enable'])) ? (($HTTP_POST_VARS['nqlm_enable']) ? TRUE : 0 ) : $board_config['nqlm_default_enable'];
$nqlm_level = (isset ($HTTP_POST_VARS['nqlm_level'])) ? $HTTP_POST_VARS['nqlm_level'] : $board_config['nqlm_default_level'];
// Nested Quote Limit Mod : End
#
#-----[ FIND ]------------------------------------------
#
$allowsmilies = ( isset($HTTP_POST_VARS['allowsmilies']) ) ? ( ($HTTP_POST_VARS['allowsmilies']) ? TRUE : 0 ) : $userdata['user_allowsmile'];
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$nqlm_enable = (isset ($HTTP_POST_VARS['nqlm_enable'])) ? (($HTTP_POST_VARS['nqlm_enable']) ? TRUE : 0 ) : $userdata['user_nqlm_enable'];
$nqlm_level = (isset ($HTTP_POST_VARS['nqlm_level'])) ? $HTTP_POST_VARS['nqlm_level'] : $userdata['user_nqlm_level'];
// Nested Quote Limit Mod : End
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_style, user_level, user_allow_pm,
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
user_nqlm_enable, user_nqlm_level,
#
#-----[ IN-LINE FIND ]------------------------------------------
#
$user_style, 0, 1,
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
$nqlm_enable, $nqlm_level,
#
#-----[ IN-LINE FIND ]------------------------------------------
#
user_style = $user_style, user_active = $user_active,
#
#-----[ IN-LINE AFTER, ADD ]------------------------------------------
#
user_nqlm_enable = $nqlm_enable, user_nqlm_level = $nqlm_level,
#
#-----[ FIND ]------------------------------------------
#
$allowviewonline = $userdata['user_allow_viewonline'];
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$nqlm_enable = (isset ($userdata['user_nqlm_enable'])) ? $userdata['user_nqlm_enable'] : $board_config['nqlm_default_enable'];
$nqlm_level = (isset ($userdata['user_nqlm_level'])) ? $userdata['user_nqlm_level'] : $board_config['nqlm_default_level'];
// Nested Quote Limit Mod : End
#
#-----[ FIND ]------------------------------------------
#
$template->assign_block_vars('switch_edit_profile', array());
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
if ($board_config['nqlm_override'] == false) {
$template->assign_block_vars('switch_nqlm', array());
}
// Nested Quote Limit Mod : End
#
#-----[ FIND ]------------------------------------------
#
'L_EMAIL_ADDRESS' => $lang['Email_address'],
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
'L_NQLM_ENABLE' => $lang['NQLM_Enable'],
'L_NQLM_LEVEL' => $lang['NQLM_Level'],
'L_NQLM_LEVEL_EXPLAIN' => $lang['NQLM_Level_explain'],
'NQLM_ENABLE_YES' => ( $nqlm_enable ) ? 'checked="checked"' : '',
'NQLM_ENABLE_NO' => ( !$nqlm_enable ) ? 'checked="checked"' : '',
'NQLM_LEVEL' => $nqlm_level,
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_admin.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$lang['NQLM_Settings'] = 'Nested Quote Limit Settings';
$lang['NQLM_Default_enable'] = 'Enable nested quote limit by default';
$lang['NQLM_Default_level'] = 'Default limit';
$lang['NQLM_Override'] = 'Override users' preferences with defaults';
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$lang['NQLM_Enable'] = 'Enable nested quote limit';
$lang['NQLM_Level'] = 'Nested quote limit';
$lang['NQLM_Level_explain'] = 'Nested quote levels exceeding this number are removed from the post';
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<tr>
<th class="thHead" colspan="2">{L_COPPA_SETTINGS}</th>
</tr>
<tr>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
<Nested>
<tr>
<th class="thHead" colspan="2">{L_NQLM_SETTINGS}</th>
</tr>
<tr>
<td class="row1">{L_NQLM_DEFAULT_ENABLE}</td>
<td class="row2"><input> {L_YES} <input> {L_NO}</td>
</tr>
<tr>
<td class="row1">{L_NQLM_DEFAULT_LEVEL}</td>
<td class="row2"><input></td>
</tr>
<tr>
<td class="row1">{L_NQLM_OVERRRIDE}</td>
<td class="row2"><input> {L_YES} <input> {L_NO}</td>
</tr>
<Nested>
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_add_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<tr>
<td class="row1"><span class="gen">{L_BOARD_LANGUAGE}:</span></td>
<td class="row2"><span class="gensmall">{LANGUAGE_SELECT}</span></td>
</tr>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
<Nested>
<BEGIN>
<tr>
<td class="row1"><span class="gen">{L_NQLM_ENABLE}:</span></td>
<td class="row2">
<input>
<span class="gen">{L_YES}</span>
<input>
<span class="gen">{L_NO}</span></td>
</tr>
<tr>
<td class="row1"><span class="gen">{L_NQLM_LEVEL}:</span><br>
<span class="gensmall">{L_NQLM_LEVEL_EXPLAIN}</span></td>
<td class="row2">
<input>
</td>
</tr>
<END>
<Nested>
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
以下是語系翻譯(翻低不好就是XD|||)
代碼:
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_admin.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$lang['NQLM_Settings'] = '引言層次設定';
$lang['NQLM_Default_enable'] = '啟用預設值限制引言層次';
$lang['NQLM_Default_level'] = '預設值設定';
$lang['NQLM_Override'] = '啟用預設值覆蓋所有使用者設定';
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
//
// That's all, Folks!
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Nested Quote Limit Mod : Begin
$lang['NQLM_Enable'] = '啟用引言回覆層次限制';
$lang['NQLM_Level'] = '引言回覆層次數量';
$lang['NQLM_Level_explain'] = '引言層次超過指定數量將會從文章內移除';
// Nested Quote Limit Mod : End
#
#-----[ OPEN ]------------------------------------------