Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 9 Gast/Gäste
Wortfilter Nr. 2
#1
Hallo,

ich habe den hauseigenen Wortfilter von MyBB so modifiziert, dass er nur unter bestimmten Bedingungen greift - siehe https://www.mybb.de/forum/thread-37796.html

Nun gibt es aber ein paar badwords, die bedingungslos gefiltert werden sollen.

Aktuell ist der Wortfilter in der inc/class_parser.php folgendermaßen modifiziert:

Originial:
PHP-Code:
function parse_badwords($message$options=array())
{
if(empty(
$this->options)) 

Modifizierte Version:
PHP-Code:
function parse_badwords($message$options=array())
{
global 
$mybb;
if (
$mybb->usergroup['gid'] != '1' //Gäste im Forum
AND $mybb->usergroup['gid'] != '2' //Registered
)
{return 
$message;}
if (empty(
$this->options)) 

Nun dachte ich als Lösungsansatz, ich könnte im If-Befehl diejenigen badwords, die immer gefiltert werden sollen, als zusätzliche Bedingung anführen. Wäre das ein gangbarer Weg? Wie müsste der Code dazu aussehen?

LG
Zitieren
#2
Habe es jetzt mal mit diesen Codes versucht, wobei alwaysbadword das bedingungslos zu filternde badword ist, welches im ACP "Home » Wortfilter" ebenfalls eingetragen wurde:
1. Versuch:
PHP-Code:
if (
$mybb->usergroup['gid'] != '1' //Gäste im Forum
AND $mybb->usergroup['gid'] != '2' //Registered
AND $badword['badword'] != 'alwaysbadword'

2. Versuch:
PHP-Code:
if (
$mybb->usergroup['gid'] != '1' //Gäste im Forum
AND $mybb->usergroup['gid'] != '2' //Registered
AND $bad_word != "alwaysbadword"


Immerhin kein Syntaxerror *g* aber funktioniert hat's leider auch nicht.
Zitieren
#3
Der gesamte Code für den Wortfilter in der inc/class_parser.php schaut folgendermaßen aus:
PHP-Code:
    function parse_badwords($message$options=array())
    {
    global $mybb;

        if(
        
$mybb->usergroup['gid'] != '1' //Gäste im Forum
        
AND $mybb->usergroup['gid'] != '2' //Registered
        
)
    {
        return $message;
    }
        if(empty(
$this->options))
        {
            
$this->options $options;
        }

        if(
$this->badwords_cache == 0)
        {
            
$this->cache_badwords();
        }
        if(
is_array($this->badwords_cache))
        {
            
reset($this->badwords_cache);
            foreach(
$this->badwords_cache as $bid => $badword)
            {
                if(!
$badword['replacement'])
                {
                    
$badword['replacement'] = "*****";
                }

                if(!
$badword['regex'])
                {
                    
$badword['badword'] = $this->generate_regex($badword['badword']);
                }

                
$message preg_replace('#'.$badword['badword'].'#is'$badword['replacement'], $message);
            }
        }
        if(!empty(
$this->options['strip_tags']))
        {
            
$message strip_tags($message);
        }
        return 
$message;
    } 

Wurde an der Stelle des ersten If-Befehls die Liste der badwords (definiert im ACP -> Wortfilter) überhaupt schon eingelesen, sodass man dort eine zusätzliche Bedingung, welche an ein bestimmtes badword geknüpft ist, überhaupt einführen könnte?
Zitieren
#4
Habe nun ein Plugin gefunden, welches sich bei mir aber leider nicht aktivieren lässt (ich bekomme ein MySQL-Error):
https://community.mybb.com/mods.php?acti...w&pid=1103
Zitieren
#5
Hy schau mal ob du in der \inc\languages\english\admin\ die sprachdatei  awf_plugin.lang.php hast! Bei mir hat die im Download gefehlt, hab die dann von der 1.0 genommen

lg Tc4me
Zitieren
#6
Danke, ja, die awf_plugin.lang.php hat bei mir auch gefehlt. Habe sie aus der Türkischen Version in die Englische und Deutsche rüberkopiert. Unter diesen Umständen ließ sich dann das Plugin nicht aktivieren. Ohne der awf_plugin.lang.php ging das Plugin nicht mal zum Installieren.

Habe das awf_plugin.lang.php nun auch aus der Version 1.0 (statt 1.1) ausprobiert: das Plugin geht leider genauso nicht zum aktivieren.
Zitieren
#7
oder hier die Englische 
https://community.mybb.com/mods.php?acti...38c0ae2b75
Dann kolidiert es mit einen anderen Plugin, bei mir läuft es ohne Probleme
Zitieren
#8
Beim Aktivieren verursacht auch die Englische Version denselben Fehler, der lautet:

MyBB has experienced an internal SQL error and cannot continue.
------------------------------------
SQL Error:
1050 - Table 'p5QQ_advanced_badwords' already exists
Query:
CREATE TABLE p5QQ_advanced_badwords ( bid int unsigned not null auto_increment primary key, regex varchar(255) NOT NULL, replacement varchar(30) NOT NULL )
Please contact the MyBB Group for technical support.
------------------------------------

Schaut allerdings nach einem behebbaren Problem aus. Was ich nicht verstehe: er sagt "p5QQ_advanced_badwords" gibt es schon und ich soll nun ein Table mit identischem namen erstellen. Wie sollte das gehen? Oder soll ich ein Table namens "p5QQ_advanced_badwords_2" erstellen?
Zitieren
#9
Lösche einfach die Tabelle "p5QQ_advanced_badwords" aus der Datenbank und das Plugin sollte installierbar sein. Wink
Zitieren
#10
Hab jetzt die Einstellungen von p5QQ_advanced_badwords im phpMyAdmin angeschaut: sie stimmen mit dem geforderten "bid int unsigned not null auto_increment primary key, regex varchar(255) NOT NULL, replacement varchar(30) NOT NULL" überein.

Wie löscht man diese Tabelle?

"p5QQ_advanced_badwords" -> "Bearbeiten" -> bid, regex, replacement markieren -> "Werte löschen" ??
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Wortfilter nur für bestimmte Usergruppe masi1234 14 3.490 19.04.2021, 15:36
Letzter Beitrag: masi1234
  Wortfilter im Threadtitel deaktivieren Pechente 5 2.731 04.02.2009, 14:52
Letzter Beitrag: Michael
Question Wortfilter in Shoutbox? $imon^^ 0 1.714 20.12.2008, 15:33
Letzter Beitrag: $imon^^
  Wortfilter extended. forumfreund 1 1.514 27.08.2008, 00:41
Letzter Beitrag: Michael