MyBB.de Forum

Normale Version: PN/PM an Usergruppen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo mal wieder,

wäre es möglich eine PN/PM an eine komplette Usergruppe zu schicken?
Ich weiß nicht ob das in der Grundversion möglich ist. Aber es gibt sicherlich ein PlugIn dazu.
Wenn nicht melde dich bitte hier nochmal bei mir.
Das sollte über die Massen-Mail-Funktion im Admin-CP möglich sein.
Also über den Admin CP ist klar. Dafür gibt es auch div. Mods.

Ich meine eher, dass ein User z.b. der Gruppe1 zugeordnet ist und der kompletten Gruppe1 eine PN schicken kann?

Mod konnte ich dazu nicht finden.

Ich weiß ja auch nicht wie umfangreich das wäre?
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.
Hallo,

danke erstmal für deine Antwort.

Ich werde es bei Gelegenheit mal testen!!!