Private Messages CC an admin?

Begonnen von johho, 30 Juni 2003, 14:40:40

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

johho

Hiho!

Ich möchte gerne eine Funktion einbauen, wonach alle zwischen den Usern verschickten PM's cc als Kopie auch  an den Admin gehen... habe im PM Modul schon fleissig gesucht, habs bis lang aber nicht hinbekommen... Kann mir jemand einen tipp geben, welche Datei ich dafür wie verändern muss??


Sascha1981

Was hat das für einen sinn wenn ich alls admin die ganzen PM`s der Mitglieder auch erhalte?

johho

Das hat denn Sinn, das ich als Admin über das Spielgeschehen immer informiert bin und die Spieler nicht extra alles doppelt schreiben müssen.

Hierzu sollte vielleicht gesagt werden, das das VKP mit Eboard bei mir nicht als "normales" Portal, sondern als Grundsystem für ein online PBEM&F Rollenspiel verwendet wird. Die PM's dienen hier also nicht primär zur privaten Kommunikation, sondern gehören zum Spielgeschehen dazu.


jubilee

Hallo !
Versuch mal das :
Datei /modules/Private_Messages/index.php :
Ab Zeile 380:
 
Zitat$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
   $qry .= "VALUES ('".$arrpostdata["image"]."', '".$arrpostdata["subject"]."', ".$uid.", ".$to_userid.", now(), '".$message."')";
ersetzen durch :
 
Zitat$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
   $qry .= "VALUES ('".$arrpostdata["image"]."', '".$arrpostdata["subject"]."', ".$uid.", ".$to_userid.", now(), '".$message."')";
$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
   $qry .= "VALUES ('".$arrpostdata["image"]."', '".$arrpostdata["subject"]."', ".$uid.", 'xxxxxx', now(), '".$message."')";

und ersetzt xxxxxx durch den Wert Deiner Admin-UserID (höchstwarscheinlich 2)
Das funktioniert aber wohl nur, wenn du zum Admin auch einen User
mit gleichem Namen bei der Erstanmeldung erstellt hast
MfG
jubilee

[Editiert am 30/6/2003 von SiteAdmin jubilee]

johho

Also bei mir funtzt gar net... d.h. die PM versendet zwar, aber nur eine und keine cc an mich... :(

johho

Also, wenn ich zuerst die 2 orginalzeilen habe, dann die 2 zeilen in denen die uid des Admin gesetzt ist, dann sendet er alle PMs NUR an den admin, nicht an die eigentliche Zielperson.

Wenn ich zuerst die 2 Zeilen mit dem Admin, danach die normalen Zeilen einsetze, dann sendet er NUR an das Zielmember, NICHT an den Admin.

D.h. nur die jeweils letzte Adresse wird verwendet. ist auch eigentlich logisch weil ja die variablen $qry  und $qry.  direkt hintereinander 2 mal gesetzt werden, darum nimmt er dann immer nur die letzte..
Man müsste die ganze schleife irgendwie doppelt ausführen mit einer anderen variable.. ich mach mich da mal ran...

johho

...irgendwie raff ich die funktionen da nicht.. ich bin aber auch kein php crack...

Ich verstehe die beiden variablen $qry und $qry. ... wo aber wird denn jetzt das schreiben der variablen in die DB ausgelöst? genau dieses Auslösen müsste man dann doppelt machen... kann mir da wer nen tipp geben der mehr ahnung von php hat als ich?

johho

Also die Frage nochmal konkretisiert:

WO genau wird WIE ausgelöst, das $qry in die DB geschrieben wird?


jubilee

Jepp, da Fehlt noch etwas dazwischen   ;)
So muss das später aussehen :
 
Zitat$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
$qry .= "VALUES ('".$arrpostdata["image"]."', '".$arrpostdata["subject"]."', ".$uid.", ".$to_userid.", now(), '".$message."')";
if(!$result = sql_query($qry, $dbi))
{
   prvmsgerror(_ERRMSGNOSUBMIT);
}
$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
$qry .= "VALUES ('".$arrpostdata["image"]."', '".$arrpostdata["subject"]."', ".$uid.", 'xxxxxx', now(), '".$message."')";
if(!$result = sql_query($qry, $dbi))
{
   prvmsgerror(_ERRMSGNOSUBMIT);
}
Also das If  (!result ..... in der Mitte zwischen den beiden query's einbauen.
An ende steht es ja eh
das war es, was noch fehlte
MfG
jubilee

[Editiert am 1/7/2003 von SiteAdmin jubilee]

johho

Cool. jetzt gehts...

kannste mir das mal erklären, warum die IF Zeile da rein muss?

Ich versteh immer gerne, was ich mache ;)

wäre cool, wenn du mir das mal kurz erklären könntest..

jubilee

Klar .
if(!$result = sql_query($qry, $dbi))
{
prvmsgerror(_ERRMSGNOSUBMIT);
}
Das bedeutet:
$qry = deine Befehle an die Datenbank (insert into .....
$dbi = Daten für den Verbindungsaufbau zur Datenbank
           (dbusername,pass etc...
$result = variable zum speichern des Rückgabewertes
If (!$result = wenn $result nicht logisch 1 ist ----->
sql_query($qry, $dbi)) = nach dem schreiben in die Datenbank --->
prvmsgerror(_ERRMSGNOSUBMIT = gebe diese Fehlermeldung aus .
$result ist immer logisch 1 wenn die aktion geklappt hat .

Na, alles klar ?
MfG
jubilee


[Editiert am 1/7/2003 von SiteAdmin jubilee]

johho

Aaaahhh... DANKE!!! Jetzt hab ichs gerafft...

Und da das nur einmal drinstand, hat ers auch nur einmal gemacht..

OK, ich baue jetzt noch ein paar Features dazu, die ich noch für nötig halte, und dann poste ich hier das komplette, damits auch andere nutzen können!

Vielen Dank nochmal!

johho

Kann mir jemand erklären, wie ich aus $to_userid und $uid  die passenden Usernamen herausbekommen kann?

Also die entsprechende Abfrage?


jubilee

Hallo !

SELECT uname FROM ".$user_prefix."_users WHERE uid = '$uid'

MfG
jubilee

johho

hm.. und wie bau ich das in eine PHP Zeile das er mir das dann macht?


johho

also so, das ich danach eine variable z.b. $username habe in der der entsprechende username drinsteht?

jubilee

Hihi, also doch mehr als nur die Abfrage  ;)

 
Zitat$query="SELECT uname FROM ".$user_prefix."_users WHERE uid = '$uid'" ;
$username=sql_fetch_row( sql_query($query, $dbi) ,$dbi) ;
Ich denke, so geht es.
MfG
jubilee

[Editiert am 1/7/2003 von SiteAdmin jubilee]

johho

Danke dir... aber das Ergebniss dieser Variable ist ein Array... d.h. $username ist nicht der Username, sondern ein Array... wie krieg ich da jetzt den Uname raus?

jubilee

Hallo !

In $username['0'] steht das Ergebnis
Falls mehr als ein Ergebnis kommt (nicht in diesem Fall) dann aufsteigend
$username[0], $username[1], $username[n].
Du solltest Dir mal die PHP-Doku runterladen.
Dann brauchst Du nicht immer solang auf die Antwort warten.
 ;)
MfG
jubilee

Future


jubilee

Hallo !
Für den Einstieg reicht diese bestimmt --->
 //www.selfphp.info

MfG
jubilee

johho

Sooo.. da bin ich wieder.. hier wie versprochen der Code:

(einfach in der /privatemessages/index.php ab Zeile 390 einfügen)

 
Zitat/*####################################Johho Hack PM CC an Admin############################*/
// Absendername auslesen

$query="SELECT uname FROM ".$user_prefix."_users WHERE uid = '$uid'" ; // Username aus DB auslesen anhand von UID
$userfromname=sql_fetch_row( sql_query($query, $dbi) ,$dbi) ;  // Den Usernamen der Variablen $Userfromname zuordnen

// Zielname auslesen

$query="SELECT uname FROM ".$user_prefix."_users WHERE uid = '$to_userid'" ; // Username aus DB auslesen anhand von to_userid
$usertoname=sql_fetch_row( sql_query($query, $dbi) ,$dbi) ;  // Den Usernamen der Variablen $Usertoname zuordnen

// erneute PM an Admin Senden

$adminid="2";   // hier die Userid eingeben, der die PM als CC bekommen soll!!

$qry = "INSERT INTO ".$prefix."_priv_msgs (msg_image, subject, from_userid, to_userid, msg_time, msg_text) ";
$qry .= "VALUES ('".$arrpostdata["image"]."', 'CC von  ".$userfromname["0"]." an ".$usertoname["0"]." Betreff:".$arrpostdata["subject"]."', ".$uid.", ".$adminid.", now(), '".$message."')";

//CC Sendung nur wenn Absender- oder Zieladresse nicht gleich Adminadresse
if ($to_userid != $adminid and $uid != $adminid){
   if(!$result = sql_query($qry, $dbi))
   {
   prvmsgerror(_ERRMSGNOSUBMIT);
   }
}
/*#####################################Johho Hack CC an Admin Ende###########################*/

Features:
- Der Admin bekommt alle PM's, die NICHT an ihn direkt oder von ihm adressiert sind, als CC, mit Angabe von Wem an Wen und mit welchem Betreff diese versand worden sind. Der Adminaccount kann per Variable eingestellt werden.

Ich werd das ganze jetzt noch für replys einbauen, das werd ich aber erst morgen schaffen..

Also, danke schon mal für eure Hilfe und Tipps, ohne die ich das nicht hinbekommen hätte ;)


Kritik und Anregungen erwünscht! ;)

NACHTRAG:
Kann mir mal einer erklären, wieso ich quoten muss, damit der code nicht formatiert wird?? wenn ich code und /code verwende, dann sind unerwünschte Zeilenumbrüche drin, bei quote nicht.. für was brauch ich dann code????


[Editiert am 2/7/2003 von johho]