Seite 1 von 2
Anzahl aller PNs ausgeben
Verfasst: 22.07.2005 05:43
von Amaya
Hallo, ich saß die ganze Nacht daran endlich mal eine Postbox für meine Foren zu machen, wie ich sie haben wollte, leider scheitere ich an einem kleinen Detail.
Also, ich möchte gerne, dass wenn eine neue PN ankommt, das passende Bild sich ändert, soweit hab ich das auch hinbekommen, aber ich würde gerne auch daneben zusätzlich zu dem Stadarttext "Sie haben 1 neue Nachricht" auch noch angeben "Sie haben insgesamt X neue Nachrichten, y davon ungelesen." Den ungelesen Teil bekomme ich auch hin nur wie kann ich sämtliche Nachrichten, also alle schon gelesenen anrufen.
Zur Verdeutlichung, man merkt langsam an meiner Ausdrucksweise, dass ich durch gemacht habe :-/
Du hast 1 neue Nachricht.
Insgesamt hast du 5 Nachrichten, 3 davon ungelesen.
Gibt es da scho was fertiges aller {PRIVATE_MESSAGE_INFO} oder muss man das selbst noch schreiben und wenn ja, wie und wo?
Wäre sehr dankbar für Hilfe, bevor ich die nächste Nacht durchmachen muss.
Thanks Amaya
Re: Anzahl aller PNs ausgeben
Verfasst: 22.07.2005 07:31
von punkface
Also mit {PRIVATE_MESSAGE_INFO_UNREAD} kannst du schonmal ausgeben wie viel ungelesene Nachrichten ein User hat.
Hoffe das hilft schon ein bisschen weiter
edit:
Amaya hat geschrieben:Danke, aber soweit war ich auch schon
Verdammt ... ich sollte mir wirklich mal angewöhnen den ganzen Beitrag zu lesen bevor ich antworte.

;)
Verfasst: 22.07.2005 07:34
von Amaya
Danke, aber soweit war ich auch schon, mir fehlen nur noch die gelesenen, die einfach nicht so wollen wie ich.
Trotzdem danke.
Verfasst: 22.07.2005 12:56
von Mungo
Dafür sind ein paar kleine Änderungen notwendig:
includes/page_header.php
Finde:
Code: Alles auswählen
else
{
$l_privmsgs_text_unread = $lang['No_unread_pm'];
}
Danach einfügen:
Code: Alles auswählen
$sql = "SELECT COUNT(privmsgs_id) AS total
FROM " . PRIVMSGS_TABLE . "
WHERE privmsgs_to_userid = " . $userdata['user_id'] . "
AND ( privmsgs_type = " . PRIVMSGS_NEW_MAIL . "
OR privmsgs_type = " . PRIVMSGS_READ_MAIL . "
OR privmsgs_type = " . PRIVMSGS_UNREAD_MAIL . " )";
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
}
$pm_total = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
$db->sql_freeresult($result);
if ( $pm_total > 0 )
{
$l_message_total = ( $pm_total == 1 ) ? $lang['Total_pm'] : $lang['Total_pms'];
$l_privmsgs_text_total = sprintf($l_message_total, $pm_total);
}
else
{
$l_privmsgs_text_total = $lang['No_pm'];
}
Finde:
Code: Alles auswählen
else
{
$icon_pm = $images['pm_no_new_msg'];
$l_privmsgs_text = $lang['Login_check_pm'];
$l_privmsgs_text_unread = '';
$s_privmsg_new = 0;
Danach einfügen:
Finde:
Danach einfügen:
language/lang_english/lang_main.php
Finde:
Code: Alles auswählen
$lang['You_no_new_pm'] = 'No new private messages are waiting for you';
Danach einfügen:
Code: Alles auswählen
$lang['Total_pms'] = 'You have %d messages';
$lang['Total_pm'] = 'You have %d message';
$lang['No_pm'] = 'You have no messages';
language/lang_german/lang_main.php
Finde:
Code: Alles auswählen
$lang['You_no_new_pm'] = 'Es sind keine neuen privaten Nachrichten vorhanden';
Danach einfügen:
Code: Alles auswählen
$lang['Total_pms'] = 'Du hast %d Nachrichten';
$lang['Total_pm'] = 'Du hast %d Nachricht';
$lang['No_pm'] = 'Du hast keine Nachrichten';
Jetzt kannst du in jeder tpl-Datei auf die Variable {PRIVATE_MESSAGE_TOTAL} zugreifen.
Ausgabe der Variable ist (je nach Fall):
Du hast X Nachrichten
Du hast 1 Nachricht
Du hast keine Nachrichten
Wenn du den Text ändern willst einfach die Sprachvariablen anpassen.
Verfasst: 22.07.2005 16:57
von Amaya
Tausend dank, es klappt prima. Genau dieser erste Codeteil hat mir gefehlt, da wußte ich einfach nicht, wie ich ihn schreiben muss. Jetzt hab ich endlich mein kleines persönliches Postamt fertig.
Danke
Verfasst: 31.07.2005 02:59
von Amaya
Ich hab ein kleines Problem durch die Änderungen bekommen, im Adminmenü ging plötzlich die Aktion "Benutzer finden" nicht mehr, es am folgende Meldung: SQL Error : 1064 You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ( privmsgs_type = 1 OR privmsgs_type = 0
Daraufhin hab ich etwas gebastelt und deinen Code so umgeschrieben.
Code: Alles auswählen
if( !($result = $db->sql_query($sql)) )
{
}
else
{ $pm_total = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
}
Jetzt geht zwar sowohl die Ausgabe der PNs, als auch "Benutzer finden, aber ich nehme mal an, das ist nicht eben die sauberste Lösung, schließlich ist if jetzt ja nicht wirklich definiert.
Vielleicht weiß wer, wie es richtig heißen müsste, nicht das dadurch dann ein Fehler an anderer Stelle auftaucht.
Danke nochmal.
*nachobenhol*
Verfasst: 10.09.2005 18:08
von Scotty
Gibt es hier schon was neues, hab das selbe Problem...?
Verfasst: 10.09.2005 18:31
von Amaya
Also mit der Änderung, die ich oben gepostet habe funktioniert es bei mir perfekt, wo hast du denn noch Probs?
Die Änderung war übrigends für diese Stelle von Mungos Codeangabe in der page_header.php
Code: Alles auswählen
if( !($result = $db->sql_query($sql)) )
{
message_die(GENERAL_ERROR, 'Could not query private message information', '', __LINE__, __FILE__, $sql);
}
$pm_total = ( $row = $db->sql_fetchrow($result) ) ? $row['total'] : 0;
Verfasst: 11.09.2005 13:33
von Scotty
Hab’s noch nicht eingebaut, bin grade am umbauen meiner Templates, um das bei den Privaten Nachrichten übersichtlicher und moderner zu gestalten. Wollte eigentlich nur wissen was der Fachmann von oben dazu schreibt, vielleicht ist deine Lösung ja nicht optimal, auch wenn sie funktioniert

?
@Mungo, kannst du da nicht mal schauen…?
Verfasst: 11.09.2005 15:36
von Mungo
Das Problem war, dass ich eine falsche Position beim ersten "Finde" angeben hatte.

Frag mich nicht warum. Ich habe meinen Beitrag oben editiert. Ich habe noch ein $db->sql_freeresult($result) eingefügt und die Variable $l_privmsgs_text_total ist im else-Teil leer.