wäre das für Euch evtl. auch hilfreich, wie im Thread "Meldung privater Nachrichten" von mir vorgeschlagen, wenn es hier ein Subforum gäbe, wo Beiträge nur von TEs und Mods+Admins Beiträge lesen können? Sinn dessen ist, das sowohl für Benutzer, als auch Moderatoren und Admins die Anfragen zentral hier im Forum gespeichert werden. Wenn das ganze über PNs oder E-Mails verteilt ist, ist dass alles viel "flüchtiger".
Das bräuchte dann eine zu schreibende phpBB-Extension, wobei mir natürlich klar ist, dass das so ganz und gar ungerne gesehen wird, weil es möglicherweise Zusatzarbeit für die Administration (Updates!) mit sich bringt, als auch in Bezug auf Performance gut gestaltet sein muss. Insofern natürlich alles unter der Prämisse, dass die Extension sehr gewissenhaft und umsichtig umgesetzt wird, so dass der Fall von Zusatzarbeit möglichst ausgeschlossen wird, auch Möglichkeit des Nichtfunktionierens des Plugins bei Upgrade berücksichtigt wird und die Performance nur sehr geringfügig beeinträchtigt wird.
Eine einfache, unvollständige Funktionsdemo, die den Zweck zeigt, habe ich mal umgesetzt:
Siehe:
https://demoboard1.megabert.de
User-Account: myuser
Passwort: blub123
Moderator-Account: mymod
Passwort: blub123
Für das Subforum "Anfragen an die Moderation" ist diese Funktionalität gesetzt. Das Subforum ist für Gäste unsichtbar. Der Benutzer myuser, darf Beiträge erstellen und seine eigenen Beiträge einsehen. Der Benutzer mymod darf alles sehen.
Das ist die Erweiterung der SQL-Abfrage, die die Beiträge aus der Datenbank zieht in viewforum.php (phpBB 3.3.10):
Code: Alles auswählen
$ diff -Nru viewforum.php.orig viewforum.php
--- viewforum.php.orig 2023-04-06 21:59:41.007479352 +0200
+++ viewforum.php 2023-04-06 22:01:37.071982331 +0200
@@ -648,16 +648,53 @@
$sql_where = (count($get_forum_ids)) ? $db->sql_in_set('t.forum_id', $get_forum_ids) : 't.forum_id = ' . $forum_id;
}
+#
+# sql addition to get only topics where the current user is the topic_starter or mod/admin
+#
+# details:
+# - check if an entry in the extension table exists for the current subforum
+# - if yes:
+# - check if the enabled attribute is set to 1 (=enabled)
+# - if yes:
+# - select only topics where topic_poster matches current_logged in user user_id
+# OR user is in group 4 (global moderators) or 5 (administrators)
+#
+#
+#
+
+$sql_filter_creator = " AND (
+ NOT EXISTS ( SELECT t.forum_id = ecp.forum_id )
+ OR (
+ t.forum_id = ecp.forum_id
+ AND ecp.enabled != 1
+ )
+ OR (
+ t.forum_id = ecp.forum_id
+ AND ecp.enabled = 1
+ AND ( t.topic_poster = ".$user->data['user_id']."
+ OR EXISTS (
+ select user_id from ". $table_prefix."user_group"
+ ." WHERE user_id = ".$user->data['user_id']
+ ." AND ( group_id = 4 OR group_id = 5 )
+ )
+ )
+
+ )
+ )";
+
// Grab just the sorted topic ids
$sql_ary = array(
'SELECT' => 't.topic_id',
'FROM' => array(
TOPICS_TABLE => 't',
+ $table_prefix."ext_creatorpriv" => 'ecp',
),
'WHERE' => "$sql_where
AND t.topic_type IN (" . POST_NORMAL . ', ' . POST_STICKY . ")
$sql_approved
- $sql_limit_time",
+ $sql_limit_time
+ $sql_filter_creator",
'ORDER_BY' => 't.topic_type ' . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order,
);
Nachtrag: Es gibt ein unfertiges, liegengebliebenes Plugin als mögliche Basis für diese Funktionalität:
https://www.phpbb.com/customise/db/exte ... erstopics/