Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
Hallo,
ich suche einen Wortfilter, den man auf eigens ausgewählte Usergruppen anwenden kann. Der Wortfilter, der in MyBB von Haus aus eingebaut ist, wird auf alle Usergruppen angewendet.
Ich habe dieses Problem nun Teilweise lösen können, indem ich in der Datei
inc/class_parser.php
die Zeilen
Code:
if(!empty($this->options['filter_badwords']))
durch
Code:
if(!empty($this->options['filter_badwords']) AND ($mybb->usergroup['gid'] == 2))
ersetzt habe.
Funktioniert auch, es werden alle badwords in den Postings
ersetzt, und zwar nur für Usergruppe 2, für die anderen Usergruppen nicht.
Das Problem: In den
Titeln der Postings werden die badwords weiterhin für alle Usergruppen ersetzt. Wo müsste ich die Bedingung
AND ($mybb->usergroup['gid'] == 2)
einbauen, damit badwords auch den Titeln nur für Usergruppe 2 ersetzt werden?
LG
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
18.04.2021, 14:48
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2021, 14:48 von Gerti.)
Der gesuchte Syntax ist beinhaltet in:
./inc/class_parser.php
> // Filter bad words if requested. > ca. Zeile 132
> // Filter bad words if requested. > Ca. Zeile 1974
./inc/functions_post.php
> case 1: // Message preview > ca. Zeile: 76
> case 2: // Private message > ca. Zeile: 88
> case 3: // Announcement > ca. Zeile 99
> default: // Regular post > Ca. zeile 112
./inc/agreement.php
> // Set up MyCode parser options > ca. Zeile 1435
> // Set up MyCode parser options > ca. Zeile 1771
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [
Unixzeit ⇔ Realzeit] ♦ [
BOM-Finder] ♦ [
SQL-Prefix-Changer] ♦ [
USV-Rechner] ♦ [
PlugIns]
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
(18.04.2021, 14:48)Gerti schrieb: Der gesuchte Syntax ist beinhaltet in:
./inc/agreement.php
> // Set up MyCode parser options > ca. Zeile 1435
> // Set up MyCode parser options > ca. Zeile 1771
Hierbei handelt es sich allerdings wohlbemerkt um eine Plugin-Datei.
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
Danke soweit.
In ./inc/functions_post.php habe ich also die besagten 4 Zeilen mit
Code:
$parser_options['filter_badwords'] = 1;
und ./inc/agreement.php gibt's in meinem Filesystem nicht.
Was muss ich mit diesen 4 Zeilen machen? Ich habe sie mal durch
Code:
$parser_options['filter_badwords'] = ($mybb->usergroup['gid'] == 2);
ersetzt, hat aber nichts geändert.
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
18.04.2021, 16:03
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2021, 16:05 von Gerti.)
(18.04.2021, 15:31)masi1234 schrieb: und ./inc/agreement.php gibt's in meinem Filesystem nicht.
Wie Schnapsnase bereits mitteilte, ist handelt es sich hierbei um ein PlugIn. Sorry das ich dies versehentlich mit aufführte.
(18.04.2021, 15:31)masi1234 schrieb: Ich habe sie mal durch
Code:
$parser_options['filter_badwords'] = ($mybb->usergroup['gid'] == 2);
ersetzt, hat aber nichts geändert.
Eventuell:
Code:
$parser_options['filter_badwords'] && ($mybb->usergroup['gid'] == 2);
?
(Sicherlich ein Fall für die PHP-Profis)
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [
Unixzeit ⇔ Realzeit] ♦ [
BOM-Finder] ♦ [
SQL-Prefix-Changer] ♦ [
USV-Rechner] ♦ [
PlugIns]
Beiträge: 2.229
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
Wie Du im Parser unschwer erkennen kannst, wirkt der Filter nur auf URL`s und Messages.
Der Threadtitel ist nicht einbezogen.
Hier hilft also nur ein Plugin oder eine eigene Anpassung der inc/class_parser.php
Beiträge: 2.039
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
(18.04.2021, 13:36)masi1234 schrieb: Das Problem: In den Titeln der Postings werden die badwords weiterhin für alle Usergruppen ersetzt. Wo müsste ich die Bedingung
AND ($mybb->usergroup['gid'] == 2)
einbauen, damit badwords auch den Titeln nur für Usergruppe 2 ersetzt werden?
Titel werden in der Datei inc/functions_post.php durch den Wortfilter geschickt:
PHP-Code:
// Dont want any little 'nasties' in the subject
$post['subject'] = $parser->parse_badwords($post['subject']);
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
18.04.2021, 17:02
(Dieser Beitrag wurde zuletzt bearbeitet: 18.04.2021, 17:12 von masi1234.)
Müsste ich da eine if-Anweisung einführen? Wie müsste der Code dafür aussehen?
Als ich die Zeile einfach durch
Code:
$post['subject'] = $parser->(parse_badwords($post['subject']) && ($mybb->usergroup['gid'] == 2));
ersetzt habe, hab ich mir gleich mal einen Syntax-Fehler eingehandelt.
Nachtrag:
Code:
// Dont want any little 'nasties' in the subject
if($mybb->usergroup['gid'] == 2)
{
$post['subject'] = $parser->(parse_badwords($post['subject']));
}
hatte leider auch nur einen Syntax-Error zur Folge.
Nachtrag Nr. 2: Syntax-Error behoben, aber leider keine Lösung des eigentlichen Problems:
Code:
// Dont want any little 'nasties' in the subject
if($mybb->usergroup['gid'] == 2)
{
$post['subject'] = $parser->parse_badwords($post['subject']);
}
Beiträge: 2.039
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
Beachte auch, dass mit der Abfrage von $mybb->usergroup['gid'] die Gruppe desjenigen abgefragt wird, der den Beitrag liest.
Für die Gruppe des Beitragerstellers müsste dessen Gruppe abgefragt werden:
PHP-Code:
// Dont want any little 'nasties' in the subject
if($post['usergroup'] == 2)
{
$post['subject'] = $parser->parse_badwords($post['subject']);
}
Beiträge: 100
Themen: 13
Registriert seit: 19.04.2020
Es soll eh die Gruppe des Lesenden abgefragt werden. Aber mein Code funktioniert aus irgendeinem Grund nicht: Die badwords werden in den Titeln weiterhin auch für Soll-Leseberechtigte ersetzt.