Advanced Post Time Edit: Letzter Beitrag

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
Gigabryte
Beiträge: 12
Registriert: Do 03.Nov, 2005 12:12

Advanced Post Time Edit: Letzter Beitrag

Beitrag von Gigabryte »

Deine phpBB Version: Vanilla phpBB 2.0.17
MODs: Ja
Dein Wissensstand: Profi
Link zu Deinem Forum: [url]http://[/url]

PHP Version:
MySQL Version:


Was hast Du gemacht, bevor das Problem aufgetreten ist?



Was hast Du bereits versucht um das Problem zu lösen?




Fehlerbeschreibung und Nachricht

Hallo,

wäre fein, wenn auch das letzte Posting für die Forenübersicht bei dem Forum aktualisiert würde, wenn das geänderte post_time jünger als dessen post_time ist.

Macht sonst einen etwas inkonsistenten Eindruck ;-)

Grüße, Arno.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Forum resyncen und dann ist gut.
Man kann schliesslich nicht auf alle MODs Rücksicht nehmen ;)
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
Gigabryte
Beiträge: 12
Registriert: Do 03.Nov, 2005 12:12

Beitrag von Gigabryte »

[quote="oxpus - Mo 21.Nov, 2005 23:24";p="48905"]Forum resyncen und dann ist gut.
Man kann schliesslich nicht auf alle MODs Rücksicht nehmen ;)[/quote]

Resync hilft nicht. phpbb sortiert nach id´s und geht davon aus, dass die höchste id der letzte Beitrag ist. Außerdem könnte das nur der Admin und kein Moderator.

Für die Beiträge habe ich die Sortierung auf post_time geändert. Und in deiner edit_post_time.php ist die forum_last_post_id nach Aktualisierung der post_time noch auf die post_id des jüngsten Beitrags des betreffenden Forums zu aktualisieren. Das habe ich bei mir alles schon geändert. Ich denke aber, dass es von allgemeinem Interesse ist und du kannst das bestimmt auch eleganter, als ich. Ich bin ASP-Programmierer und nur rudimentär php.

Wieso heisst das hier eigentlich Supportforum? Oder versteh ich deinen Humor nicht, wenn du meinst ich solle dann einfach deinen MOD nicht verwenden? :confused:
Zuletzt geändert von Gigabryte am Di 22.Nov, 2005 10:33, insgesamt 1-mal geändert.
Benutzeravatar
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

phpbb sortiert nach id´s und geht davon aus, dass die höchste id der letzte Beitrag ist
Seit wann? :eek:
Also ich betreibe 3 eigene Boards und bin Moderator sowie Co. Admin in ca. 6 weiteren phpBBs. Bei allen wird in der viewtopic nach post_time sortiert. ^2
Lediglich die recent-topic Boxen (im Portal) arbeiten meistens nach der ID. :rolleyes:
versteh ich deinen Humor nicht, wenn du meinst ich solle dann einfach deinen MOD nicht verwenden?
:confused: Wo hat oxpus das denn geschrieben? ^2
Ich kann lediglich einen Hinweis darauf entdecken das er, beim erstellen von MODs, nicht alle bereits exestierenden MODs mit berücksichtigen kann.
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
Gigabryte
Beiträge: 12
Registriert: Do 03.Nov, 2005 12:12

Beitrag von Gigabryte »

Richtig, viewtopic wird auch chronologisch nach post_time sortiert aber Thema verfehlt ;-)

Thema war aber die Foren-Übersicht in der in der rechten Spalte der letzte Beitrag angezeigt wird.
Das ist nicht nur bei Portallösungen so, sondern auch im Standard-subSilver.
Der letzte Beitrag wird für die index.php der forum_last_post_id der Forums-Tabelle entnommen.

Der andere Problempunkt ist die viewforum.php, dort wird nach topic_last_post_id sortiert.

Beides hat mit keinem anderen Mod zu tun. Das Editieren der Beitragszeit stört aber die Logik von php an diesen Stellen, daher finde ich das unbedingt ändernswert.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ah, jetzt weiß ich, was Du meinst!
Klar, das ist ein dicker Fehler.
Den werde ich nachher korrigieren...
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
Gigabryte
Beiträge: 12
Registriert: Do 03.Nov, 2005 12:12

Beitrag von Gigabryte »

:bia:

den Zusatz ",wenn das geänderte post_time jünger als dessen post_time ist." möchte ich übrigens wieder streichen, denn das ist auch nicht ausreichend.
Am sichersten (und so hab ich es bei mir gemacht) ist es jedesmal den letzten Beitrag zu aktualisieren.

Dankeschön ... ^a
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Okay. Ich hoffe, es reicht so, wie ich es jetzt beschrieben habe:

Code: Alles auswählen

#
#-----[ OPEN ]-----
#
includes/functions_post.php

