172 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			172 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
	
	
<?php
 | 
						|
// translator ready
 | 
						|
// addnews ready
 | 
						|
// mail ready
 | 
						|
require_once("common.php");
 | 
						|
require_once("lib/http.php");
 | 
						|
 | 
						|
check_su_access(SU_EDIT_COMMENTS);
 | 
						|
 | 
						|
tlschema("badword");
 | 
						|
 | 
						|
$op = httpget('op');
 | 
						|
//yuck, this page is a mess, but it gets the job done.
 | 
						|
page_header("Bad word editor");
 | 
						|
 | 
						|
require_once("lib/superusernav.php");
 | 
						|
superusernav();
 | 
						|
addnav("Bad Word Editor");
 | 
						|
 | 
						|
addnav("Refresh the list","badword.php");
 | 
						|
output("`7Here you can edit the words that the game filters.  Using * at the start or end of a word will be a wildcard matching anything else attached to the word.  These words are only filtered if bad word filtering is turned on in the game settings page.`n`n`0");
 | 
						|
 | 
						|
$test = translate_inline("Test");
 | 
						|
rawoutput("<form action='badword.php?op=test' method='POST'>");
 | 
						|
addnav("","badword.php?op=test");
 | 
						|
output("`7Test a word:`0");
 | 
						|
rawoutput("<input name='word'><input type='submit' class='button' value='$test'></form>");
 | 
						|
if ($op=="test"){
 | 
						|
	$word = httppost("word");
 | 
						|
	$return = soap($word,true);
 | 
						|
	if ($return == $word)
 | 
						|
		output("`7\"%s\" does not trip any filters.`0`n`n", $word);
 | 
						|
	else
 | 
						|
		output("`7%s`0`n`n", $return);
 | 
						|
}
 | 
						|
 | 
						|
output_notl("<font size='+1'>", true);
 | 
						|
output("`7`bGood Words`b`0");
 | 
						|
rawoutput("</font>");
 | 
						|
output("`7 (bad word exceptions)`0`n");
 | 
						|
 | 
						|
$add = translate_inline("Add");
 | 
						|
$remove = translate_inline("Remove");
 | 
						|
rawoutput("<form action='badword.php?op=addgood' method='POST'>");
 | 
						|
addnav("","badword.php?op=addgood");
 | 
						|
output("`7Add a word:`0");
 | 
						|
rawoutput("<input name='word'><input type='submit' class='button' value='$add'></form>");
 | 
						|
rawoutput("<form action='badword.php?op=removegood' method='POST'>");
 | 
						|
addnav("","badword.php?op=removegood");
 | 
						|
output("`7Remove a word:`0");
 | 
						|
rawoutput("<input name='word'><input type='submit' class='button' value='$remove'></form>");
 | 
						|
 | 
						|
 | 
						|
$sql = "SELECT * FROM ".db_prefix("nastywords")." WHERE type='good'";
 | 
						|
$result = db_query($sql);
 | 
						|
$row = db_fetch_assoc($result);
 | 
						|
$words = explode(" ",$row['words']);
 | 
						|
if ($op=="addgood"){
 | 
						|
 | 
						|
	$newregexp = stripslashes(httppost('word'));
 | 
						|
 | 
						|
	// not sure if the line below should appear, as the strings in the good
 | 
						|
	// word list have different behaviour than those in the nasty word list,
 | 
						|
	// and strings with single quotes in them currently have odd and
 | 
						|
	// unreliable behaviour, both under the good word list and the nasty
 | 
						|
	// word list
 | 
						|
	//	$newregexp = preg_replace('/(?<!\\\\)\'/', '\\\'', $newregexp);
 | 
						|
 | 
						|
	// $newregexp = str_replace("\n", '', $newregexp);
 | 
						|
	// appears to only remove the line feed character, chr(10),
 | 
						|
	// but leaves the carriage return character, chr(13), intact
 | 
						|
	$newregexp = str_replace("\n", '', $newregexp);
 | 
						|
	$newregexp = str_replace("\r", '', $newregexp);
 | 
						|
 | 
						|
	if ( $newregexp !== '' )
 | 
						|
		array_push($words,$newregexp);
 | 
						|
 | 
						|
	//array_push($words,stripslashes(httppost('word')));
 | 
						|
}
 | 
						|
if ($op=="removegood"){
 | 
						|
 | 
						|
	// false if not found
 | 
						|
	$removekey = array_search(stripslashes(httppost('word')),$words);
 | 
						|
	// $removekey can be 0
 | 
						|
	if ( $removekey !== false ) unset($words[$removekey]);
 | 
						|
 | 
						|
	//unset($words[array_search(stripslashes(httppost('word')),$words)]);
 | 
						|
}
 | 
						|
 | 
						|
