Seite 1 von 1

DST Mod - Bei Error wird Zeitzone zurückgesetzt?

Verfasst: 11.04.2003 20:42
von JLoop©
Hi,
ich habe in mein Board den DST Mod eingebaut wo die User selbst einstellen können ob die Zeit in Sommer/Winterzeit angezeigt werden soll soweit so gut nur wenn ich es auf Sommerzeit (Dann wird er Wert in der DB bei user_timezone wenn als Zeitzone z.b. "MESZ (Westeuropa)" ja von 1 auf 51 geändert also 50 dazugezählt) gestellt habe und ich gehe in die Profil-Einstellungen um z.b. das Passwort zu ändern und vertipp mich bei "Altes Passwort" dann werde ich ja zurückgeleitet auf die Profil-einstellungen nach dem absenden und oben in der Fehlerbox wird angezeigt "Das aktuelle Passwort stimmt nicht mit dem in der Datenbank überein." und das Drop Down bei Zeitzone wird zurückgesetzt auf "GMT - 12 Stunden" wenn ich jetzt nicht nachschaue und absende wird der Wert in der DB auf 38 geändert also eine neue Zeitzone eingestellt.

Wie kann ich das verhindern das, das Zeitzonen-Drop Down Menü - wenn es zu einem Fehler kommt - zurückgesetzt wird?

Hoffe es hat jemand verstanden was ich meine und kann mir helfen :)

Grüße JLoop

Verfasst: 12.04.2003 19:10
von JLoop©
Niemand der mir weiterhelfen kann? :cry: :cry:

JLoop

Verfasst: 13.04.2003 13:09
von Acid
..tritt der Fehler auch bei anderen Aktivitäten im Profil auf (z.B. bei der Avatargallerie) und wie sieht´s im Adminbereich (User Management) aus ?

Link zum Hack ?

Verfasst: 13.04.2003 15:19
von JLoop©
Hi,
also es tritt auch im ACP auf immer dann wenn es zu einer fehlermeldung kommt und wegen der Avatar Gallery nein da tritt es nicht auf und auch bei anderen AKtivitäten im Profil nicht.

Hier die Mod Anleitung: DST MOD

Hat der User aber Winterzeit eingestellt wird es in der DB ja von 51 wieder auf 1 zurückgesetzt dann tritt der fehler nicht mehr auf :-?

Grüße JLoop

Verfasst: 15.04.2003 10:18
von Acid
Bei der Änderung der admin_users.php muss folgendes gemacht werden..
#
#-----[ FIND around line 790 ]-----------------------------------
#

$user_timezone = $this_userdata['user_timezone'];

#
#-----[ REPLACE WITH ]-------------------------------------------
#

// OLD $user_timezone = $this_userdata['user_timezone'];
$user_timezone = ( $this_userdata['user_timezone'] > 12 ) ? $this_userdata['user_timezone'] - 50 : $this_userdata['user_timezone']; // DST MOD
..der blaue Teil fehlte.
Danach funktionierte es bei mir im Adminbereich.

if ( $dstime ) $user_timezone += 50; // DST MOD
..und nachdem ich das in der usercp_register.php weggelassen hab, funktionierte es auch im Profil (kann Dir aber nicht sagen, ob es negative Auswirkungen auf die Funktion des Hacks hat).

getestet mit 2.0.3

Verfasst: 15.04.2003 13:13
von JLoop©
Acid hat geschrieben:if ( $dstime ) $user_timezone += 50; // DST MOD

..und nachdem ich das in der usercp_register.php weggelassen hab, funktionierte es auch im Profil (kann Dir aber nicht sagen, ob es negative Auswirkungen auf die Funktion des Hacks hat).
Die auswirkung ist das der Mod dann nicht mehr geht weil das ist ja der Hauptteil der wenn die Variable $dstime gefüllt ist zu der Zeitzone in der DB +50 hinzurechnet.

Das einfachste wäre ja den Mod wieder auszubauen und es den Usern zu ermöglichen ( mit dem Sommerzeit fix ) selbst diesen teil in der funktions.php von:

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));
auf

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * ($tz+date("I")))), $translate) : @gmdate($format, $gmepoch + (3600 * ($tz+date("I"))));
umzuschalten aber 1. weiss ich garnicht ob das so überhaupt möglich ist und wie man das hinbekommt und 2. hätte das den Nachteil das wenn es 1 User umstellt für alle die Zeit in Sommerzeit angezeigt wird (oder?). Theoretisch musste man doch nur in die phpbb_users tabelle eine Spalte namens z.b. dst hinzufügen die entweder 1 oder 0 enthält je nachdem ob der User Sommerzeit/Winterzeit im profil ausgewählt hat dann natürlich noch die entsprechende auswahlmöglichkeit im profil und in der functions müsste man vor:

Code: Alles auswählen

return ( !empty($translate) ) ? strtr(@gmdate($format, $gmepoch + (3600 * $tz)), $translate) : @gmdate($format, $gmepoch + (3600 * $tz));
nur das einfügen:

Code: Alles auswählen

if ( $userdata['dst'] == TRUE ) 
{
$tz = ($tz+date("I"));
}
Soweit die theorie, ich kenn mich mit PHP nur mässig aus @Acid meinst du das könnte so funktionieren?

Grüße JLoop

Verfasst: 15.04.2003 13:18
von Acid
(imho) funktioniert es nicht.

Is der Adminbereich bei Dir immer noch fehlerhaft (nach obiger Änderung) ?

Verfasst: 15.04.2003 17:11
von JLoop©
Ja ist immernoch dasselbe :(

Grüße JLoop

Verfasst: 17.04.2003 22:03
von JLoop©
Sonst irgendjemand ne idee? [ externes Bild ] :cry:

Edit: Habs jetzt so ausprobiert wie ichs geschrieben habe und mit einer kleinen änderung funzt es :D

Grüße JLoop