Seite 1 von 1

Falsche Anzeige bei Last Visit Date MOD

Verfasst: 07.01.2007 14:15
von DaBear78
Mahlzeit!

Ich beschäftige mich gerade zum ersten Mal mit phpBB2 und habe ein kleines Forum erstellt und auch schon einige Mods eingebaut. Hat auch alles soweit geklappt, außer der Tatsache, das der Last Visit Date MOD, der eigentlich den letzten Besuch des Users in der Memberliste anzeigen sollte, nicht den letzten, sondern den VORletzten Besuch des Users anzeigt. Ich habe hier im Forum zwar ähnliche Probleme gefunden, aber keine wirklichen Lösungen. Einmal wurde zwar gesagt, man solle einen anderen MOD installieren, dann bräuchte man da nichts von Hand ändern, aber ich möchte diesen MOD nur ungern per Hand wieder rausnehmen und dann einen anderen MOD installieren. Kann man den vorhandenen MOD nicht irgendwie abändern, so dass das richtige Datum angezeigt wird?

Der MOD (keine Ahnung wo der her genau her war) ist übrigens folgender:

Code: Alles auswählen

$Id: last_visit_date.txt,v 1.1 2003/07/07 03:17:41 nivisec Exp $
############################################### 
##   Hack Title:   Add Last User Visit Date to Members List
##                 (A phpBB2 Quickie)
##   Author:       Nivisec (support@nivisec.com)
##                 http://www.nivisec.com
##   Description:  Adds a new field in the members list that displays the date
##                 that the user last visited on.  "Never" will be displayed if
##                 the user has never logged in.
##
##   Compatibility:   2.0.x
## 
##   Support:      http://www.phpbbhacks.com/forums 
##   Copyright:      ©2003 Billy Sauls
## 
############################################### 
# 
#-----[ OPEN ]------------------------------------------ 
# 
memberlist.php

#
#-----[ FIND ]------------------------------------------ 
#
	'L_POSTS' => $lang['Posts'], 

#
#-----[ AFTER, ADD ]------------------------------------------ 
#   Change 'Last Visited' to your desired language.
#
	'L_LAST_VISITED' => 'Last Visited', 

#
#-----[ FIND ]------------------------------------------ 
#
		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

#
#-----[ AFTER, ADD ]------------------------------------------ 
#   Change 'Never' on the end of the $last_visit_time = (!empty....
#   line to your desired language.
#
		$visit_time_sql = "SELECT user_lastvisit
			FROM " . USERS_TABLE . "
			WHERE user_id = " . $user_id . "
			LIMIT 1";

		if (!$visit_time_result = $db->sql_query($visit_time_sql))
		{
			message_die(GENERAL_ERROR, 'Error getting user last visit time', '', __LINE__, __FILE__, $visit_time_sql);
		}

		$visit_time_row = $db->sql_fetchrow($visit_time_result);
		$last_visit_time = (!empty($visit_time_row['user_lastvisit'])) ? create_date($lang['DATE_FORMAT'], $visit_time_row['user_lastvisit'], $board_config['board_timezone']) : 'Never';

#
#-----[ FIND ]------------------------------------------ 
#
			'YIM' => $yim,

#
#-----[ AFTER, ADD ]------------------------------------------ 
#
			'LAST_VISIT_TIME' => $last_visit_time,

# 
#-----[ OPEN ]------------------------------------------ 
# 
templates/subSilver/memberlist_body.tpl

#
#-----[ FIND ]------------------------------------------ 
#
	  <th class="thTop" nowrap="nowrap">{L_JOINED}</th>

#
#-----[ AFTER, ADD ]------------------------------------------ 
#
	  <th class="thTop" nowrap="nowrap">{L_LAST_VISITED}</th>

#
#-----[ FIND ]------------------------------------------ 
#
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gensmall">{memberrow.JOINED}</span></td>

#
#-----[ AFTER, ADD ]------------------------------------------ 
#
	  <td class="{memberrow.ROW_CLASS}" align="center" valign="middle"><span class="gensmall">{memberrow.LAST_VISIT_TIME}</span></td>

#
#-----[ FIND ]------------------------------------------ 
#   If you have added other columns to your member list, this
#   will look different.  Just change the colspan="#" part to
#   be one greater if it isn't 8.  (ie if it is 10, change it
#   to 11).
#
	  <td class="catbottom" colspan="8" height="28">&nbsp;</td>

#
#-----[ REPLACE WITH ]------------------------------------------ 
#
	  <td class="catbottom" colspan="9" height="28">&nbsp;</td>

# 
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------ 
#
#End
Und phpBB2 habe ich in der aktuellsten Version (v2.0.22).

Wer kann mir helfen? Wäre wichtig, da es sich um ein Clanforum mit Anwesenheitspflicht handelt und ich mit diesem MOD dann sehen könnte wer heute schon da war...

MfG,
DaBear78

Verfasst: 08.01.2007 16:56
von DaBear78
Mahlzeit!

Wirklich niemand eine Idee?

Ich habe ja schon herausgefunden, dass in user_lastvisit der vorletzte Login gespeichert wird. Gibt es nicht irgendwie die Möglichkeit ein neues Feld in die Tabelle einzufügen, z.B. user_last_login oder so ähnlich, in dem immer das aktuelle Datum gespeichert wird, sobald der User sich einloggt? Wenn ja, wie geht das?

MfG,
DaBear78

Verfasst: 09.01.2007 16:59
von DaBear78
Hmmm, die 24 Stunden sind rum, also schieb ich nochmal. Vielleicht findet sich ja doch noch jemand, der weiß wie das Problem gelöst werden kann...

Verfasst: 09.01.2007 17:46
von easygo
Hi! Mal abgesehn davon, dass das schon wegen der vielen queries ein ziemlich
übler Hack ist, versuchs mal mit user_lastlogon statt user_lastvisit :/

Soll heißen..

Code: Alles auswählen

# 
#-----[ FIND ]------------------------------------------ 
# 
      $row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 
      $row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 

# 
#-----[ AFTER, ADD ]------------------------------------------ 
#   Change 'Never' on the end of the $last_visit_time = (!empty.... 
#   line to your desired language. 
# 
      $visit_time_sql = "SELECT user_lastlogon 
         FROM " . USERS_TABLE . " 
         WHERE user_id = " . $user_id . " 
         LIMIT 0,1"; 

      if (!$visit_time_result = $db->sql_query($visit_time_sql)) 
      { 
         message_die(GENERAL_ERROR, 'Error getting user last visit time', '', __LINE__, __FILE__, $visit_time_sql); 
      } 

      $visit_time_row = $db->sql_fetchrow($visit_time_result); 
      $last_visit_time = (!empty($visit_time_row['user_lastvisit'])) ? create_date($lang['DATE_FORMAT'], $visit_time_row['user_lastlogon'], $board_config['board_timezone']) : 'Never'; 

Verfasst: 09.01.2007 19:55
von DaBear78
Hmmm, hab's versucht, klappt aber leider nicht. Es gibt nämlich kein Feld "user_lastlogon" in der Datenbank. Schade!

Was mache ich jetzt? Gibt es wirklich keine Lösung für das Problem?

MfG,
DaBear78

Verfasst: 09.01.2007 20:15
von DaBear78
OK, ich hab's! Ich habe einfach die "user_session_time" genommen, damit ging es dann.

Danke an alle die sich Gedanken gemacht haben...

MfG,
DaBear78