Bei abonnierten Threads Fehler in Email

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
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Bei abonnierten Threads Fehler in Email

Beitrag von Overhead »

Hallo,

Wenn sich ein Unser einen Thread abonniert - dann bekommt er normalerweise eine Email wenn ein neuer Beitrag im Thread geschrieben wurde - das ist soweit auch noch in Ordnung - Der Link der in der Email steht weisst auch auf den richtigen Beitrag hin - allerdings steht dann ein völlig anderes Topic als Referenz drin (eins das garnicht abonniert wurde).

Hat jemand schon einmal einen deratigen Fehler gehabt - und falls ja wie behebt man den?

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Öhm, vergleiche doch mal die Funktion user_notification in Deiner functions_posts.php mit dem Original.
Vielleicht ist da was auffällig anders/falsch...
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus,

ich hatte schon befürchtet, dass so etwas ähnliches kommt - da die emhrfach gemoddet wurde entspricht die natürlich an einigen Stellen nicht mehr dem Original...

ich bin mal so frei und tacker die unten ran - da ich keinen Plan habe auf welche Stellen ich achten muss...

cu Overhead
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ist denn die Funktion bereits stark abweichend vom Original?
Einfach mal Stück für Stück mit der Original-Datei vergleichen, dann siehst Du schon den Unterschied.

Wenn ich das jedes Mal machen sollte, müsste mein Tag 48 Stunden und mehr haben...
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus

oh ja das sind sie:

Original:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_email, u.user_lang 
				FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u 
				WHERE tw.topic_id = $topic_id 
					AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
					AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
					AND u.user_id = tw.user_id";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
			}

Meine Version:

Code: Alles auswählen

	$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
				FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
				WHERE tw.topic_id = $topic_id 
					AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
					AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
					AND u.user_id = tw.user_id";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
			}
und das war nur mal eine Stelle...

zusätzlich hätte ich noch folgendes anzubieten....

Original

Code: Alles auswählen


// translators update their templates
						$emailer->msg = preg_replace('#[ ]?{USERNAME}#', '', $emailer->msg);

						$emailer->assign_vars(array(
							'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
							'SITENAME' => $board_config['sitename'],
							'TOPIC_TITLE' => $topic_title, 

							'U_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id",
							'U_STOP_WATCHING_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_TOPIC_URL . "=$topic_id&unwatch=topic")
						);



Meine Version

Code: Alles auswählen


// translators update their templates
						$emailer->msg = preg_replace('#[ ]?{USERNAME}#', '', $emailer->msg);

						$emailer->assign_vars(array(
							'EMAIL_SIG' => (!empty($board_config['board_email_sig'])) ? str_replace('<br />', "\n", "-- \n" . $board_config['board_email_sig']) : '',
							'SITENAME' => $board_config['sitename'],
                            'USERNAME' => $users_ary[$bcc_list['0']],
							'TOPIC_TITLE' => $topic_title,
							'POST_TEXT' => $post_text,
							'POSTERNAME' => $post_data['username'],
							'FORUM_NAME' => $forum_name,

							'U_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_POST_URL . "=$post_id#$post_id",
							'U_STOP_WATCHING_TOPIC' => $server_protocol . $server_name . $server_port . $script_name . '?' . POST_TOPIC_URL . "=$topic_id&unwatch=topic")
						);

Wenn ich das richtig zuordnen könnte dann hätte ich bestimmt nicht hier nachgefragt - kleinere Dinge bekomme ich schon irgendwie mittlerweile selber gebacken - nur das ist mir eine Hausnummer zu groß! - Aber vielleicht kann ja auch jemand anderes aus diese illusteren Forum etwas damit anfangen - und mir mal vermitteln wo da der Haken ist?.

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Nun, der erste Code-Block, der von Dir ist, sollte mal wieder durch das Original ersetzt werden, denn dort werden Datensätze erzeugt, die alles mögliche hervorbringen könnten.
Eben Chaos.
Denn: In dieser Abfrage wird die Forum-Tabelle mit herangezogen, aber nicht mit den anderen Tabellen verknüpft.
Logische Unlogik eben...
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ oxpus

störst Du Dich an der FORUMS_TABLE ?

die benötige ich z.B. hier:

Code: Alles auswählen

// start of reply forum notification
            $sql = "SELECT u.user_id, u.user_email, u.user_lang, f.forum_name
				FROM " . USERS_TABLE . " u, " . FORUMS_WATCH_TABLE . " fw, " . FORUMS_TABLE . " f
				WHERE fw.forum_id = $forum_id
					AND fw.user_id NOT IN (" . $already_mailed . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . " )
					AND f.forum_id = $forum_id
					AND f.forum_notify = '1'
					AND u.user_id = fw.user_id";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
			}
und hier:

Code: Alles auswählen

sql = "SELECT u.user_id, u.username, u.user_email, u.user_lang, f.forum_name
				FROM " . FORUMS_WATCH_TABLE . " fw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
				WHERE fw.forum_id = $forum_id
					AND fw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ")
					AND f.forum_id = $forum_id
					AND f.forum_notify = '1'
					AND u.user_id = fw.user_id";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain list of forum watchers', '', __LINE__, __FILE__, $sql);
			}
wenn ich also hier wie von Dir vorgeschlagen:

Code: Alles auswählen

		$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
				FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
				WHERE tw.topic_id = $topic_id 
					AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
					AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
					AND u.user_id = tw.user_id";
			if (!($result = $db->sql_query($sql)))
			{
				message_die(GENERAL_ERROR, 'Could not obtain list of topic watchers', '', __LINE__, __FILE__, $sql);
			}
abändere - dann haut es mir den Rest zusammen, da ja hier einiges aufeinander aufbaut.

