[外掛] Nested Quote Limit Mod(引言層次限制)

MODs Released by Other phpbb Sites
非官方認證通過之 MOD ,或許有安全性之疑慮,所有問題由原發表者回覆!

版主: 版主管理群

主題已鎖定
御津闇慈
竹貓忠實會員
竹貓忠實會員
文章: 645
註冊時間: 2001-11-17 10:59

[外掛] Nested Quote Limit Mod(引言層次限制)

文章 御津闇慈 »

代碼: 選擇全部

##############################################################
## MOD Title:          Nested Quote Limit Mod
## MOD Version:        1.0.3
## MOD Author:         GUI < spam@nickm.org > 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\r
## 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 ]------------------------------------------
#
\nALTER 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 ]------------------------------------------
#
	$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'];
	
#
\n#-----[ 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 Quote Limit Mod : Begin -->
	<tr>
	  <th class="thHead" colspan="2">{L_NQLM_SETTINGS}</th>
	</tr>
	<tr>
		<td class="row1">{L_NQLM_DEFAULT_ENABLE}</td>
		<td class="row2"><input type="radio" name="nqlm_default_enable" value="1" {NQLM_DEFAULT_ENABLE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="nqlm_default_enable" value="0" {NQLM_DEFAULT_ENABLE_NO} /> {L_NO}</td>
	</tr>
	<tr>
		<td class="row1">{L_NQLM_DEFAULT_LEVEL}</td>
		<td class="row2"><input class="post" type="text" name="nqlm_default_level" value="{NQLM_DEFAULT_LEVEL}" size="3" maxlength="2" /></td>
	</tr>
	<tr>
		<td class="row1">{L_NQLM_OVERRRIDE}</td>
		<td class="row2"><input type="radio" name="nqlm_override" value="1" {NQLM_OVERRIDE_YES} /> {L_YES}&nbsp;&nbsp;<input type="radio" name="nqlm_override" value="0" {NQLM_OVERRIDE_NO} /> {L_NO}</td>
	</tr>
	<!-- Nested Quote Limit Mod : End -->
	
#
#-----[ 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 Quote Limit Mod : Begin -->
	<!-- BEGIN switch_nqlm -->
	<tr> 
	  <td class="row1"><span class="gen">{L_NQLM_ENABLE}:</span></td>
	  <td class="row2"> 
		<input type="radio" name="nqlm_enable" value="1" {NQLM_ENABLE_YES} />
		<span class="gen">{L_YES}</span>&nbsp;&nbsp; 
		<input type="radio" name="nqlm_enable" value="0" {NQLM_ENABLE_NO} />
		<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 type="text" name="nqlm_level" value="{NQLM_LEVEL}" size="4" maxlength="2" class="post" />
	  </td>
	</tr>
	<!-- END switch_nqlm -->
	<!-- Nested Quote Limit Mod : End -->
	
#
#-----[ 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 ]------------------------------------------
主題已鎖定

回到「非官方認證外掛」