Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.27 veröffentlicht (22.06.21)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Wortfilter nur für bestimmte Usergruppe
#1
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
Zitieren
#2
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
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.27 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#3
(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.
Zitieren
#4
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.
Zitieren
#5
(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)
Jammer nicht rum ...Du musst (k/m)eine Hilfe (nicht) annehmen!
MyBB: 1.8.27 | PHP: 7.4.19 | SQL: 5.7.34
Tools [Unixzeit ⇔ Realzeit] ♦ [BOM-Finder] ♦ [301] ♦ [SQL-Prefix-Changer] ♦ [USV-Rechner]
Zitieren
#6
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
Zitieren
#7
(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']); 
Zitieren
#8
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']);
}
Zitieren
#9
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']);

Zitieren
#10
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.
Zitieren


Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Wortfilter Nr. 2 masi1234 16 775 15.05.2021, 10:31
Letzter Beitrag: masi1234
  Usergruppe - Link rausnehmen... funtions.php? Cabeswater 2 636 19.07.2019, 17:25
Letzter Beitrag: Cabeswater
  Bei Registrierung automatisch Usergruppe zuordnen regaddi 2 946 16.03.2017, 20:55
Letzter Beitrag: regaddi
  Usergruppe -> Thread farbig KaSo 33 4.358 28.11.2016, 20:37
Letzter Beitrag: MrBrechreiz
  Usergruppe + ForenID Abfrage TelCont@r 15 2.360 01.06.2014, 18:25
Letzter Beitrag: MrBrechreiz