Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
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
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
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.
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
11.05.2021, 19:41
(Dieser Beitrag wurde zuletzt bearbeitet: 11.05.2021, 19:42 von masi1234.)
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?
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
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
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
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
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
13.05.2021, 16:16
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2021, 16:28 von masi1234.)
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.
Beiträge: 226
Themen: 10
Registriert seit: 06.03.2020
MyBB-Version: 1.8.27
13.05.2021, 18:36
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2021, 18:39 von tc4me.)
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
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
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?
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
13.05.2021, 19:14
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2021, 19:15 von SvePu.)
Lösche einfach die Tabelle "p5QQ_advanced_badwords" aus der Datenbank und das Plugin sollte installierbar sein.
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
13.05.2021, 19:16
(Dieser Beitrag wurde zuletzt bearbeitet: 13.05.2021, 19:21 von masi1234.)
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" ??