Ich habe das vor längerem realisiert, indem ich die Gruppe als Buddie angelegt habe.
Mein Ansinnen war, dass sich alle Admins untereinander Rund-PNs schicken können, ohne in den Admin CP zu müssen.
Man kann das für beliebige Absender und Gruppen ändern.
Es erscheint nämlich die gewünschte Gruppe in einem Auswahlmenü unterhalb des Eingabefeldes für den PN-Betreff.
Man wählt die Gruppe aus und die geschriebene PN wird an alle Mitglieder der Gruppe verschickt.
Ich bin kein Programmierer, ich habe es halt so gemacht, wie es funktioniert.
Ich habe folgende Änderungen vorgenommen:
In der private.php, um den "Buddie" im Auswahlmenü einzublenden,
HINTER
PHP-Code:
if($mybb->user['receivepms'] != "no" && $buddy['receivepms'] != "no" && $buddy['canusepms'] != "no") { $buddies .= "<option value=\"$buddy[username]\">$buddy[username]</option>\n"; }
}
einfügen:
PHP-Code:
if ($mybb->user['usergroup'] == 4) {
$buddies .= "<option value=\"admins\">Admins(Rund-PN)</option>\n";}
Erklärung zu obigem Befehl:
"4" = gehört der User der Gruppe an, an die er eine PN schicken will (4 = Admins) ? Wenn ja, Buddie-Eintrag einblenden.
"admins" = Variable für den Usernamen, den wir admins nennen,
obwohl kein User dieses Namens in der Datenbank exisitiert
"Admins(Rund-PN)" = der sichtbare Eintrag in der Auswahlliste
Da das Script einen User namentlich abarbeitet und keine Gruppe,
habe ich einen Empfänger reingemogelt, deshalb in die private.php VOR
PHP-Code:
$query = $db->query("SELECT u.uid, u.username, u.email, u.usergroup, u.pmnotify, u.pmpopup, u.receivepms, u.ignorelist, u.lastactive, u.language, COUNT(pms.pmid) AS pms_total, g.canusepms, g.pmquota, g.cancp FROM (".TABLE_PREFIX."users u, ".TABLE_PREFIX."usergroups g) LEFT JOIN ".TABLE_PREFIX."privatemessages pms ON (pms.uid=u.uid) WHERE u.username='".addslashes($mybb->input['to'])."' AND g.gid=u.usergroup GROUP BY u.uid");
einfügen:
PHP-Code:
if (($mybb->user['usergroup'] == 4) and ($mybb->input['to'] == "admins")) {
$mybb->input['to'] = "XXXX"; // XXXX = Einen registr. Usernamen einfügen, z. B. Gruppenleiter
$pn_an_admins = "1";
}
Zu oben: Die Variable $mybb->input['to'] die eigentlich den Empfänger-Usernamen enthält
und jetzt den nicht existenten User "admins" transportiert,
bekommt einen existierenden Usernamen zugewiesen.
Dafür bekommt die Variable $pn_an_admins die Information,
dass eine Rundmail an die Admins geschickt werden soll (=1).
Dieser kleine Befehl in der private.php schreibt die PN in die Datenbank:
PHP-Code:
$db->insert_query(TABLE_PREFIX."privatemessages", $newpm);
Dahinter einfügen:
PHP-Code:
include 'pn_an_admins.php';
Der obige Befehl lädt eine externe Datei, die man im Root-Verzeichnis anlegt
(mit den üblichen Sicherheitsabfragen drin) und dem Script:
PHP-Code:
if (($mybb->user['usergroup'] == 4) and ($pn_an_admins=="1")) {
$query1 = $db->query("SELECT uid from ".TABLE_PREFIX."users WHERE usergroup ='4' and uid <> '1' and uid <>'".$mybb->user['uid']."'");
// '1' ersetzen durch uid des Users XXXX, dessen Usernamen man eingetragen hatte
while($pn_an_admin = $db->fetch_array($query1))
{
$newpm['toid'] = $pn_an_admin['uid'] ;
$newpm['uid'] = $pn_an_admin['uid'];
$db->insert_query(TABLE_PREFIX."privatemessages", $newpm);
}
}
Damit wird die PN in die Datenbank geschrieben, für alle User in der Gruppe 4 (Admins),
nicht jedoch an User XXXX, der hat nämlich schon einen DB-Eintrag,
sonst hätte er zwei PNs.
Außerdem nicht an den absendenden User $mybb->user['uid'],
damit der sich nicht selbst eine PN schickt
(kann man ändern, falls der User zur Sicherheit eine Kopie bekommen soll).
Mit entsprechenden Änderungen kann man mehrere Gruppen-Buddies
und passende externen Dateien anlegen, auch für sekundäre Gruppen.
Deshalb habe ich die externe Dateien included,
d. h. das letzte Script nicht in die private.php eingefügt,
was man aber machen könnte.
Das ist das erste Mal, das ich sowas erkläre, ich bitte um Nachsicht.