Profile Guestbook New Message Info

Allgemeiner Support zum phpBB 2 Board und phpBB 2 Modifikationen
Forumsregeln
Auch wenn hier der Support für phpBB 2 weiterhin aufrecht erhalten bleibt, weisen wir darauf hin, dass das phpBB 2 nicht mehr offiziell unterstützt und weiterentwickelt wird!
Antworten
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Profile Guestbook New Message Info

Beitrag von Darezettl »

es geht um den mod: http://sourceforge.net/project/showfile ... _id=160329


so, ich will dass eine nachricht an den user dessen gästebuch es ist ausgegeben wird, wenn eine oder mehr nachrichten in sein gästebuch geschrieben werden.


dies hätte ich so gemacht


page_header.php

finde:

Code: Alles auswählen

if ( ($userdata['session_logged_in']) && (empty($gen_simple_header)) )
{
danach einfügen:

Code: Alles auswählen

	if ( $userdata['user_new_piic'] )
	{
		$l_piic_message_new = ( $userdata['user_new_piic'] == 1 ) ? $lang['New_piic'] : $lang['New_piics'];
		$l_piic_text = sprintf($l_piic_message_new, $userdata['user_new_piic']);
	}
	else
	{
		$l_piic_text = $lang['Platzhalter'];
	}
finde

Code: Alles auswählen

'PRIVMSG_IMG' => $icon_pm,
danach einfügen

Code: Alles auswählen

'PIIC_MESSAGE_INFO' => $l_piic_text, // piic
öffne: portal_body.tpl
irgendwo einfügen

Code: Alles auswählen

{PIIC_MESSAGE_INFO}
öffne: lang_main.php
irgendwo einfügen

Code: Alles auswählen

$lang['New_piics'] = '%d neue GB-Einträge';
$lang['New_piic'] = 'Ein neuer GB-Eintrag';
$lang['Platzhalter'] = ' ';
öffne: usercp_viewprofile.php
finde:

Code: Alles auswählen

include($phpbb_root_path . 'includes/functions_guestbook.'.$phpEx);
danach einfügen

Code: Alles auswählen

$sql = "UPDATE " . USERS_TABLE . " 
	SET user_new_piic = 0
	WHERE user_id = " . $profiledata['user_id']; 
if ( !$status = $db->sql_query($sql) ) 
{ 
	message_die(GENERAL_ERROR, 'Could not update gb message new/read status for user', '', __LINE__, __FILE__, $sql); 
}
öffne: functions_guestbook.php
finde:

Code: Alles auswählen

			$pid = $userdata['user_id'];
			if($mode != 'edit')
			{

				//In version 0.0.4, one new field!
				$sql = "INSERT INTO ".PROFILE_GUESTBOOK_TABLE." (user_id,poster_id,bbcode,title,message,gb_time,user_guest_name) VALUES 
				(".$this->uid.",$pid,'$bbcode','$ti','$me','".time()."','$username');";
			}
			else
			{
				$id = intval($HTTP_GET_VARS['gb_id']);
				if(empty($id)){
					message_die(GENERAL_ERROR,$lang['gb_no_id'],"",__LINE__,__FILE__);
				}
				$sql = "UPDATE ".PROFILE_GUESTBOOK_TABLE." SET 
				bbcode = '$bbcode', title = '$ti', message = '$me' WHERE gb_id = $id";
			}
			$r = $db->sql_query($sql);
			if(!$r)
			{
				message_die(GENERAL_ERROR,"Could not insert or update user guestbook!","",__LINE__,__FILE__,$sql);
			}
danach einfügen:

Code: Alles auswählen

	$sql = "UPDATE " . USERS_TABLE . " 
		SET user_new_piic = user_new_piic + 1
		WHERE user_id = " . $this->uid . "
		AND user_id <> " . $userdata['user_id'];
	if ( !$status = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not update gb message new/read status for user', '', __LINE__, __FILE__, $sql);
	}
Das Feld in der DB habe ich mit dieser Datei angelegt:

Code: Alles auswählen

<?php
/***************************************************************************
 *                               db_update.php
 *                            -------------------
 *
 *   copyright            : ©2003 Freakin' Booty ;-P & Antony Bailey
 *   project              : http://sourceforge.net/projects/dbgenerator
 *   Website              : http://freakingbooty.no-ip.com/ & http://www.rapiddr3am.net
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//


if( !$userdata['session_logged_in'] )
{
	$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: ';
	header($header_location . append_sid("login.$phpEx?redirect=db_update.$phpEx", true));
	exit;
}

if( $userdata['user_level'] != ADMIN )
{
	message_die(GENERAL_MESSAGE, 'You are not authorised to access this page');
}


$page_title = 'Updating the database';
include($phpbb_root_path . 'includes/page_header.'.$phpEx);

echo '<table width="100%" cellspacing="1" cellpadding="2" border="0" class="forumline">';
echo '<tr><th>Updating the database</th></tr><tr><td><span class="genmed"><ul type="circle">';


$sql = array();
$sql[] = "ALTER TABLE " . $table_prefix . "users ADD COLUMN user_new_piic SMALLINT(5) UNSIGNED DEFAULT '0' NOT NULL";

for( $i = 0; $i < count($sql); $i++ )
{
	if( !$result = $db->sql_query ($sql[$i]) )
	{
		$error = $db->sql_error();

		echo '<li>' . $sql[$i] . '<br /> +++ <font color="#FF0000"><b>Error:</b></font> ' . $error['message'] . '</li><br />';
	}
	else
	{
		echo '<li>' . $sql[$i] . '<br /> +++ <font color="#00AA00"><b>Successfull</b></font></li><br />';
	}
}


echo '</ul></span></td></tr><tr><td class="catBottom" height="28">&nbsp;</td></tr>';

echo '<tr><th>End</th></tr><tr><td><span class="genmed">Installation is now finished. Please be sure to delete this file now.</span></td></tr>';
echo '<tr><td class="catBottom" height="28" align="center"><span class="genmed"><a href="' . append_sid("index.$phpEx") . '">Have a nice day</a></span></td></table>';

include($phpbb_root_path . 'includes/page_tail.'.$phpEx);

?>


So, es kommt keine Fehlermeldung, aber die Nachricht dass ein oder mehrere GB-Einträge gemacht wurden, kommt auch nicht.



WARUM?
Zuletzt geändert von Darezettl am So 18.Feb, 2007 01:40, insgesamt 1-mal geändert.
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Fangen wir mal oben an:

Code: Alles auswählen

$l_piic_text = $lang['Platzhalter'];
wäre einfacher durch

Code: Alles auswählen

$l_piic_text = '';
ersetzbar, dann sparst Du Dir den Eintrag in der lang_main.php.

Code: Alles auswählen

$l_piic_message_new = ( $userdata['user_new_piic'] == 1 ) ? $lang['New_piic'] : $lang['New_piics'];
Muss dabei allerdings zwangsweise zum Fehler führen, denn Du hast in der lang_main.php hier keinen zweiten Platzhalter in $lang['New_piic'], bzw, $lang['New_piics'] definiert ;)
Überhaupt wäre diesen Zeilen in einer einzigen besser dargestellt:

Code: Alles auswählen

$l_piic_text = ($userdata['user_new_piic']) ? sprintf($lang['New_piics'], $userdata['user_new_piic']) : $lang['New_piic'];
Von einer Darstellung der Poster würde ich hierbei aber vollig absehen (ich weiß, daß hier gleich ein Einwand kommt, daher der Vorgriff), denn dazu müsstest Du eine separate Tabelle führen, die eben genau diese User mitführt und beim Anzeigen des Profiles wieder leert. Ein wirklich unnötiger Schritt, sieht der User doch in seinem Gästebuch auch, wer zuletzt gepostet hat ;)

Und zuletzt: Wenn der Text nur im Portal angezeigt werden soll (dort hast Du ihn ja auch eingefügt), warum dann den Code anstelle in der page_header.php nicht gleich in der portal.php eingefügt??? :D

So.
Und zuletzt fügst Du in der functions_guestbook.php den Code an der falschen Stelle ein, nämlich nach einem Edit ODER einem neuen GB-Eintrag.
Soll der User wirklich auch über jedes Edit informiert werden?
Wenn ja, dann lass es so (der Hinweistext ist dann aber unpassend), ansonsten muss der Code besser nach

Code: Alles auswählen

          if($mode != 'edit')
         { 
eingefügt werden.

Last but not least würde ich nun dann prüfen, ob nach einem Gästebucheintrag auch das Feld "user_new_piic" nicht mehr 0 ist. Dann wäre die Reaktion darauf fehlerhaft, den Text darzustellen.
Ansonsten müsste man nochmal die richtige Stelle finden, an der der Zähler zu setzen wäre...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

Muss dabei allerdings zwangsweise zum Fehler führen, denn Du hast in der lang_main.php hier keinen zweiten Platzhalter in $lang['New_piic'], bzw, $lang['New_piics'] definiert
Versteh ich nicht. Was für ein Platzhalter?
Meinst du das %d ?

Das gibt eben die Anzahl der neuen Gb-Einträge aus wenn mehr als einer gemacht wurde.
Wenn nur ein neues vorhanden ist, ist es ja nicht nötig.

Von einer Darstellung der Poster würde ich hierbei aber vollig absehen (ich weiß, daß hier gleich ein Einwand kommt, daher der Vorgriff), denn dazu müsstest Du eine separate Tabelle führen, die eben genau diese User mitführt und beim Anzeigen des Profiles wieder leert.
Versteh ich ebenfalls nicht.
Was für eine Darstellung der Poster?

In dem Info Text wird doch bloß die Anzahl der neuen Gb Einträge ausgegeben.

Ansonsten müsste man nochmal die richtige Stelle finden, an der der Zähler zu setzen wäre...
Und die wäre wo?



Ich hab mir schon eine Funktion gebaut, die ein PopUp erscheinen lässt wenn der User einen neuen GB Eintrag bekommen hat, und die hab ich an die selbe stelle in der functions_guestbook.php gesetzt und die geht wunderbar.

Ich hab die Datei mal angehangen... also wo muss dass jetzt hin dass die neuen Gb Einträge richtig gezählt werden?

Code: Alles auswählen

user_new_piic = der info text
user_new_album_img2 = das popup

... nur dass du dich auskennst in der Datei! ;)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Versteh ich nicht. Was für ein Platzhalter?
Der, mit dem Du versucht hat, den Usernamen einzubinden!
In den Texten ist nur EIN Platzhalter vorhanden und auch nur dann, wenn mehr als 1 Eintrag gesetzt sein soll, daher meine Änderung an der Bedingung, um den Fehlern hier vorzubeugen. Denn es werden hier nur die Anzahl Einträge im Text ersetzt ;)
Das gibt eben die Anzahl der neuen Gb-Einträge aus wenn mehr als einer gemacht wurde.
Wenn nur ein neues vorhanden ist, ist es ja nicht nötig.
Eben, aber der User fehlt dann immer noch ;)
Was für eine Darstellung der Poster?
Wenn Du im Text anzeigen wolltest, welcher User einen Eintrag gemacht hat.
Das zumindest wäre bei Dir so zu schlussfolgern, wenn Du auch in den Hinweistexten den jeweiligen Usernamen angeben wolltest (DEINE Version der Bedingung in der page_header.php!!!).
Ansonsten müsste man nochmal die richtige Stelle finden, an der der Zähler zu setzen wäre...
Und die wäre wo?
Genau das wäre dann ja erst noch herauszufinden, ich hatte das ja auch nur erst einmal in den Raum gestellt :hh:
Ich hab mir schon eine Funktion gebaut, die ein PopUp erscheinen lässt wenn der User einen neuen GB Eintrag bekommen hat, und die hab ich an die selbe stelle in der functions_guestbook.php gesetzt und die geht wunderbar.
Und warum lässt Du dann auch nicht gleich zählen, wie oft das passiert ist und mit anzeigen?
Warum dann noch einen 2. Text dafür erstellen, der dann auch noch nicht einmal funktioniert, wie gedacht?

*dasnichtwirklichversteht*

Es ist doch bereits das Popup vorhanden, da kann man dann den text doch auch darstellen.
Man, ist das wieder alles unnötig kompliziert..... :(
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

Der, mit dem Du versucht hat, den Usernamen einzubinden!
In den Texten ist nur EIN Platzhalter vorhanden und auch nur dann, wenn mehr als 1 Eintrag gesetzt sein soll, daher meine Änderung an der Bedingung, um den Fehlern hier vorzubeugen. Denn es werden hier nur die Anzahl Einträge im Text ersetzt
Hi, also ich hab nicht versucht den Usernamen einzubinden in den Message Text, jedenfalls nicht gewollt. ^^ Kannst du mir sagen, wo das sein soll in meinem Code?

Das zumindest wäre bei Dir so zu schlussfolgern, wenn Du auch in den Hinweistexten den jeweiligen Usernamen angeben wolltest (DEINE Version der Bedingung in der page_header.php!!!).
Wie gesagt, will ich ich nicht.
In den Hinweis Texten soll einfach stehen "Du hast x neue Gb Einträge", sonst nichts.

Und warum lässt Du dann auch nicht gleich zählen, wie oft das passiert ist und mit anzeigen?
Warum dann noch einen 2. Text dafür erstellen, der dann auch noch nicht einmal funktioniert, wie gedacht?

*dasnichtwirklichversteht*

Es ist doch bereits das Popup vorhanden, da kann man dann den text doch auch darstellen.
Achso? Das ginge auch dieses bestehende DB-Feld dafür zu nehmen?
Und wie?
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hi, also ich hab nicht versucht den Usernamen einzubinden in den Message Text, jedenfalls nicht gewollt. ^^ Kannst du mir sagen, wo das sein soll in meinem Code?
Okay, nach 2. Betrachtung war das ein Irrtum. Sorry, vergessen wir den Punkt. Der Code muss aber dennoch nach meiner Vorgabe geändert werden, sonst kann dennoch zu einem Fehler kommen.
Wie gesagt, will ich ich nicht.
In den Hinweis Texten soll einfach stehen "Du hast x neue Gb Einträge", sonst nichts.
Ja, abgehakt...
Achso? Das ginge auch dieses bestehende DB-Feld dafür zu nehmen?
Und wie?
Das Feld ist wie definiert? Wenn es ...INT ist, dann numerisch und damit kann man auch dort 0, 1, +1, etc. setzen ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

also ich hab nochmal nachgedacht und das schon angelegte feld kann man dafür nicht nehmen, weil cih will dass die nachriicht so kange stehen bleibt bis der user in seinem gästebuch war.
dies wiederrum gibt einen konflikt mit dem popup, weil dort die db-tabelle gleich auf wieder 0 gesetzt wird wenn es einmal erschienen ist.
das popup soll nur einmal kommen, die nachricht soll stehen bleiben bis der user in sein gb egschaut hat.

wenn ich den code der das popup nachdem es einmal erschienen ist aus der page entfernen würde, würde zwar meine nachricht stehen bleiben bis der user im gästebuch war, aber auf jeder seite des forums wo der user davor hinsurft das popup wieder kommen.

es braucht also ein zweites feld ind er db!


ist es vielleicht ein problem dass die wzei anweisungen direkt hintereinanderstehen?
gehts deswegen nicht?

kann man die irgendwie ineinader verschmelzen oder so?

Code: Alles auswählen

	// piic
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_new_piic = user_new_piic + 1
		WHERE user_id = " . $this->uid . "
		AND user_id <> " . $userdata['user_id'];
	if ( !$status = $db->sql_query($sql) )
	{
		message_die(GENERAL_ERROR, 'Could not update gb message new/read status for user', '', __LINE__, __FILE__, $sql);
	}
	// piic
		$sql = "UPDATE " . USERS_TABLE . "
			SET user_new_album_img2 = 1
			WHERE user_allow_new_img_popup2 = 1
			AND user_id = " . $this->uid . "
			AND user_id <> " . $userdata['user_id'];
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not update popup status for new gb entry', '', __LINE__, __FILE__, $sql);
		}

--> edit: ich hätts mal so probiert, aber das geht nicht.

Code: Alles auswählen

	// piic
	$sql = "UPDATE " . USERS_TABLE . "
		SET user_new_piic = user_new_piic + 1
		WHERE user_id = " . $this->uid . "
		AND user_id <> " . $userdata['user_id'] . "
			SET user_new_album_img2 = 1
			WHERE user_allow_new_img_popup2 = 1
			AND user_id = " . $this->uid . "
			AND user_id <> " . $userdata['user_id'];
	if (!$db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not update gb message new/read status for user', '', __LINE__, __FILE__, $sql);
	}
		// piic
Zuletzt geändert von Darezettl am So 18.Feb, 2007 15:11, insgesamt 4-mal geändert.
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

dies wiederrum gibt einen konflikt mit dem popup, weil dort die db-tabelle gleich auf wieder 0 gesetzt wird wenn es einmal erschienen ist.
Nur, wenn man das nicht ändert ;)
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

hehe ;)
... und wie würde das gehen? wie muss der code aussehen? ....
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

[quote="Darezettl";p="70072"]hehe ;)
... und wie würde das gehen? wie muss der code aussehen? ....[/quote]

Wie wäre es mit: Abfrage finden und löschen?
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

Ich kriegs nicht gebacken.
Ich werd hier noch wahnsinnig udn hab langsam echt keine Lust mehr.

Ich hab dir anbei die 2 dateien angehängt, wenn du magst besser mirs aus.
ich kann jetzt schön langsam kein ultraedit-32 mehr sehen. ^^


user_new_album_img2 = das popup
user_new_album_img3 = der benachrichtigungstext
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Bild
Life begins @ 1/1000
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

ich kann jetzt schön langsam kein ultraedit-32 mehr sehen. ^^
Dann mach mal ne Pause und morgen wieder frisch ans Werk.

Sorry, aber ich kann auch nicht ständig Deine Probleme lösen, dafür fehlt mir die Zeit.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Darezettl
Beiträge: 589
Registriert: So 31.Jul, 2005 23:43

Beitrag von Darezettl »

mei.. jezt gehts!
weißt was war?

der code, der in der functions_guestbook.php den zähler wieder auf null setzen sollte wenn der user dem das gb gehört reinschaut, hats auf null gesetzt wenn irgendjemand auf sein gästebuch geklickt hat.
und da nach dem absenden des posts man automatisch wieder ins gb geleitet wird hat sich der zähler immer gleich auf 0 wieder gesetzt und deswegen kam dann natürlich auch nie der info text. ^^


oh man.. so einfach aber doch so schwer draufzukommen. ^^
Bild
Life begins @ 1/1000
Antworten