#
#-----[ FIND ]-----
#
	if ($topic_update_sql != '')
	{
		$sql = "UPDATE " . TOPICS_TABLE . " SET 
			$topic_update_sql 
			WHERE topic_id = $topic_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Error in posting', '', __LINE__, __FILE__, $sql);
		}
	}

#
#-----[ AFTER, ADD ]-----
#
	first_last_post_sync($post_id);

#
#-----[ FIND ]-----
#
?>

#
#-----[ BEFORE, ADD ]-----
#
function first_last_post_sync($post_id)
{
	global $db;

	$sql = "SELECT f.forum_last_post_id, f.forum_id, t.topic_first_post_id, t.topic_last_post_id, t.topic_id FROM " . FORUMS_TABLE . " f, " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
		WHERE f.forum_id = p.forum_id
			AND t.topic_id = p.topic_id
			AND p.post_id = $post_id";
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not resync last forum post id', '', __LINE__, __FILE__, $sql);
	}

	while ($row = $db->sql_fetchrow($result))
	{
		$forum_id = $row['forum_id'];
		$topic_id = $row['topic_id'];
		$forum_last_post_id = $row['forum_last_post_id'];
		$topic_first_post_id = $row['topic_first_post_id'];
		$topic_last_post_id = $row['topic_last_post_id'];
	}
	$db->sql_freeresult($result);

	if ($forum_last_post_id == $post_id)
	{
		$sql = "SELECT post_id FROM " . POSTS_TABLE . "
			WHERE forum_id = $forum_id
			ORDER BY post_time DESC
			LIMIT 1";
		if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not resync last forum post id', '', __LINE__, __FILE__, $sql);
		}

		$row = $db->sql_fetchrow($result);
		$new_last_post_id = $row['post_id'];
		$db->sql_freeresult($result);

		$sql = "UPDATE " . FORUMS_TABLE . "
			SET forum_last_post_id = $new_last_post_id
			WHERE forum_id = $forum_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not resync last forum post id', '', __LINE__, __FILE__, $sql);
		}
	}

	if ($topic_first_post_id == $post_id || $topic_last_post_id == $post_id)
	{
		$sql = "SELECT post_id FROM " . POSTS_TABLE . "
			WHERE topic_id = $topic_id
			ORDER BY post_time ASC
			LIMIT 1";
		if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not resync first topic post id', '', __LINE__, __FILE__, $sql);
		}

		$row = $db->sql_fetchrow($result);
		$new_first_post_id = $row['post_id'];
		$db->sql_freeresult($result);

		$sql = "SELECT post_id FROM " . POSTS_TABLE . "
			WHERE topic_id = $topic_id
			ORDER BY post_time DESC
			LIMIT 1";
		if (!$result = $db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not resync last topic post id', '', __LINE__, __FILE__, $sql);
		}

		$row = $db->sql_fetchrow($result);
		$new_last_post_id = $row['post_id'];
		$db->sql_freeresult($result);

		$sql = "UPDATE " . TOPICS_TABLE . "
			SET topic_first_post_id = $new_first_post_id, topic_last_post_id = $new_last_post_id
			WHERE topic_id = $topic_id";
		if (!$db->sql_query($sql))
		{
			message_die(GENERAL_ERROR, 'Could not resync first/last topic post id', '', __LINE__, __FILE__, $sql);
		}
	}

	return;
}


#
#-----[ SAVE/CLOSE ALL FILES ]-----
#
# EoM
und die angehängte Datei ersetzen.

Bearbeite danach nochmal die Zeit des betreffenden Posts und der letzte Post auf dem Index sollte korrigiert werden.
Wenn alles i.O. ist, gib bitte Laut, damit ich den MOD neu veröffentlichen kann.
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
AmigaLink
Beiträge: 5843
Registriert: Mi 03.Mär, 2004 09:05
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Thema war aber die Foren-Übersicht in der in der rechten Spalte der letzte Beitrag angezeigt wird.
Ah jetzt ja. Bild
[center].: Web Relax .::. Essen mit Freude .::. AmigaLink.de :.
______________________________________

Kein Support per PM, ICQ oder eMail!!!
[/center]
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

:!: Datei vergessen. Macht nichts, ich habe den MOD nun eh aktualisiert. Version 1.0.1 sollte damit nun auch diesen Fehler beheben.
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
Gigabryte
Beiträge: 12
Registriert: Do 03.Nov, 2005 12:12

Beitrag von Gigabryte »

oxpus hat geschrieben::!: Datei vergessen. Macht nichts, ich habe den MOD nun eh aktualisiert. Version 1.0.1 sollte damit nun auch diesen Fehler beheben.
Ohhhh, sorry.

Entweder hab ich die Benachrichtigung verpennt oder der Mailserver war im Sober-Stress und ich habe keine bekommen.
Sehe jetzt erst das Update.
Dann lade ich mir die Zip runter und schau mal was geändert ist.

many thx.
Antworten