show_word_list($words);
 | 
						|
if ($op=="addgood" || $op=="removegood"){
 | 
						|
	$sql = "DELETE FROM " . db_prefix("nastywords") . " WHERE type='good'";
 | 
						|
	db_query($sql);
 | 
						|
	$sql = "INSERT INTO " . db_prefix("nastywords") . " (words,type) VALUES ('" . addslashes(join(" ",$words)) . "','good')";
 | 
						|
	db_query($sql);
 | 
						|
	invalidatedatacache("goodwordlist");
 | 
						|
}
 | 
						|
 | 
						|
output_notl("`0`n`n");
 | 
						|
rawoutput("<font size='+1'>");
 | 
						|
output("`7`bNasty Words`b`0");
 | 
						|
rawoutput("</font>");
 | 
						|
output_notl("`n");
 | 
						|
 | 
						|
rawoutput("<form action='badword.php?op=add' method='POST'>");
 | 
						|
addnav("","badword.php?op=add");
 | 
						|
output("`7Add a word:`0");
 | 
						|
rawoutput("<input name='word'><input type='submit' class='button' value='$add'></form>");
 | 
						|
rawoutput("<form action='badword.php?op=remove' method='POST'>");
 | 
						|
addnav("","badword.php?op=remove");
 | 
						|
output("`7Remove a word:`0");
 | 
						|
rawoutput("<input name='word'><input type='submit' class='button' value='$remove'></form>");
 | 
						|
 | 
						|
$sql = "SELECT * FROM " . db_prefix("nastywords") . " WHERE type='nasty'";
 | 
						|
$result = db_query($sql);
 | 
						|
$row = db_fetch_assoc($result);
 | 
						|
$words = explode(" ",$row['words']);
 | 
						|
reset($words);
 | 
						|
 | 
						|
if ($op=="add"){
 | 
						|
 | 
						|
	$newregexp = stripslashes(httppost('word'));
 | 
						|
 | 
						|
	// automagically escapes all unescaped single quote characters
 | 
						|
	$newregexp = preg_replace('/(?<!\\\\)\'/', '\\\'', $newregexp);
 | 
						|
 | 
						|
	// $newregexp = str_replace("\n", '', $newregexp);
 | 
						|
	// appears to only remove the line feed character, chr(10),
 | 
						|
	// but leaves the carriage return character, chr(13), intact
 | 
						|
	$newregexp = str_replace("\n", '', $newregexp);
 | 
						|
	$newregexp = str_replace("\r", '', $newregexp);
 | 
						|
 | 
						|
	if ( $newregexp !== '' ) array_push($words,$newregexp);
 | 
						|
 | 
						|
	//array_push($words,stripslashes(httppost('word')));
 | 
						|
}
 | 
						|
if ($op=="remove"){
 | 
						|
	// false if not found
 | 
						|
	$removekey = array_search(stripslashes(httppost('word')),$words);
 | 
						|
	// $removekey can be 0
 | 
						|
	if ( $removekey !== false ) unset($words[$removekey]);
 | 
						|
 | 
						|
	//unset($words[array_search(stripslashes(httppost('word')),$words)]);
 | 
						|
}
 | 
						|
show_word_list($words);
 | 
						|
output_notl("`0");
 | 
						|
 | 
						|
if ($op=="add" || $op=="remove"){
 | 
						|
	$sql = "DELETE FROM " . db_prefix("nastywords") . " WHERE type='nasty'";
 | 
						|
	db_query($sql);
 | 
						|
	$sql = "INSERT INTO " . db_prefix("nastywords") . " (words,type) VALUES ('" . addslashes(join(" ",$words)) . "','nasty')";
 | 
						|
	db_query($sql);
 | 
						|
	invalidatedatacache("nastywordlist");
 | 
						|
}
 | 
						|
page_footer();
 | 
						|
 | 
						|
function show_word_list($words){
 | 
						|
	sort($words);
 | 
						|
	$lastletter="";
 | 
						|
	while (list($key,$val)=each($words)){
 | 
						|
		if (trim($val)==""){
 | 
						|
			unset($words[$key]);
 | 
						|
		}else{
 | 
						|
			if (substr($val,0,1)!=$lastletter){
 | 
						|
				$lastletter = substr($val,0,1);
 | 
						|
				output_notl("`n`n`^`b%s`b`@`n", strtoupper($lastletter));
 | 
						|
			}
 | 
						|
			output_notl("%s ", $val);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 | 
						|
?>
 |