Von der Reihenfolge her kommt zuerst die letzten Code Zeilen, dann die ersten und dann die zweiten. - Zu meinem Leidwesen muss ich gestehen, dass ich am Anfang als ich mit der Mod des Forums angefangen habe, mir leider keine besonderen Gedanken über die einzelne Mods gemacht habe und je nach Userwunsch so ziemlich alles eingabut habe, was unsere Teilnehmer als besonderes Gimmick gewünscht haben. Dadurch weichen viele Codestellen erheblich vom Original ab und mit einer vernüftigen Dokumentation zu meinen Einbaumaßnahmen habe ich viel zu spät angefangen - mittlerweile etwas klüger geworden - schreibe ich die Änderungen alle auf egal nun ob man mir dabei geholfen hat oder ist selbst dran gedreht habe - denn nur so kann ich mittlerweile annähernd nachvollziehen was die einzelne Mod den überhaupt soll.

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

und je nach Userwunsch so ziemlich alles eingabut habe, was unsere Teilnehmer als besonderes Gimmick gewünscht haben.
Schwerer Fehler.
Klar will man seinen Users was bieten, aber alles zusammen ist nicht immer sinnvoll.

Und ich meinte diesen Code-Block:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
			FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
			WHERE tw.topic_id = $topic_id 
				AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
				AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
				AND u.user_id = tw.user_id";
Hier hast Du zwar die Foren-Tabelle mit angegeben, aber in den Bedingungen ist diese nirgends mit irgend einer andere Tabelle verknüpft!
Daher kann es hier zu unerwarteten Ergebnissen kommen, wie Du dann auch vermutlich in den Email-Benachrichtigungen hast.
Besser verknüpfen, also so wäre das möglich:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
			FROM " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
			WHERE tw.topic_id = $topic_id 
				AND tw.forum_id = f.forum_id
				AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
				AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
				AND u.user_id = tw.user_id";
Zeile 4 ist hier neu...
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ oxpus

Danke für Deine Mühe - das werde ich gleich mal testen.

Wie Du gesehn hast, war es wohl mal wieder so dass ich den Wald vor lauter Bäumen nicht mehr gesehen habe.

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Kann ich verstehen.
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus


jetzt habe ich nachdem ich die Zeile wie von Dir beschrieben eingefügt habe, ein Problem mit der Schnellantwort:

Wenn ich auf absenden klicke kommt folgende Meldung:
Could not obtain list of topic watchers
jetzt bin ich aber etwas verwirrt - was hat das eine mit dem anderen zu tun?

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Poste mal die gesamte Fehlermeldung und häng die functions_posts.php an.
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus

Das war die vollständige Meldung ich habe nur den Haeder mit: Allgemeiner Fehler weggelassen.

Um es einfacher zu machen häng ich mal die alte und die neue ran.

cu Overhead
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Schalte besser mal den Debug Modus ein (in der includes/constants.php) und poste die vollständige Fehlermeldung.
Dann sehe ich auch, wo ich suchen muss.
Sonst ist das reines Rätzel raten!
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

So besser?
Could not obtain list of topic watchers

DEBUG MODE

SQL Error : 1054 Unknown column 'tw.forum_id' in 'where clause'

SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name FROM phpbb_topics_watch tw, phpbb_users u, phpbb_forums f WHERE tw.topic_id = 430 AND tw.forum_id = f.forum_id AND tw.user_id NOT IN (2, -1) AND tw.notify_status = 0 AND u.user_id = tw.user_id

Line : 756
File : functions_post.php
cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Gibt es in dieser Tabelle das Feld forum_id? Sonst müssten wir auch noch mit der Topic-Tabelle verknüpfen...
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus

Du meinst die phpbb_topics_watch ?

dort gibt es nur topic_id; user_id und notify_status

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Hm, okay, dann muss die Abfrage so lauten:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
			FROM " . TOPICS_WATCH_TABLE . " t, " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
			WHERE tw.topic_id = $topic_id 
				AND tw.topic_id = t.topic_id 
				AND t.forum_id = f.forum_id
				AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
				AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
				AND u.user_id = tw.user_id";
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

Funktioniert so nicht:
Could not obtain list of topic watchers

DEBUG MODE

SQL Error : 1054 Unknown column 't.forum_id' in 'where clause'

SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name FROM phpbb_topics_watch t, phpbb_topics_watch tw, phpbb_users u, phpbb_forums f WHERE tw.topic_id = 430 AND tw.topic_id = t.topic_id AND t.forum_id = f.forum_id AND tw.user_id NOT IN (2, -1) AND tw.notify_status = 0 AND u.user_id = tw.user_id

Line : 757
File : functions_post.php
cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

:hh:
Hat einer mal einen Holzhammer für mich???

So ists richtig:

Code: Alles auswählen

$sql = "SELECT u.user_id, u.user_email, u.user_lang, u.username, f.forum_name 
			FROM " . TOPICS_TABLE . " t, " . TOPICS_WATCH_TABLE . " tw, " . USERS_TABLE . " u, " . FORUMS_TABLE . " f
			WHERE tw.topic_id = $topic_id 
				AND tw.topic_id = t.topic_id 
				AND t.forum_id = f.forum_id
				AND tw.user_id NOT IN (" . $userdata['user_id'] . ", " . ANONYMOUS . $user_id_sql . ") 
				AND tw.notify_status = " . TOPIC_WATCH_UN_NOTIFIED . " 
				AND u.user_id = tw.user_id";
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

WOW - Danke - das funktioniert!

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Na sag ich doch ;)
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!
Benutzeravatar
Overhead
Beiträge: 205
Registriert: Do 13.Sep, 2007 14:37

Beitrag von Overhead »

@ Oxpus

genau und manchmal hift das Bild

cu Overhead
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

:bofl:
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!
Antworten