MyBB.de Forum
Wortfilter nur für bestimmte Usergruppe - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html)
+--- Thema: Wortfilter nur für bestimmte Usergruppe (/thread-37796.html)

Seiten: Seiten: 1 2


Wortfilter nur für bestimmte Usergruppe - masi1234 - 18.04.2021

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


RE: Wortfilter nur für bestimmte Usergruppe - Gerti - 18.04.2021

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


RE: Wortfilter nur für bestimmte Usergruppe - Schnapsnase - 18.04.2021

(18.04.2021, 13: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.


RE: Wortfilter nur für bestimmte Usergruppe - masi1234 - 18.04.2021

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.


RE: Wortfilter nur für bestimmte Usergruppe - Gerti - 18.04.2021

(18.04.2021, 14: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, 14: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)


RE: Wortfilter nur für bestimmte Usergruppe - Schnapsnase - 18.04.2021

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


RE: Wortfilter nur für bestimmte Usergruppe - doylecc - 18.04.2021

(18.04.2021, 12: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']); 



RE: Wortfilter nur für bestimmte Usergruppe - masi1234 - 18.04.2021

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']);
}



RE: Wortfilter nur für bestimmte Usergruppe - doylecc - 18.04.2021

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']);




RE: Wortfilter nur für bestimmte Usergruppe - masi1234 - 18.04.2021

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.