Sommer- Winterzeit Problem mit heute gesten mod

Du hast Probleme beim Einbau oder bei der Benutzung eines Mods? In diesem Forum bist du richtig.
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
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Sommer- Winterzeit Problem mit heute gesten mod

Beitrag von mark2 »

Ich habe dieses Thema bereits gefunden. http://www.phpbb.de/doku/kb/sommerzeit
Da ich den Heute Gestern mod verwende konnte ich die Stelle zum einfügen nicht finden. Ich habe das dann so eingebaut.

Code: Alles auswählen

// Anfang  Anzeige Heute - Gestern Mod
function create_date($format, $gmepoch, $tz, $calcDelta=true)
{
   global $board_config, $lang;
   static $translate;
   if ( !$gmepoch )
   {
      // The next line integrated with the 'Last Visit' MOD (my own thing, unpublished)
      return $lang['datetime']['Hidden_time'];
   }

   $time = $gmepoch + (7200 * $tz);
   if ( $calcDelta ) {
      $midnight = gmmktime(0, 0, 0);
      $delta = $time - $midnight;
      if ($delta >= 0 && $delta < 86400)
      {
         return $lang['datetime']['Today'] . gmdate('H:i', $time);
      }
      else
      if ($delta < 0 && $delta > - 86400)
      {
         return $lang['datetime']['Yesterday'] . gmdate('H:i', $time);
      }
   }
   $pre_format = @gmdate($format, $time);

   if ( empty($translate) && $board_config['default_lang'] != 'english' )
   {
      @reset($lang['datetime']);
      while ( list($match, $replace) = @each($lang['datetime']) )
      {
         $translate[$match] = $replace;
      }
   }

// alter code für Datum und Uhrzeit Anzeige mit heute / gestern format ohne Sommer- Winterzeit
//   return ( !empty($translate) ) ? strtr($pre_format, $translate) : $pre_format;
  return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch)))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I", $gmepoch))));
}

//
// Ende  Anzeige Heute - Gestern Mod
Das bewirkt zwar dass oben auf der index_bod.tpl bei aktuellem Datum und Uhrzeit die richtige Zeit angezeigt wird aber überall wo das Heute Gesten steht wird noch immer die alte Sommerzeit angezeigt.
Warum? Ich habe meine Änderung doch genau in diesem Code gemacht.

Ich habe in der Administration und meinem Profil GMT+1 eingestellt.
Gruß Markus
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag von mark2 »

Wenn ich den Wert 7200 in der Zeile auf 3600 ändere erhalte ich auch hinter dem heute/gestern Datum die richtige Uhrzeit

Code: Alles auswählen

$time = $gmepoch + (7200 * $tz); 
Nun ist mir aufgefallen dass wenn man sich zwischen 0 und 1 Uhr anmeldet der heute gestern mod nicht mehr funktioniert. Es wird dann bis 1 Uhr das ganz normale Datum angezeigt und erst nach 1 Uhr erscheint heute. Der Today/yesturday mod schaltet also 1 Stunde zu spät auf den neuen Tag um.
Woran liegt das und wie behebe ich es?
Gruß Markus
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo mark2,

Lösung für das "0-1 Uhr + Winterzeit/Sommerzeit-Problem":


Öffne

/includes/page_header.php


Finde

Code: Alles auswählen

//
// GET THE TIME TODAY AND YESTERDAY
//
$today_ary = explode('|', create_date('m|d|Y', time(),$board_config['board_timezone']));
$board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'],0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
$board_config['time_yesterday'] = $board_config['time_today'] - 86400;
unset($today_ary);
// MOD - TODAY AT - END
Ersetze mit

Code: Alles auswählen

//
// GET THE TIME TODAY AND YESTERDAY
//
$today_ary = explode('|', create_date('m|d|Y', time(),$board_config['board_timezone']));

// Anfang Aenderung  //

$zeit = localtime(time() , 1);
if ($zeit[tm_isdst]==1)
{
   //Sommerzeit
   $board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'] - date('I'),0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
}
if ($zeit[tm_isdst]==0)
{
   // Winterzeit
   $board_config['time_today'] = gmmktime(0 - $board_config['board_timezone'] - $board_config['dstime'],0,0,$today_ary[0],$today_ary[1],$today_ary[2]);
}

// Ende Aenderungen //

$board_config['time_yesterday'] = $board_config['time_today'] - 86400;
unset($today_ary);
// MOD - TODAY AT - END
lg
4seven
Zuletzt geändert von 4seven am 07.12.2007 05:40, insgesamt 3-mal geändert.
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag von mark2 »

also ich kann in der page_header.php deinen angegebenen code nicht finden. Es sind nicht einmal Stück davon in meiner. Das 'time_today' gibt es bei mir nicht.

Zu Punk 2

gleiches Problem. Kann den code vor und nach deiner Änderung nicht finden. Ich gehe mal davon aus dass das in der function.php sein soll habe aber auch die page_header danach durchsucht. ohne Erfolg.

Habe diesen Heute gestern mod verwendet. Link
Wenn ich mir den letzten Beitrag von tts in diesem Thema ansehe ist das Problem auch ohne sommer winterzeit da und sogar noch schlimmer. Bei ihm wird das heute gestern um 2 Stunden verschoben. Eben die 7200=2 Stunden die ich nach dem Sommerzeit mod in 3600=1 Stunde geändert habe.

