[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.
Dr. Love
Mitglied
Beiträge: 48
Registriert: 24.12.2002 03:24
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Dr. Love »

Ohh, als Gast gepostet, mist.

Kritisch ist die Zeile:

Code: Alles auswählen

$lang['Search_unread'] = $lang['Search_unread'] . " (" . $row[0] . ")";
Wenn Du alles nach dem Mod machst, dann ist die Änderung von $lang['Search_unread'] richtig, wenn Du das "Beiträge seit dem letzten Besuch" komplett ersetzt hast (was ja deutlich weniger Arbeit macht), dann gibt es kein $lang['Search_unread'] und Du musst hier einfach $lang['Search_new'] bearbeiten. Das müsste alles sein.
Ciao, Dr. Love...
Nike
Mitglied
Beiträge: 28
Registriert: 11.06.2002 01:44
Kontaktdaten:

Beitrag von Nike »

hmmmm..... jou - thx, nu funzt. nicht das ich so wirklich wüsste warum ;). einfach nochmal alles eingebaut, war wohl doch irgendwo ein fehler :roll:
Oliver
Mitglied
Beiträge: 28
Registriert: 13.03.2003 23:17
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von Oliver »

Hi allerseits,

das Ding zählt sicherlich zum Sinnvollsten, was es an Mods gibt, ist aber gleichzeitig mit Abstand das Schrecklichste, was ich je gesehen habe.

Ich frage mich ernsthaft, wie Ihr das alle ans Rennen gebracht habt!?!
In der viewtopic.php soll man zuerst jede Menge ersetzen (nr3 viewtopic-php.txt - 1):

Code: Alles auswählen

