Seite 1 von 2

Sommerzeit / Winterzeit

Verfasst: 24.09.2004 19:57
von einheitlix
Hi,

ich wette, das Problem haben eigentliche viele deutsche Forenuser, und ich hab auch gesucht, aber irgendwie keine so richtig befriedigende Antwort gefunden (falls es doch schon so ein Thread mit Antwort gibt, bitte gebt mir mal den Link)

Und zwar bräuchte ich einen Mod, der halt immer automatisch bei der Umstellung Sommerzeit -> Winterzeit bzw. umgekehrt bei allen Usern, die sich halt in einer Zeitzone befinden, in der es Sommerzeit gibt, die Zeitzone eine Stunde rauf- bzw. runterzählt.

Ich hab irgendwo einen Link auf einen Mod namens "Advanced Time Management 2.0" oder so gefunden, aber der Link dahin war kaputt :(

Danke schonmal!

Malte

Verfasst: 24.09.2004 20:17
von Leuchte
Hilft dir das weiter?
KB:sommerzeit

Verfasst: 24.09.2004 20:55
von einheitlix
Danke! :)

Also das bewirkt, dass die Funktion create_date immer je nach Sommer / Winterzeit die "richtige" Zeit zurückgibt, richtig?

Wirkt sich das dann auch so aus, dass die Zeitzone im Profil der User zur Sommerzeit dann umgestellt ist? Ich meine, wenn ein User GMT+1 eingestellt hat, und dann kommt die Sommerzeit, wird die zeitzone in seinem Profil dann auf GMT+2 umgestellt?
Oder wie wirkt sich dieser Mod sonst aus?

Verfasst: 24.09.2004 22:13
von saerdnaer
nein, diese änderung ändert leider nicht die zeitzonen einstellungen im profil; leider
am besten wäre da der advanced time management hack
evtl. findest du ihn auf phpbbhacks.com

oder hier.. :o :wink: (by Acid)

Verfasst: 25.09.2004 05:21
von einheitlix
Hey, danke! Den Mod hau ich jetzt mal drauf :D

Verfasst: 25.09.2004 09:57
von saerdnaer
saerdnaer hat geschrieben:oder hier.. :o :wink: (by Acid)
ich graub ich muss die suche der moddb bezüglich des kurznamens nochmal etwas überarbeiten, denn wenn man nur nach time sucht findet man nichts ;-)

ah

Verfasst: 26.09.2004 13:54
von einheitlix
Hi Leute, ich hoffe ihr könnt mir nochmal helfen.

Also, der Mod fügt ja zwei Spalten in die Tabelle phpbb_users hinzu, und das sind user_time_mode (der "Zeitmodus"), und user_dst_time_lag (die Zeitverzögerung der Sommerzeit, in Minuten). Abgesehen davon gibt es das ganze nochmal in der phpbb_config Tabelle für Default Values.

Also, erstens...

User, die sich neu registrieren oder Gäste, bekommen sofort die "richtigen" Einstellungen aus der phpbb_config Tabelle.

Aber meine User, die jetzt schon registriert sind, haben doch nun natürlich ganz blöde Default Values da stehen: für beide Felder halt 0... das heißt, kein DST, und keine Zeitverzögerung der Sommerzeit. Kurz, sie haben nichts von dem Mod, bevor sie ihr Profil nicht richtig updaten... und ihr wisst ja, man kann sich nicht immer auf User verlassen... :roll:

Mit welchem SQL-Befehl könnte ich die beiden Spalten bei allen Usern einfach mit den Werten füllen, die ich mir wünsche, ohne dass ich dafür gleich die DEFAULT value dieser Spalte in der SQL Datenbank verändere? Ich meine, DEFAULT kann ruhig auf 0 bleiben, nur die konkreten Werte sollen sich überall ändern.

Und zweitens, und das ist viel schwerwiegender: ich bin nicht sicher, aber ich glaube, der Mod hat einen Fehler. Schaut euch erstmal diesen Code-Schnippsel an, den er der includes/functions.php ans Ende der Methode function create_date($format, $gmepoch, $tz) hinzufügt.

Code: Alles auswählen

