Freischalten der Beiträge von unregistrierten Benutzern. (German / Deutsch)

by Igomeniza, Monday, July 05, 2021, 21:48 (998 days ago)

Seit über 15 Jahren betreibe ich ein Forum mit der Software von mylitleforum. Es ist ein offenes Forum. Jeder kann ohne Anmeldung schreiben. Das verleitet Manche das Forum mit unsachlichen Dingen zuzumüllen. Ich schalte dann immer wieder mal auf "nur Registrierte können Einträge machen". Leider gibt es penetrante Menschen die nur darauf lauern, dass wieder alle schreiben können.

Dadurch blockiere ich aber Leute, die sinnvolle Beiträge bringen, sich aber nicht registrieren wollen.

Ein Lösung wäre die Möglichkeit, dass Beiträge von Nichtregistierten nicht sofort erscheinen, sondern erst nach manueller Freischaltung.

Diese Funktion scheint es in mylitleforum nicht zu geben.

Eigentlich müsste es doch in der Datenbank nur ein Flag geben, ob ein Beitrag sichtbar ist, oder nicht. Bei Beiträgen von Nichtregistrierten wird dieses Flag gesetzt. Der Admin, Moderator lässt sich dann eine Liste der noch nicht freigegebenen Beiträge anzeigen und löscht entweder das Flag, oder verwirft den Beitrag.

Möglich wäre auch Beiträge von Nichtregistrierten automatisch einer Kategorie "nicht sichtbar" zuzuordnen.

Ist so eine Funktion angedacht? Wenn nicht, würde ich versuchen so etwas einzubauen. Nützliche Hinweise sind natürlich Willkommen, wie man das verwirklichen kann.

Bei den Foren von Parsimony gab es diese Funktion.

Igomeniza

Avatar

Freischalten der Beiträge von unregistrierten Benutzern.

by Micha ⌂, Tuesday, July 06, 2021, 06:57 (997 days ago) @ Igomeniza

Hallo,

soweit ich das sehe, müsste man lediglich die posting.inc.php leicht modifizieren. Derzeit kann die Einstellung entries_by_users_only nur zwei Werte annehmen (0 oder 1). Dieser Variablen könnte man noch eine weiter Option spendieren (z.B. 0, 1 und 2).

  • 0 == Nur registrierte Nutzer
  • 1 == Alle Nutzer
  • 2 == Alle Nutzer aber unregistrierte müssen Freigeschalten werden


Es gibt derzeit nur drei Stellen, an denen der Inhalt von entries_by_users_only abgefragt und ausgewertet wird. Die dortigen Bedingungen müssten leicht angepasst werden, sodass alle drei Fälle abgedeckt werden. Das könnte bspw. so aussehen. Statt

$settings['entries_by_users_only'] != 0

könntest Du explizit testen:

$settings['entries_by_users_only'] == 1

oder, und so würde ich es vermutlich eher machen, Du überlegst Dir eine Alternative bspw. mit in_array, d.h.,

!in_array(array(0, 2), $settings['entries_by_users_only'])

(Jetzt ist der Fall, dass $settings['entries_by_users_only'] einen invaliden Wert enthält wie bspw. 42 auch mit abgefangen)

Zusätzlich sollten neue Postings von unregistrierten Nutzern gesperrt sein. Dies bedeutet, dass die Variable $locked um Zeile 1028 entsprechend gesetzt werden muss beim speichern eines neuen Postings, d.h.,

// Akismet *OR* B8 flagged entry as SPAM
$spam = $akismet_spam == 1 || $b8_spam == 1 ? 1 : 0;
$locked = $spam == 0 ? 0 : 1;
$locked = $locked || !isset($_SESSION[$settings['session_prefix'] . 'user_id']) && $settings['entries_by_users_only'] == 2;

Zusätzlich müsste man im Adminbereich die Option natürlich noch konfigurierbar machen. Für einen Test würde es aber reichen, wenn man den Wert einfach in der DB entsprechend auf 2 setzt.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

Freischalten der Beiträge von unregistrierten Benutzern.

by Igomeniza, Tuesday, July 06, 2021, 16:20 (997 days ago) @ Micha

Vielen Dank für die Hilfe. Auf die schnelle werde ich die Spamabfrage so ändern, dass Beiträge immer als Spam eingestuft werden. In den Einstellungen kann man ja festlegen, dass die Spamprüfung nur für nichtregistrierte gilt. Als Admin oder Moderator sehe ich die Spameinträge und kann sie freischalten, oder löschen.

Wenn ich mehr Zeit habe, werde ich mich um eine saubere Lösung kümmern.

Nochmals vielen Dank
Igomeniza

Funktioniert einwandfrei

by Igomeniza, Thursday, July 08, 2021, 20:51 (995 days ago) @ Micha

Da ich den Betreff nachträglich nicht ändern konnte (zuviele Links), hier nochmal.

Ich habe das über die Spamfunktion verwirklicht. Die Spamfunktion hat nie richtig funktioniert, so dass sie leicht entbehrlich ist. Beiträge von Unregistrierten werden immer als Spam eingetragen. Am Ende der Spamprüfung in der posting.inc.php habe ich
$spam = 1;
$spam_check_status = 1;
eingetragen.

Die Texte habe ich geändert. Statt dem Hinweis auf Spam kommt jetzt eine Mitteilung, dass der Beitrag noch freigeschaltet werden muss. Und als Admin oder Mod sieht das so aus.
[image]

Im wartenden Beitrag sieht das dann so aus.
[image]

Was mir jetzt noch fehlt ist eine Benachrichtigung, wenn ein Beitrag als "Spam" markiert wurde. Das Forum kann ja Mails verschicken. Ich habe nur noch nicht gefunden wo. es müsste einfach nur eine Mail gesendet werden mit der Nachricht, dass ein Beitrag wartet. Auslösen könnte ich es genau dort, wo ich den Beitrag als "Spam" markiere, wie oben gezeigt.

Hat vielleicht Jemand einen Tip? Schon mal vielen dank für Hinweise.

Avatar

Benachrichtigung per Email bei SPAM-Einträgen

by Micha ⌂, Friday, July 09, 2021, 08:48 (994 days ago) @ Igomeniza

Hallo Igomeniza,

Was mir jetzt noch fehlt ist eine Benachrichtigung, wenn ein Beitrag als "Spam" markiert wurde. Das Forum kann ja Mails verschicken. Ich habe nur noch nicht gefunden wo.

Die Email-Benarichtigung steht etwas weiter unten. Im aktuellen Script ist dies ab Zeile 1084ff zu finden. Hier siehst Du den Aufruf von zwei Funktionen. Dieser erfolgt aber nur, wenn der Beitrag nicht als SPAM gekennzeichnet wurde. Wenn es Dir reicht - und davon gehe ich aus - dass nur Admins/Mods diese Benachrichtigung bekommen, solltest Du nur die zweite if-Bedingung modifizieren.

Viele Grüße
Micha

--
applied-geodesy.org - OpenSource Least-Squares Adjustment Software for Geodetic Sciences

RSS Feed of thread