Wichtig!
Es wird NICHT möglich sein, eine 100%-Abdeckung zu erreichen. Es gibt in WB etliche Module, die schon dort nicht mehr richtig funktionieren und es daher auch in BC nicht tun werden. So habe ich etwa GoogleMaps in BC nicht ans Laufen bekommen, manch andere Module funktionieren nur teilweise. Ein Migrationstool wird daran nichts ändern können, und wir werden auch keine Klimmzüge unternehmen, um alten Kram in BC quasi mit der Brechstange doch noch ans Laufen zu bekommen. Das heißt im Umkehrschluß: Wenn ein Modul, das einem ans Herz gewachsen ist und auf das man unter keinen Umständen verzichten kann und will, in BC nicht funktioniert, erübrigt sich der Umstieg. Wobei eine Anfrage im Forum natürlich nie schaden kann, manchmal sind es ja doch nur Kleinigkeiten, die man lösen kann.
Stand der Planung
In Planung - und auch schon in Arbeit - ist ein eigenständiges Tool, welches "irgendwo" auf dem Server installiert wird, auf dem WB läuft. Im ersten Schritt gibt man den Pfad zur WB-Installation und den Datenbank-Port an, wobei letzterer eigentlich nur bei einer Portable eine Rolle spielt.
Im nächsten Schritt ermittelt das Tool die installierten Sprachen, Module und Templates. Hierbei werden automatisch diejenigen Addons ausgenommen, von denen wir wissen, daß eine Migration problematisch oder unmöglich ist. Das betrifft z.B. diejenigen Module, die es in BC ebenfalls gibt. Außerdem ermittelt das Tool, welche Sprachen, Addons und Templates in Verwendung sind, und markiert diese gleich vor. Man kann nun die Vorgabe anpassen oder belassen, bevor man zum zweiten Schritt weiter geht.
Im nächsten Schritt werden nun die Datenbanktabellen ausgelesen. Auch hier wird nun versucht, diejenigen Tabellen zu ermitteln, die für die ausgewählten Module gebraucht werden. Das klappt nicht zu 100% zuverlässig, weil die Tabellen nicht immer so heißen wie das Modul (z.B. Brax_Highslide_Gallery -> mod_brax_highslide_whatever, Teil 'Gallery' fehlt). Durch sukzessive Erweiterung der Konfigurationsdatei, die auch die Blacklist der Addons beinhaltet, die nicht migriert werden können, werden wir aber eine gute Abdeckung erreichen können.
Nachdem nun alles ausgewählt ist, wird im nächsten Schritt ein Dump der Datenbank erzeugt. An dieser Stelle ist nun noch eine Menge Arbeit nötig, da sich manche Tabellen, die es schon in WB gab, in BC strukturell geändert haben. Derzeit erfolgt der Dump "as is", ich überlege noch, ob ich das Konvertieren erst beim Import erledige.
EDIT: Nach dem Export der Tabellen: Noch offen
Nach derzeitiger Planung habe ich NICHT vor, die Module per Tool aus WB zu exportieren, da das sehr lange dauern kann. Vielmehr gedenke ich, dem Benutzer einfach am Schluß nochmal eine Liste der Module auszugeben, die er markiert hat, mit dem Hinweis, daß diese in BC zu installieren sind, bevor die Datenbank importiert wird. Eventuell kann dieser Part auch von SyncData2 übernommen werden, da muß ich aber noch mit Ralf sprechen, weil ich glaube, daß die Konfigurationsmöglichkeiten von SyncData2 nicht ausreichend sind.
Die Verzeichnisse pages und media wären dann ebenfalls von Hand zu transferieren, wie es auch bei einem Serverumzug von WB notwendig ist. Wer mit Softlinks arbeiten kann und/oder einen Shellzugang zu seinem Server hat, kann beide Optionen nutzen und das Verfahren damit beschleunigen.
Vorgehen beim Import
Ausgehend von der Annahme, daß die Module von Hand in BC installiert werden, kann der Import der Datenbank vom Tool dann anschließend durchgeführt werden. Grundsätzlich ist die Reihenfolge egal, abgesehen davon, daß natürlich nichts funktionieren wird, bevor das passiert ist.
Besondere Problemstellen
- Geänderte Tabellenstrukturen (betrifft nur Core-Tabellen, da Zusatzmodule ja in passender Version installiert werden können)
- Geänderte Einstellungen
- Pfade und URLs in Datenbanktabellen (müssen konvertiert werden)
- Autoincrement-Felder
Bei der Migration wird davon ausgegangen, daß vorhandene Seiten in BC ersatzlos entfallen! Das gilt natürlich auch für die bei der Installation erzeugten Standardseiten. Das heißt, der Import wird die pages-Tabelle komplett leeren, und der Benutzer sollte das gleiche mit dem page-Verzeichnis tun, bevor er dieses aus WB kopiert.