Seite 1 von 1

Ungelesene Beiträge

Verfasst: 16.10.2013 08:39
von dieter99
Hallo,
wie erkennt phpBB, ob ungelesene Beiträge vorhanden sind?

Ich selbst vermute, dass einerseits eine Prüfung

Code: Alles auswählen

if ($user->data['user_lastmark']<$row['topic_last_post_time'])
stattfindet. 'user_lastmark' steht vermutlich für "Alle Foren als gelesen markieren". Doch lassen wir mal diese Option außen vor. Wie prüft phpBB die einzelnen Themen?

Ist es vielleicht sowas in der Richtung?

Code: Alles auswählen

if ($row['topic_last_post_time'] == $row['topic_last_view_time'])
Ich befürchte aber, dass 'topic_last_view_time' nicht userbezogen ist.

Wer kann helfen? Wie kann ich herausfinden, ob der User X die neuen Beiträge zu Thema Y schon gelesen hat?

Re: Ungelesene Beiträge

Verfasst: 16.10.2013 12:25
von Miriam
Da hast Du ja schon mal ein paar Codestellen für Lösungsansätze gefunden, die Du überprüfen kannst.

Was haben denn Deine aktiven Tests ergeben? Konntest Du Deine Theorien untermauern / bestätigen oder mußtest Du sie nach intensiven Tests verwerfen, um ggf. neue lösungsorientierte Thesen zu postulieren?

Re: Ungelesene Beiträge

Verfasst: 16.10.2013 19:16
von dieter99
Wie vermutet ist $row['topic_last_view_time'] nicht userbezogen. Dieser Wert bringt mich daher nicht weiter.

Daher nochmal meine Frage:

Wie kann ich herausfinden, ob der User X die neuen Beiträge zu Thema Y schon gelesen hat? Wo werden diese Userangaben (zu jedem einzelnen Thema) gespeichert?

Re: Ungelesene Beiträge

Verfasst: 16.10.2013 20:31
von Miriam
Ich würde Deine Aufmerksamkeit gern auf die Funktion get_unread_topics() (XRef) in der Datei /includes/functions.php lenken wollen.
Dort solltest Du Ansätze finden, die Dich der Beantwortung Deiner Frage näher bringen.

Re: Ungelesene Beiträge

Verfasst: 17.10.2013 08:58
von dieter99
Miriam hat geschrieben:Ich würde Deine Aufmerksamkeit gern auf die Funktion get_unread_topics() (XRef) in der Datei /includes/functions.php lenken wollen.
Dort solltest Du Ansätze finden, die Dich der Beantwortung Deiner Frage näher bringen.
Erst einmal Danke für die Unterstützung.

Ich muss dazu sagen das ich mich in der Datei search.php bewege (da ich die Funktion "neue Beiträge seit dem letzten Besuch" modifizieren will).

Nun, die Funktion "get_unread_topics" habe ich in search.php gefunden:

Code: Alles auswählen

else if ($search_id == 'unreadposts')
		{
			// Only return up to $total_matches_limit+1 ids (the last one will be removed later)
			$id_ary = array_keys(get_unread_topics($user->data['user_id'], $sql_where, $sql_sort, $total_matches_limit + 1));
		}
Die Topic ID aller ungelesenen Themen werden hier in ein Array gespeichert. Wenn ich jedoch von den 10 (ist nur ein BEispiel) ungelesenen Themen 1 Thema lese, dann ist die Topic ID dieses Themas immer noch in diesem Array. Ich brauche aber eine Funktion, die mir nur die restlichen 9 ungelesenen Themen auswertet.

Ich bin aber inzwischen fündig geworden (in der Datei search.php):

Code: Alles auswählen

$unread_topic = (isset($topic_tracking_info[$forum_id][$row['topic_id']]) && $row['topic_last_post_time'] > $topic_tracking_info[$forum_id][$row['topic_id']]) ? true : false;
				

Re: Ungelesene Beiträge

Verfasst: 17.10.2013 10:00
von Miriam
Supi,

dann ist das also erledigt?

Re: Ungelesene Beiträge

Verfasst: 17.10.2013 10:55
von dieter99
Miriam hat geschrieben:Supi,

dann ist das also erledigt?
Jupp 8)