Suche Nutzer, deren letzter Beitrag > ... zurückliegt

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Benutzeravatar
sepp71
Mitglied
Beiträge: 919
Registriert: 23.12.2006 00:03

Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Beitrag von sepp71 »

Hallo Experten,
meine Suche nach einer Mod. für befristete Gruppenmitgliedschaften war bislang nicht erfolgreich.
Darum würde ich nun versuchen wollen, das Thema zu Fuß per SQL-Browser anzugehen - habe nur leider keine Ahnung von MySQL. :oops:
Ich suche eine Abfrage, die mir folgendes liefert:
Alle User, deren letzter Beitrag zur Forum-ID Nr. X länger als Y Wochen zurückliegt.
Ausgabe der User-IDs wäre ok, Name ein Traum :)

Falls es die Sache vereinfacht, würde auch gehen:
Alle Mitglieder der Gruppe Z, deren letzter Beitrag zur Foren-ID X länger als Y Wochen zurückliegt.

Könnte mir freundlicherweise jemand auf die Sprünge helfen?

Hintergrund:
Nur Mitglieder der Gruppe Z können das Forum sehen und dort schreiben.
Wer sich länger als Y Wochen nicht an der Diskussion beteiligt, soll aus der Gruppe herausgenommen werden.

Ich würde das dann alle paar Wochen von Hand im ACP erledigen.
Vielen Dank für einen guten Tipp!

Sepp
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Re: Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Beitrag von Pyramide »

Zum manuellen überprüfen:

Code: Alles auswählen

SELECT u.user_id, u.username, count(p.post_id) AS anzahl_beitraege, from_unixtime(max(p.post_time)) AS letzter_beitrag
FROM phpbb_users u
JOIN phpbb_user_group ug ON (u.user_id = ug.user_id)
JOIN phpbb_groups g ON (g.group_id = ug.group_id)
LEFT JOIN phpbb_posts p ON (p.poster_id = u.user_id AND p.forum_id IN(X))
WHERE g.GROUP_ID IN(Z)
GROUP BY u.user_id, u.username
ORDER BY max(p.post_time) ASC
Oder nur die Benutzer, die vor innerhalb der letzten Y Wochen nichts gepostet haben:

Code: Alles auswählen

SELECT u.user_id, u.username
FROM phpbb_users u
JOIN phpbb_user_group ug ON (u.user_id = ug.user_id)
JOIN phpbb_groups g ON (g.group_id = ug.group_id)
LEFT JOIN phpbb_posts p ON (p.poster_id = u.user_id AND p.forum_id IN(X) AND from_unixtime(p.post_time) > NOW() - INTERVAL Y WEEK)
WHERE g.GROUP_ID IN(Z)
GROUP BY u.user_id
HAVING max(p.post_time) IS NULL
Wenn du die Benutzer allerdings automatisch per Script aus der Gruppe entfernen willst, solltest du bedenken, dass du dann möglicherweise Benutzer entfernst, die gerade erst (wieder) in die Gruppe aufgenommen wurden und deshalb noch keinen aktuellen Beitrag geschrieben haben.
KB:knigge
Benutzeravatar
sepp71
Mitglied
Beiträge: 919
Registriert: 23.12.2006 00:03

Re: Suche Nutzer, deren letzter Beitrag > ... zurückliegt

Beitrag von sepp71 »

Super!!

Das sieht ja hervorragend aus und wird gleich ausprobiert.
Herzlichen Dank, Pyramide!!
Vielen Dank auf für den Zusatztipp für meinen logischen Knick bei den ganz frischen Gruppenmitgliedern, ich werde ihn beherzigen.

Sepp

Edit 16:00 Uhr:
Der Test ist hervorragend gelaufen - vielen Dank dafür, Pyramide!

@verschiebung in die Mod-Bastelstube
Ich persönlich werde es allerdings nicht schaffen, daraus eine richtige Mod. zu machen - mir reicht die o.a. MySQL-Abfrage.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“