Seite 2 von 2

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 06.02.2009 19:07
von Helmut
Hallo Dotwin,

hm ... nicht ganz einfach. Theoretisch lässt sich schon ein Konverter machen der die aktuellen Einträge aus der Tabelle ausliest, dann umwandelt und wieder zurück speichert. Aber da ist ein Haken dabei, wenn schon User ihr Geburtsdatum geändert haben, dann greift der Konverter nicht mehr, da hier ja Tag und Monat wieder zurück verwandelt werden. Man müsste also die Geburtstage nochmal aus der alten Datenbank auslesen und umwandeln.

Alternativ könntest du per Rundschreiben (PN) alle User auffordern, ihr Geburtsdatum zu überprüfen und ggf. neu einzutragen.


@Dr.Death
Ich habe den Fehler gefunden, warum im deutschen Sprachpaket die Tage mit den Monaten bei der Konvertierung vertauscht werden. Das liegt daran, dass im deutschen Datumsformat Tag-Monat_jahr und im englischen/amerikanischen Format Monat-Tag-Jahr kommt. Daher sollte im deutschen Sprachpaket in der install/functions_phpbb20.php folgendes geändert werden:

Finde:

Code: Alles auswählen

        // The birthday mod from niels is using this code to transform to day/month/year
        return sprintf('%2d-%2d-%4d', gmdate('n', $birthday * 86400 + 1), gmdate('j', $birthday * 86400 + 1), gmdate('Y', $birthday * 86400 + 1));
 

und ersetze durch folgendes

Code: Alles auswählen

        // The birthday mod from niels is using this code to transform to day/month/year
        return sprintf('%2d-%2d-%4d', gmdate('j', $birthday * 86400 + 1), gmdate('n', $birthday * 86400 + 1), gmdate('Y', $birthday * 86400 + 1));
 
denn j steht für Tag und n für Monat.

Gruß Helmut

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 06.02.2009 20:22
von Dotwin
Hallo Helmut,

vielen Danke für deine Antwort.
Ich glaube es hat noch keiner wirklich bemerkt und geändert.
Kann ich nicht einfach einen Teil aus dem Konverter ausschneiden und dann nur die Geburtstage konvertieren?

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 06.02.2009 20:29
von Helmut
Hallo Dotwin,

ja theoretisch schon, aber so gut kenne ich mich mit dem Konverter auch nicht aus, der ist schon sehr komplex aufgebaut.

Gruß Helmut

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 07.02.2009 15:31
von Dotwin
Könnte ich nicht die Beiträge per sql sichern und dann die konvertierung nochmal machen und dann die beiträge wieder einfügen?

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 08.02.2009 13:19
von Helmut
Hallo Dotwin,

hm ... vielleicht ja, aber das Problem dabei sind die nach der Konvertierung neu registrierten User, die würden dann ja wieder verloren gehen. Auch müsstest du die Berechtigungen der User neu vergeben, wenn du diese in der Zwischenzeit geändert hast. Dann musst du alle Tabellen für die Posts, Topics, PN's usw. auch wieder von Hand ändern und da wäre mir das Risiko zu groß dass was daneben geht.

Wieviele User hast du denn registriert?

Gruß Helmut

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 10.02.2009 19:38
von bantu
Hier auch nochmal: Es gab da in der Tat ein Problem mit den Geburtstagen. Das Problem tritt aber erst seit 3.0.4 oder 3.0.3 auf, da bei dem Versuch einen alten Bug zu fixen ein neuer eingebaut wurde: 'j' und 'n' wurden vertauscht, wie Helmut korrekt erkannt hat.

Dieses spezielle Problem sollte hiermit (und wie Helmut es schon beschrieben hat) behoben sein: http://code.phpbb.com/repositories/diff ... ev_to=9325

Edit: Das Problem "Geburtsdaten werden nicht übernommen", das ich in einem meiner vorherigen Posts in diesem Thema beschrieben hatte, tritt bei PHP Version kleiner 5.1.0 auf, wenn das entsprechende Geburtsdatum vor dem 01.01.1970 liegt. Mit der aktuellen PHP-Version (5.2.x) sollten jetzt demnach alle Geburtstage korrekt konvertiert werden.

Re: Geburtstage werden bei Konvert. nicht korrekt übernommen

Verfasst: 10.02.2009 21:04
von Helmut
Hallo,

ich möchte noch zu den Ausführungen von bantu hinzufügen, dass ich auch eine Lösung für das 01.01.1970 Problem habe, wenn die php Version älter als 5.1.0 ist. Dazu ist in der functions_phpbb20.php folgender Code zu ändern:

Finde

Code: Alles auswählen

        if (!$birthday || $birthday == 999999 || ((version_compare(PHP_VERSION, '5.1.0') < 0) && $birthday < 0))
        {
            return ' 0- 0-   0';
        }

        // The birthday mod from niels is using this code to transform to day/month/year
        return sprintf('%2d-%2d-%4d', gmdate('n', $birthday * 86400 + 1), gmdate('j', $birthday * 86400 + 1), gmdate('Y', $birthday * 86400 + 1));
 
und ersetze durch folgendes

Code: Alles auswählen

        if (!$birthday || $birthday == 999999)
        {
            return ' 0- 0-   0';
        }
        else
        {
            $birthday2 = gmdate('j-n-Y', $birthday * 86400 + 1);            
            $data['bday_day'] = $data['bday_month'] = $data['bday_year'] = 0;
            list($data['bday_day'], $data['bday_month'], $data['bday_year']) = explode('-', $birthday2);                        
        }
        return sprintf('%2d-%2d-%4d', $data['bday_day'], $data['bday_month'], $data['bday_year']);        
 
Ich habe damit schon mehrere Dutzend Konvertierungen durchgeführt.

Gruß Helmut