Intigration der EditHistory Einträge in WBB4.1

  • Ich hatte in der Kommentarfunktion auf Woltlab vom Plugin gefragt ob es möglich wäre die alten EditHistory Beiträge in das WBB Eigene Sicherungssystem Einzupflegen.
    Die alte Datenbanktabelle ist vorhanden durch das Backup was vor der Umstellung auf 4.1 gemacht worden ist.


    @Josh meinte dazu ich solle mich hier mal dazu melden ;) Da die Kommentarfunktion ja etwas unhandlich ist.

    • Offizieller Beitrag

    Hey,


    hier die versprochene Anleitung. Als erstes musst du aus dem Backup die Tabelle wbb1_post_history_version in die neue Datenbank importieren.


    Nun brauchst du die objectTypeID für Beiträge, diese ermittelst du, indem du folgenden SQL-Befehl ausführst:



    SQL
    SELECT objectTypeID FROM wcf1_object_type WHERE objectType = 'com.woltlab.wbb.post' AND definitionID = SELECT definitionID FROM wcf1_object_type_definition WHERE definitionName = 'com.woltlab.wcf.edit.historySavingObject'


    Die Nummer, die dort raus kommt (es sollte nur eine sein, ansonsten ist irgendwas falsch) setzt du unten in die Query beim Platzhalter _PLATZ_ ein.






    Danach diesen SQL-Befehl ausführen:



    SQL
    INSERT INTO wcf1_edit_history_entry 
    	(objectTypeID, objectID, userID, username, time, obsoletedAt, obsoletedByUserID, message)
    VALUES
    	(SELECT '_PLATZ_', postID, userID, username, time, created, userID, message FROM wbb1_post_history_version)

    Nun sind die ganzen Einträge importiert.



    Nun wissen die Beiträge aber noch nicht, dass diese Versionen haben. Das müssen wir den Beiträgen nun auch noch beibringen. Dafür müssen wir die Spalte lastVersionTime in der Beitragstabelle aktualisieren.


    Hierfür habe ich auch mal einen schönen SQL-Befehl gebastelt. Beachten solltest du, dass du dort wieder den Platzhalter von oben brauchst ;).



    SQL
    UPDATE wbb1_post post SET lastVersionTime = COALESCE((SELECT obsoletedAt FROM wcf1_edit_history_entry history WHERE post.postID = history.objectID AND history.objectTypeID = '_PLATZ_' ORDER BY obsoletedAt DESC LIMIT 1), 0)


    Nun nochmal Cache leeren und es sollte funktionieren :)


    Beste Grüße und Backup nicht vergessen :P

  • Oh, vielen Dank! Werde ich später gleich mal versuchen :) Natürlich werden vorher Backups gemacht, bin doch nicht verrückt :D


    Nur eine Frage aus Interesse, kann man mehre Beiträge auf einmal von einem Bestimmten User z.b. zurücksetzen (erste Version z.b.) ? Ohne erst die Beiträge des User mit einem Datenbackup per MySQL einspielen zu müssen.
    Oder geht da wirklich nur jeder Beitrag einzeln.

  • Ah, interessant, wusste gar nicht das es bei dir schon dabei war. Wie darf ich mir das vorstellen setzt er einfach alle Beitrag auf den Urspungsbeitrag zurück wenn eine Version zur Verfügung steht?

    • Offizieller Beitrag

    Hey,


    naja, dass funktioniert im Grunde so: er sucht sich alle erstellten Versionen des Benutzers raus, welche in einem Zeitraum (7 Tage glaube ich) gemacht wurden und setzt sie auf die letzte gültige Version zurück. Sprich auf eine Version, welche von einem Moderator stammt oder welche außerhalb der 7 Tage Periode liegt.