if ( $userdata['user_id'] != ANONYMOUS )
{
	switch ( $userdata['user_time_mode'] )
	{
		case 1:
                        // ...
			return ( !empty($translate) ) ? ...;
			break;

                // ...

		case 6:
                        // ...
			return ( !empty($translate) ) ? ...;
			break;

		default:
			return ( !empty($translate) ) ? ...;
			break;
	}
} else
{
	switch ( $board_config['default_time_mode'] )
	{
		case 1:
                        // ...
			return ( !empty($translate) ) ? ...;
			break;

                // ...

		case 6:
                        // ...
			return ( !empty($translate) ) ? ...;
			break;

		default:
			return ( !empty($translate) ) ? ...;
			break;
	} 
}
Also: ist der User kein Gast, wird die Zeiteinstellung in seinem Profil nachgeschaut, ist er einer, wird die Default Value benutzt. Soweit, so gut. Aber: die Modi gehen von 1 bis 6. Also sollte man denken, gibt es die Modi 1, 2, 3, 4, 5 und 6, und es gibt ja auch genau 6 Einstellungsmöglichkeiten. Da im Datenbankfeld bei vielen Usern noch 0 steht, würde auf den "default:" case zurückgegriffen, der prinzipiell wie der normale phpBB Code arbeitet, also DST disabled.

Aber nun guckt euch mal an, was man in der templates/subSilver/profile_add_body.tpl für einen Quellcode einfügen soll:

Code: Alles auswählen

<tr> 
	<td class="row1"><span class="gen">{L_TIME_MODE}:</span><br />
		<span class="gensmall">{L_TIME_MODE_TEXT}</span></td>
	<td class="row2">
		<input type="radio" name="time_mode" value="0" {TIME_MODE_MANUAL_CHECKED}/><span class="gen">{L_TIME_MODE_MANUAL}</span>&nbsp;&nbsp;<br /> 
		<input type="radio" name="time_mode" value="1" {TIME_MODE_MANUAL_DST_CHECKED}/><span class="gen">{L_TIME_MODE_MANUAL_DST}</span>&nbsp;&nbsp;<br />
		<input type="radio" name="time_mode" value="2" {TIME_MODE_SERVER_SWITCH_CHECKED}/><span class="gen">{L_TIME_MODE_SERVER_SWITCH}</span>&nbsp;&nbsp;<br />
		<input type="radio" name="time_mode" value="3" {TIME_MODE_FULL_SERVER_CHECKED}/><span class="gen">{L_TIME_MODE_FULL_SERVER}</span>&nbsp;&nbsp;<br />
		<input type="radio" name="time_mode" value="4" {TIME_MODE_SERVER_PC_CHECKED}/><span class="gen">{L_TIME_MODE_SERVER_PC}</span>&nbsp;&nbsp;<br />
		<input type="radio" name="time_mode" value="6" {TIME_MODE_FULL_PC_CHECKED}/><span class="gen">{L_TIME_MODE_FULL_PC}</span></td>
</tr>
(Und genauso sieht es in der templates/subSilver/admin/board_config_body.tpl und der templates/subSilver/admin/user_edit_body.tpl aus)

Aha, hier kann man als Werte nur 0, 1, 2, 3, 4 und 6 angeben. Das heißt, bei der ersten Einstellungsmöglichkeit wird 0 übermittelt, was darauf hinausläuft, das man in den "default:" case reinrutscht. Wert 5 kann man gar nicht übermitteln, also wird "case 5:" quasi überflüssig. Bis auf Einstellungsmöglichkeit 6 sind außerdem alle anderen Einstellungsmöglichkeiten "verschoben" (Modus 2 ist case 1, Modus 3 ist case 2, usw.). Das kann doch nicht richtig sein... oder?

Verfasst: 26.09.2004 14:36
von Crawfish01
Ich hab' in unserem Forum auch diesen Mod installiert, und als default die 6, also den Abgleich mit der PC-Zeit des Users....

Das funzt wunderbar, seitdem gibt es kein Gemecker mehr, dass die Forum-Uhr nicht stimmt ;-)

Verfasst: 26.09.2004 18:33
von einheitlix
Danke für den Tipp... aber wie gesagt, die sechste Einstellung sollte ja auch tadellos funktionieren. Nur die anderen sehen mir im Code etwas zweifelhaft aus.

Kann denn da niemand was zu sagen?

Achja, bitte, falls es einer weiß, mit welcher SQL Anweisung verändere ich alle Felder in der Spalte user_time_zome in der Tabelle phpbb_users auf einmal?

Verfasst: 26.09.2004 18:48
von saerdnaer
einheitlix hat geschrieben:Achja, bitte, falls es einer weiß, mit welcher SQL Anweisung verändere ich alle Felder in der Spalte user_time_zome in der Tabelle phpbb_users auf einmal?
ganz simpel:
UPDATE phpbb_users SET user_time_zone = 6
wobei du 6 mit dem wert ersetzen muss

ah