Und für Sommer Winterzeit diesen code was ich dann so wie man oben im ersten Posting sehen kann kombiniert habe.
Gruß Markus
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo mark2,

ich meinte den hier.

Der funktioniert mit der oben angegebenen Änderung 1A-Astabohne und das auf mehreren Boards.
Ich hatte zwar einige andere "Yesterday@/Today@Mods" probiert, aber da war meist der Wurm drin.
Außerdem ist diese Version sparsamer und ratzfatz eingebaut.

Ich hab meine Änderung oben angepasst (war etwas missverständlich)
und eine angepasste (sowie eingedeutschte) Version hochgeladen

lg
4seven
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag von mark2 »

Nun der mod zeigt das Heute / Gesten aber nur für Themen und Beiträge an. Beim letzten Login (last visit) passiert nichts. Der mod den ich bis jetzt hatte gefiel mir da schon besser. Schade dass er nicht richtig funktioniert und 1 bzw 2 Stunden verspätet die Anzeige bringt. Wird anscheinend auch nicht supported.
Gruß Markus
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo mark2,
mark2 hat geschrieben:Nun der mod zeigt das Heute / Gesten aber nur für Themen und Beiträge an.
Dafür aber perfekt :wink:
mark2 hat geschrieben:Beim letzten Login (last visit) passiert nichts.
An der Stelle halt ich es persönlich nicht für wichtig. Der Mod ließe sich aber bestimmt dafür anpassen.
Dürfte nicht kompliziert sein, doch fehlt mir dafür i.A. die Zeit.

_____________________________

Edit -> Hier ein Ansatz <-

In der sessions.php
und der pageheader.php
finden sich zwar auch Anweisungen von last_visit und user_lastvisit aber der Code wird wohl durch diese Anweisung ausgeworfen:

Öffne

usercp_viewprofile.php

Finde:

Code: Alles auswählen

'LASTLOGIN' => create_date($lang['DATE_FORMAT'], $profiledata['user_lastvisit'], $board_config['board_timezone']),
Wenn wer Lust hat, das auf Basis dieses Mods so anzupassen ,
das da nicht Letzter Login: 08.12.2007
sondern Letzter Login: Gestern um xyz steht, dann mal ran.

lg
4seven
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag von mark2 »

Genial. Ich habe es hin bekommen.
Dein code (mod) läuft bei mir jetzt zusammen mit dem last visit mod zusätzlich auf den Seiten membelist.php, usercp_viewprofile.php
In der page_header.php habe ich auch noch nachgebessert so dass bei "Dein letzter Besuch war am:" auch "Heute" bzw "Gestern" steht :grin:
Es wird Punkt 0:00 Uhr auf "Heute" bzw "Gestern" umgeschalten.

Jedenfalls baue ich den alten today mod wieder aus und nehme deinen.

Ob das dann wirklich alles passt wird sich erst im Frühjahr zeigen wenn die Uhr wieder auf Sommerzeit gestellt wird.
Gruß Markus
4seven
Mitglied
Beiträge: 5869
Registriert: 21.04.2007 06:18

Beitrag von 4seven »

Hallo mark2,

freut mich das es funktioniert. :)

Magst du mir verraten, welche Änderungen an welchen Dateien du vorgenommen hast, damit...

Code: Alles auswählen

bei "Dein letzter Besuch war am:" auch "Heute" bzw "Gestern" steht
??

lg
4seven
Benutzeravatar
mark2
Mitglied
Beiträge: 454
Registriert: 22.02.2006 23:05
Wohnort: Kempten

Beitrag von mark2 »

Das habe ich in der page_header.php mit diesem code hin bekommen.

Code: Alles auswählen

# 
#-----[ FIND ]------------------------------------------ 
# 
$s_last_visit = ( $userdata['session_logged_in'] ) ? create_date($board_config['default_dateformat'], $userdata['user_lastvisit'], $board_config['board_timezone'], true) : '';                      

# 
#-----[ AFTER, ADD ]----------------------------------- 
# 
   // 
    // MOD - TODAY AT - BEGIN 
   // 
   if ( $board_config['time_today'] < $userdata['session_logged_in'] + $userdata['user_lastvisit']) 
   { 
      $s_last_visit = sprintf($lang['Today_at'], create_date($board_config['default_timeformat'], $userdata['user_lastvisit'], $board_config['board_timezone'])); 
   } 
   else if ( $board_config['time_yesterday'] < $userdata['session_logged_in'] + $userdata['user_lastvisit']) 
   { 
      $s_last_visit = sprintf($lang['Yesterday_at'], ( $userdata['session_logged_in'] ) ? create_date($board_config['default_timeformat'], $userdata['user_lastvisit'], $board_config['board_timezone'], true) : ''); 
         } 
    // MOD - TODAY AT - END 
Aber ohne Garantie! das mit dem + $userdata['user_lastvisit'] habe ich nur durchs probieren herausgefunden. Kein Plan was das macht aber es funzt. zumindes momentan.
Gruß Markus
Antworten

Zurück zu „phpBB 2.0: Mod Support“