############################################################## ## 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 ## 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 ]------------------------------------------ # $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 ]------------------------------------------ # {S_HIDDEN_FIELDS}   # #-----[ BEFORE, ADD ]------------------------------------------ # {L_NQLM_SETTINGS} {L_NQLM_DEFAULT_ENABLE} {L_YES}   {L_NO} {L_NQLM_DEFAULT_LEVEL} {L_NQLM_OVERRRIDE} {L_YES}   {L_NO} # #-----[ OPEN ]------------------------------------------ # templates/subSilver/profile_add_body.tpl # #-----[ FIND ]------------------------------------------ # {L_BOARD_LANGUAGE}: {LANGUAGE_SELECT} # #-----[ BEFORE, ADD ]------------------------------------------ # {L_NQLM_ENABLE}: {L_YES}   {L_NO} {L_NQLM_LEVEL}:
{L_NQLM_LEVEL_EXPLAIN} # #-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ # # EoM