[request] gelesen/ungelesen (über DB-only) Hack

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
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
Henne
Ehemaliges Teammitglied
Beiträge: 4520
Registriert: 04.01.2002 01:00
Wohnort: Lage (Lippe)
Kontaktdaten:

Beitrag von Henne »

Also bei mir läuft die MOD in einem 2.0.6 problemlos.

Installation, naja, für mich war es nicht schwer.
Aber mach vorher nen Backup und du bist auf der sicheren Seite.

Glaube nicht, dass der EMC ist...
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag von Nico Haase »

Henne hat geschrieben:Also bei mir läuft die MOD in einem 2.0.6 problemlos.
Fein....
Henne hat geschrieben:Installation, naja, für mich war es nicht schwer.
Kannst du eine ungefähre Zeitangabe machen....?
mfg
Nico
Buchtips.net bietet mehr als 2500 Buchrezensionen
ThrillHousE
Mitglied
Beiträge: 11
Registriert: 27.10.2003 20:41
Kontaktdaten:

Beitrag von ThrillHousE »

Das ist der Thread den ich seit tagen suche!
ich hab mein board von 2.0.4 1.0+ auf 2.0.6 1.3+ geupdated und vermisse ich das mit den gelesenen beitraegen. irgendwie war das bei mir ab 2.0 standardmaessig drinne, deswegen versteh ich nicht warum es wieder wech ist.

gibts da den was aktuell funktionierendes fuer 2.0.6? ich waere ober gluecklich wenn das wieder funzen wuerde. meine user jammern schon wie verrueckt und ich weiss nimmer weiter!

thx 4 replies
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

gibts da den was aktuell funktionierendes fuer 2.0.6?
wenn Henne sagt das geht, dann geht das ;)
wenn du dein board auf die plus version geupdated hast, wirst du ja sicher nur die datenbank behalten und die dateien überschrieben haben. dann ist der mod natürlich auch weg.
unverändert würde der UPITDB-MOD nicht mit dem hierarchie mod zusammenarbeiten.
ich setz mich bei gelegenheit mal hin und versuch ein kleines workaround zu basteln, weil ich den einen auch habe und den anderen möchte :D
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Dr. Love hat geschrieben:...Analog geht das auch für die Zahl in Klammern. Da fehlt nur noch die Subtraktion der Posts, die der User nicht lesen kann...
Ist schwer genug! Aber hier die Lösung, um die Anzahl der neuen Posts incl. der Userberechtigungen zu errechnen:

In index.php nach

Code: Alles auswählen

//
// End session management
//
Folgendes einfügen

Code: Alles auswählen

if( $userdata['session_logged_in'] )
{
	$sql = "SELECT * FROM ". FORUMS_TABLE;
	if (!$result = $db->sql_query($sql))
	{
		message_die(GENERAL_ERROR, 'Could not query forums information', '', __LINE__, __FILE__, $sql);
	}
	$forum_data = array();
	while( $row = $db->sql_fetchrow($result) )
	{
		$forum_data[] = $row;
	}

	$is_auth_ary = array();
	$is_auth_ary = auth(AUTH_ALL, AUTH_LIST_ALL, $userdata, $forum_data);
	for ($i = 0; $i < count($forum_data); $i++)
	{
		if (($is_auth_ary[$forum_data[$i]['forum_id']]['auth_read']) or ($is_auth_ary[$forum_data[$i]['forum_id']]['auth_view']))
		{
			if ($auth_forum_id == '')
			{
				$auth_forum_id = $forum_data[$i]['forum_id'];
			}
			else
			{
				$auth_forum_id .= ',' . $forum_data[$i]['forum_id'];
			}
		}
	}

   $p=0;
   $jetzt_vor_einem_monat = time() - 2592000;
   $sql = "SELECT count(p.post_id)
   	  FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r
      ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ")
      WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL)
         AND p.post_time > " . $jetzt_vor_einem_monat . "
         AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )
         AND p.forum_id IN (" . $auth_forum_id . ")
      ORDER BY p.topic_id DESC, p.post_id DESC";
   if ( $result = $db->sql_query($sql) )
   {
		$p = $db->sql_fetchrow($result);
   }
   $countposts = ( $p[0] == 1 ) ? $lang['Post'] : $lang['Posts'];
   $lang['Search_new'] = ( $p[0] == 0 ) ? $lang['Search_new'] : $lang['New_for_user'] . " " . $p[0] . " " . $countposts;

}
Das Geheimnis liegt darin, erstmal alle Foren zusammenzustellen, die der User einsehen darf. Ist kaum zu verstehen, daher hab ich das an anderer Stelle mal geklaut. Die dann folgende Integration in die Abfrage der Postanzahl ist ein Kinderspiel.

Ach ja: Den in diesem Topic bereits geposteten Code für die Anzahl der neuen Beiträge durch meinem ersetzen. Sonst ist es doppelt und ggf. wieder falsch...

OXPUS
Zuletzt geändert von oxpus am 03.11.2003 15:27, insgesamt 1-mal geändert.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Für alle, die den Hierarchy Mod von Ptirhiik installiert haben und nicht wechseln möchten, habe ich eine gute Nachricht:
Hier ist die Lösung für die Foren-Images (gelesen/ungelesen) auf dem (Haupt-)Index:

