UBB.Dev
Posted By: little_joe Filters applied only to specific forums? - 06/02/2004 3:42 AM
6.4.2

We'd like to be able to apply filters to specific forums. For example, in the badwords filter, I'd like to have a site-wide badword list then perhaps another list that is exclusive to Forums 2, 4, 6 but none of the others.

Anyone have ideas on how to do this?

Thanks.
Posted By: AKD96 Re: Filters applied only to specific forums? - 06/03/2004 12:40 AM
Quick and dirty.

Make a copy of your badwords file and name it badwordsextra or whatever you like. Put the different list of words in there and then upload it into the folder with your badwords file.

Edit addpost.php:

Find:
Code
<br />// ---------------------------------------------------------------------<br />// Substitute any filters/badwords with the $config[censored] variable<br />   $words[0] = "";<br />   if ($config['censored']) {<br />      $badwords = @file("{$config['path']}/filters/badwords");<br />      if (!is_array($badwords)) {<br />         $badwords = @file ("{$config['phpurl']}/filters/badwords");<br />      }<br />      while (list($linenum,$line) = each($badwords) ) {<br />         $line = chop($line);<br />         if ( (preg_match("/^\r/",$line)) || (preg_match("/^\n/",$line)) ) {<br />            continue;<br />         }<br />         $islines = 1;<br />         $words[count($words)] = $line;<br />         // PHP4 ONLY<br />         // array_push ($words, $line);<br />      }<br />      if ($islines) {<br />         $badwords = join("|", $words);<br />         $badwords = preg_replace("/^\|/","",$badwords);<br /><br />         $Subject = preg_replace("/\b($badwords)\b/i",$config['censored'],$Subject);<br />         $Body = preg_replace("/\b($badwords)\b/i",$config['censored'],$Body);<br />      }<br />   }<br />

Replace with:
Code
<br />// ---------------------------------------------------------------------<br />// Substitute any filters/badwords with the $config[censored] variable<br />   $words[0] = "";<br /><br />if ( ($Board == "KeywordTwo") || ($Board == "KeywordFour") || ($Board == "KeywordSix") ) {<br />	$badwordfile="badwordsextra";<br />} else {<br />	$badwordfile="badwords";<br />}<br /><br />   if ($config['censored']) {<br />      $badwords = @file("{$config['path']}/filters/$badwordfile");<br />      if (!is_array($badwords)) {<br />         $badwords = @file ("{$config['phpurl']}/filters/$badwordfile");<br />      }<br />      while (list($linenum,$line) = each($badwords) ) {<br />         $line = chop($line);<br />         if ( (preg_match("/^\r/",$line)) || (preg_match("/^\n/",$line)) ) {<br />            continue;<br />         }<br />         $islines = 1;<br />         $words[count($words)] = $line;<br />         // PHP4 ONLY<br />         // array_push ($words, $line);<br />      }<br />      if ($islines) {<br />         $badwords = join("|", $words);<br />         $badwords = preg_replace("/^\|/","",$badwords);<br /><br />         $Subject = preg_replace("/\b($badwords)\b/i",$config['censored'],$Subject);<br />         $Body = preg_replace("/\b($badwords)\b/i",$config['censored'],$Body);<br />      }<br />   }<br />
Posted By: AKD96 Re: Filters applied only to specific forums? - 06/03/2004 12:55 AM
If you want to make it editable from admin:

In admin/menu.php find:
Code
<br />           <a href="{$config['phpurl']}/admin/editfilters.php?Cat=$Cat&filter=badwords" target="mainFrame"><br />           {$ubbt_lang['BADWORD']} <br />           </a><br />           <br><br />

replace with:
Code
<br />           <a href="{$config['phpurl']}/admin/editfilters.php?Cat=$Cat&filter=badwords" target="mainFrame"><br />           {$ubbt_lang['BADWORD']} <br />           </a><br />           <br><br />           <a href="{$config['phpurl']}/admin/editfilters.php?Cat=$Cat&filter=badwordextra" target="mainFrame"><br />           {$ubbt_lang['BADWORDEXTRA']} <br />           </a><br />           <br><br />


In admin/editfilters.php find:
Code
<br />   elseif ($filter == "badwords") {<br />      echo "{$ubbt_lang['BADWORDS']}";<br />   }<br />

relace with:
Code
<br />   elseif ($filter == "badwords") {<br />      echo "{$ubbt_lang['BADWORDS']}";<br />   }<br />   elseif ($filter == "badwordextra") {<br />      echo "{$ubbt_lang['BADWORDEXTRA']}";<br />   }<br />


In your admin/menu.php language file, append this:
Code
<br />$ubbt_lang['BADWORDEXTRA'] = "Edit extra bad words";<br />


In your admin/editfilters.php language file, append this:
Code
<br />$ubbt_lang['BADWORDEXTRA'] = "This filter holds a list of words that will be replaced by the censored value in your config file in your specified boards, if you have censoring turned on.";<br />
Posted By: AKD96 Re: Filters applied only to specific forums? - 06/03/2004 12:56 AM
*Remember to make BADWORDEXTRAS world-writable.
Very cool, many thanks for your time on this. I will give it a shot this weekend and see what happens.
© UBB.Developers