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...
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> <br />
<input type="radio" name="time_mode" value="1" {TIME_MODE_MANUAL_DST_CHECKED}/><span class="gen">{L_TIME_MODE_MANUAL_DST}</span> <br />
<input type="radio" name="time_mode" value="2" {TIME_MODE_SERVER_SWITCH_CHECKED}/><span class="gen">{L_TIME_MODE_SERVER_SWITCH}</span> <br />
<input type="radio" name="time_mode" value="3" {TIME_MODE_FULL_SERVER_CHECKED}/><span class="gen">{L_TIME_MODE_FULL_SERVER}</span> <br />
<input type="radio" name="time_mode" value="4" {TIME_MODE_SERVER_PC_CHECKED}/><span class="gen">{L_TIME_MODE_SERVER_PC}</span> <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?