includes/functions.php (bei Version 2.0.3 des Hierarchy Mods in der Datei includes/functions_categories_hierarchy.php!)

Code: Alles auswählen

						if ( $tracking_topics[$check_topic_id] < $check_post_time )
ersetzen mit

Code: Alles auswählen

						if ( $tracking_topics[$check_topic_id] <= $check_post_time )
finde

Code: Alles auswählen

	$new_topic_data = array();
	if ( $userdata['session_logged_in'] )
	{
		$user_lastvisit = $userdata['user_lastvisit'];
		$sql = "SELECT t.forum_id, t.topic_id, p.post_time
			FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
			WHERE p.post_id = t.topic_last_post_id
				AND p.post_time > $user_lastvisit
				AND t.topic_moved_id = 0";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
		}

		while( $topic_data = $db->sql_fetchrow($result) )
		{
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
		}
	}
und mit folgendem ersetzen

Code: Alles auswählen

	$new_topic_data = array();
	if ( $userdata['session_logged_in'] )
	{
		$jetzt_vor_einem_monat = time() - 2592000;
		$sql = "SELECT p.forum_id, p.topic_id, p.post_time
				FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r
				ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ")
				WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL)
				AND p.post_time > " . $jetzt_vor_einem_monat . "
				AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
		}

		while( $topic_data = $db->sql_fetchrow($result) )
		{
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
		}
	}
in index.php finde

Code: Alles auswählen

	//
	// Obtain a list of topic ids which contain
	// posts made since user last visited
	//
	if ( $userdata['session_logged_in'] )
	{
		$sql = "SELECT t.forum_id, t.topic_id, p.post_time, p.post_edit_time
			FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
			WHERE p.post_id = t.topic_last_post_id
				AND p.post_time > " . $userdata['user_lastvisit'] . "
				AND t.topic_moved_id = 0";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
		}

		$new_topic_data = array();
		while( $topic_data = $db->sql_fetchrow($result) )
		{
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
		}
	}
und mit folgendem ersetzen

Code: Alles auswählen

	$new_topic_data = array();
	if ( $userdata['session_logged_in'] )
	{
		$jetzt_vor_einem_monat = time() - 2592000;
		$sql = "SELECT p.forum_id, p.topic_id, p.post_time
				FROM " . POSTS_TABLE . " AS p LEFT OUTER JOIN " . TOPIC_READ_TABLE . " AS r
				ON ( p.topic_id = r.topic_id AND r.user_id = " . $userdata['user_id'] . ")
				WHERE ( (r.user_id = " . $userdata['user_id'] . " OR r.user_id IS NULL)
				AND p.post_time > " . $jetzt_vor_einem_monat . "
				AND (p.post_time > r.visit_time OR p.post_edit_time > r.visit_time OR r.topic_id IS NULL) )";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Could not query new topic information', '', __LINE__, __FILE__, $sql);
		}

		while( $topic_data = $db->sql_fetchrow($result) )
		{
			$new_topic_data[$topic_data['forum_id']][$topic_data['topic_id']] = $topic_data['post_time'];
		}
	}
Damit werden nun die Foren-Images auf dem (Haupt-)Index auch gemäß dem Status (= enthält gelesene/ungelesene Beiträge) gesetzt.

OXPUS
Zuletzt geändert von oxpus am 06.11.2003 00:32, insgesamt 4-mal geändert.
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
ThrillHousE
Mitglied
Beiträge: 11
Registriert: 27.10.2003 20:41
Kontaktdaten:

Beitrag von ThrillHousE »

hey cool oxpus:

hab 2.0.6 1.3+, heisst das nun ich nehme dein function code und den rest von der 2.0.4 installation und dann sollte es funzen?
ThrillHousE
Mitglied
Beiträge: 11
Registriert: 27.10.2003 20:41
Kontaktdaten:

Beitrag von ThrillHousE »

nunja ganz so einfach ists dann doch net fuer mich, haeng wieder an der Nr3, da sollen sachen getauscht werden die ich bei mir garnet drinne hab.

vielleicht kann ich dir ja mal meine files schicken oxpus? :roll:
Benutzeravatar
oxpus
Ehemaliges Teammitglied
Beiträge: 5394
Registriert: 03.02.2003 12:33
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Kannste machen. Schick mir Deine viewtopic.php und ich baue Dir den Teil 3 da schon ein...
Grüße
OXPUS
Kein Support bei unaufgeforderten PNs, E-Mails oder auf anderem Weg!!
ThrillHousE
Mitglied
Beiträge: 11
Registriert: 27.10.2003 20:41
Kontaktdaten:

Beitrag von ThrillHousE »

erstmal danke fuer deine unterstuetzung oxpus.

jetzt die frage an die allgemeinheit, ist es moeglich bei 2.0.6 die unread funktion wieder ueber die cookies laufen zu lassen? das fand ich 1000mal besser!
meinetwegen alles ueber die cookies so wie frueher? nachteile bei den cookies sind mir egal, hab davon jahre lang nix mitbekommen.

aber das mit dem gelesen/ungelesen stoert mich schon derbst!
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“