Anzahl aller PNs ausgeben

Alles zu Styles, Templates, Icons und Smilies für phpBB 2.0, sowie allgemeine Designfragen zur Integration von phpBB in bestehende Websites.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Anzahl aller PNs ausgeben

Beitrag 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
Benutzeravatar
punkface
Mitglied
Beiträge: 3579
Registriert: 12.08.2004 23:37

Re: Anzahl aller PNs ausgeben

Beitrag 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. :-?;)
Zuletzt geändert von punkface am 22.07.2005 08:28, insgesamt 2-mal geändert.
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag von Amaya »

Danke, aber soweit war ich auch schon, mir fehlen nur noch die gelesenen, die einfach nicht so wollen wie ich.

Trotzdem danke.
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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:

Code: Alles auswählen

	$l_privmsgs_text_total = '';
Finde:

Code: Alles auswählen

	'PRIVATE_MESSAGE_NEW_FLAG' => $s_privmsg_new,
Danach einfügen:

Code: Alles auswählen

	'PRIVATE_MESSAGE_TOTAL' => $l_privmsgs_text_total,
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.
Zuletzt geändert von Mungo am 11.09.2005 15:31, insgesamt 1-mal geändert.
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag 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
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag 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.
Benutzeravatar
Scotty
Mitglied
Beiträge: 1451
Registriert: 15.06.2005 03:54
Wohnort: Neuruppin
Kontaktdaten:

*nachobenhol*

Beitrag von Scotty »

Gibt es hier schon was neues, hab das selbe Problem...?
Scotty's .NET Projekte: StarTrek Infos X10, e-hahn Updater 3.10, Easy Desktop Note 1.06
Benutzeravatar
Amaya
Mitglied
Beiträge: 150
Registriert: 08.12.2004 02:02

Beitrag 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;
Benutzeravatar
Scotty
Mitglied
Beiträge: 1451
Registriert: 15.06.2005 03:54
Wohnort: Neuruppin
Kontaktdaten:

Beitrag 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…?
Scotty's .NET Projekte: StarTrek Infos X10, e-hahn Updater 3.10, Easy Desktop Note 1.06
Benutzeravatar
Mungo
Administrator
Administrator
Beiträge: 6613
Registriert: 03.05.2003 19:34

Beitrag 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.
Antworten

Zurück zu „phpBB 2.0: Styles, Templates und Grafiken“