*********************************************************** - 1 - ***************************************************************
suche:
*********************************************************************************************************************************

      if ( $userdata['session_logged_in'] ) 
            { 
                   $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array(); 
                   $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array(); 

                   if ( !empty($tracking_topics[$topic_id]) && !empty($tracking_forums[$forum_id]) ) 
                   { 
                           $topic_last_read = ( $tracking_topics[$topic_id] > $tracking_forums[$forum_id] ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id]; 
                   } 
                   else if ( !empty($tracking_topics[$topic_id]) || !empty($tracking_forums[$forum_id]) ) 
                   { 
                           $topic_last_read = ( !empty($tracking_topics[$topic_id]) ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id]; 
                   } 
                   else 
                   { 
                           $topic_last_read = $userdata['user_lastvisit']; 
                   } 

                        $sql = "SELECT post_id 
                           FROM " . POSTS_TABLE . " 
            WHERE topic_id = $topic_id 
                                   AND post_time >= $topic_last_read 
                 ORDER BY post_time ASC 
            LIMIT 1"; 
 


*********************************************************************************************************************************
ersetze mit:
*********************************************************************************************************************************

      if ( $userdata['session_logged_in'] ) 
            { 
// <!--- Topic Read Hack Teil 1 Anfang (Löschen) --->			

//                   $tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array(); 
//                   $tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array(); 
//
//                   if ( !empty($tracking_topics[$topic_id]) && !empty($tracking_forums[$forum_id]) ) 
//                   { 
//                           $topic_last_read = ( $tracking_topics[$topic_id] > $tracking_forums[$forum_id] ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id]; 
//                   } 
//                   else if ( !empty($tracking_topics[$topic_id]) || !empty($tracking_forums[$forum_id]) ) 
//                   { 
//                           $topic_last_read = ( !empty($tracking_topics[$topic_id]) ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id]; 
//                   } 
//                   else 
//                  { 
//                           $topic_last_read = $userdata['user_lastvisit']; 
//                   } 
// <!--- Topic Read Hack Teil 1 Ende (Löschen) --->	

// <!--- Topic Read Hack Teil 2 Anfang (Einfügen) --->
                   $sql = "SELECT visit_time
			         FROM " . TOPIC_READ_TABLE . "
			         WHERE topic_id = $topic_id
			           AND user_id = $userdata[user_id]";
                        
			 if( !$result = $db->sql_query($sql) )
			 {
			 message_die(GENERAL_ERROR, "Could not get Topic Read from .", '', __LINE__, __FILE__, $sql);
			 } else {
			
			 if( $post_read = $db->sql_fetchrow($result) ) 	{
			    		$visit_time_newest = $post_read['visit_time']; 
			 } else {
			    		$visit_time_newest = "0";
			 }}

// <!--- Topic Read Hack Teil 2 Ende --->

// <!--- Topic Read Hack Teil 3 Anfang --->                           
// in zeile 112 "AND post_time >= $topic_last_read" durch "AND post_time >= $visit_time_newest" ersetzen
// <!--- Topic Read Hack Teil 3 Ende --->  

                   $sql = "SELECT post_id
                           FROM " . POSTS_TABLE . " 
                            WHERE topic_id = $topic_id 
				AND (post_time > $visit_time_newest
				OR post_edit_time > $visit_time_newest)
                             ORDER BY post_time, post_edit_time ASC 
                           LIMIT 1";


danach (nr3 viewtopic-php.txt - 5) wird an gleicher Stelle gelöscht:

Code: Alles auswählen

*********************************************************** - 5 - ***************************************************************
suche und lösche:
*********************************************************************************************************************************

if ( $userdata['session_logged_in'] )
{
	$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
	$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();

	if ( !empty($tracking_topics[$topic_id]) && !empty($tracking_forums[$forum_id]) )
	{
		$topic_last_read = ( $tracking_topics[$topic_id] > $tracking_forums[$forum_id] ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id];
	}
	else if ( !empty($tracking_topics[$topic_id]) || !empty($tracking_forums[$forum_id]) )
	{
		$topic_last_read = ( !empty($tracking_topics[$topic_id]) ) ? $tracking_topics[$topic_id] : $tracking_forums[$forum_id];
	}
	else
	{
		$topic_last_read = $userdata['user_lastvisit'];
	}

	if ( count($tracking_topics) >= 150 && empty($tracking_topics[$topic_id]) )
	{
		asort($tracking_topics);
		unset($tracking_topics[key($tracking_topics)]);
	}

        if ( ( $total_replies - $start ) / $board_config['posts_per_page'] <= 1 ) 
        { 
      $tracking_topics[$topic_id] = time(); 

        } 
        else 
        {       $max_post_time = intval( ( $postrow[$total_posts - 1]['post_time'] > $postrow[0]['post_time'] ) ? $postrow[$total_posts - 1]['post_time'] : $postrow[0]['post_time'] ); 
                if ( $max_post_time > $topic_last_read ) 
                { 
                   $tracking_topics[$topic_id] = $max_post_time + 1; 
                } 
        } 	

	setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}
Sorry, aber da blick ich echt nicht durch.

Hat das wirklich jemand mit phpBB 2.0.4 am Laufen???
Gruß,
Oliver
Benutzeravatar
Quichotte
Mitglied
Beiträge: 27
Registriert: 29.07.2002 10:00
Wohnort: Münster
Kontaktdaten:

Beitrag von Quichotte »

Ja, einfach die fertig gemodeten Dateinen uppen und es läuft.. ;)

Hat nicht jemand Lust, den Mod für 2.0.6 zu aktualisieren oder besser noch komplett neu zu schreiben, damit die DB mit weniger Queries belastet wird?
Oliver
Mitglied
Beiträge: 28
Registriert: 13.03.2003 23:17
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von Oliver »

Quichotte hat geschrieben:Ja, einfach die fertig gemodeten Dateinen uppen und es läuft.. ;)
Du hast Humor :D Was denn da bitte? Trotz intensiver Beschäftigung bin ich nicht drauf gekommen, was mir der Autor dieses Mods sagen will :(
Gruß,
Oliver
Benutzeravatar
Quichotte
Mitglied
Beiträge: 27
Registriert: 29.07.2002 10:00
Wohnort: Münster
Kontaktdaten:

Beitrag von Quichotte »

Du kannst für die 2.0.4 fertig gemodete Dateien bekommen. Dann musst du die Änderungen nicht per Hand einbauen. Die Dateien müssten m.E. bei dem DL dabei gewesen sein. Ich habe die einfach genommen und es funzte. Nur die Änderungen in der DB müssen natürlich noch zusätzlich angebracht werden.
Oliver
Mitglied
Beiträge: 28
Registriert: 13.03.2003 23:17
Wohnort: Wuppertal
Kontaktdaten:

Beitrag von Oliver »

No Way! Ich hab so an die 3 Mio. Mods eingebaut, die dann ja alle wieder weg wären :-(
Gruß,
Oliver
Kobold_EB
Mitglied
Beiträge: 83
Registriert: 20.02.2003 12:03
Wohnort: Thüringen
Kontaktdaten:

Beitrag von Kobold_EB »

Hallo, gibt es schon ein Update für diesen mod:

Code: Alles auswählen

## Mod Title:   Show unread posts (with UPITDB-MOD)
## Mod Version:   0.1 beta
## Author:      "Dr. Love" <Dr.Love@nbm-clan.de>
Wäre echt cool, wegen der fehlenden Funktion, die erkennt, ob der user überhaupt die berechtigung hat, alle angezeigten Threads zu lesen.
Dr. Love
Mitglied
Beiträge: 48
Registriert: 24.12.2002 03:24
Wohnort: Düsseldorf
Kontaktdaten:

Beitrag von Dr. Love »

Ja, wäre echt nicht schlecht. Ich selbst hab keine Zeit und keine Lust dazu im Moment.

Edit: Schaut mal in die Ankündigungen für das 2.2er:
- Database and cookie stored topic read marking

Also lohnt es meiner Meinung nach nicht mehr wirklich, das hier weiter voran zu treiben. Es funktioniert ausreichend und die neue Version bringt das eh schon mit.
Ciao, Dr. Love...
Benutzeravatar
Nico Haase
Mitglied
Beiträge: 1100
Registriert: 10.08.2003 15:19
Wohnort: Neu-Anspach / Darmstadt
Kontaktdaten:

Beitrag von Nico Haase »

*kram* dieser mod ist ja ganz sinnvoll. jetzt zwei fragen:
1) funzt der auch mit phpbb 2.0.6? auf http://www.offline.debytes.de/mods wird nur von versionen bis 2.0.4 gesprochen...
2) wie schwer ist die installation? funzt die mit dem emc?
Buchtips.net bietet mehr als 2500 Buchrezensionen
Antworten

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