Seite 6 von 9

Verfasst: 13.05.2003 23:56
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.

Verfasst: 14.05.2003 13:22
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:

Verfasst: 12.09.2003 12:32
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???

Verfasst: 12.09.2003 12:40
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?

Verfasst: 12.09.2003 12:49
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 :(

Verfasst: 12.09.2003 12:55
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.

Verfasst: 12.09.2003 12:57
von Oliver
No Way! Ich hab so an die 3 Mio. Mods eingebaut, die dann ja alle wieder weg wären :-(

Verfasst: 01.10.2003 17:38
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.

Verfasst: 01.10.2003 17:55
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.

Verfasst: 12.10.2003 16:41
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?