Nutze die Power von mySQL [Nachtrag]

Ich hatte über eine Methode zur Auslagerung von ZMS Inhalten in mySQL geschrieben und mittlerweile habe ich noch folgende Änderungen an diesem Ansatz vorgenommen und ich unterstreiche weiterhin das ich kein Profi in Sachen ZMS bin.

Ich habe Herrn Dr. Frank Hoffmann gefragt ob es weitere Eventhooks gibt, die den kompletten Lebenszyklus eines Objektes im ZMS abbilden und an die man „sich“ hängen kann und – obwohl ich selber im ZMS Quelltext hätte suchen können – hat er mir alle verfügbaren Events aufgelistet.

Das Problem mit „onChangeObjEvt“ ist, das dieses Event VOR der Speicherung in die ZODB ausgelöst wird. Dadurch lieferte ein "getHref()" oder "getDeclUrl()" Aufruf ungültige URLs wenn der Titel geändert wurde. Das Event „afterCommitObjChangesEvtwird NACH der Speicherung in die ZODB ausgelöst und innerhalb dieses Element geben die oben genannten Funktionen die erwartete URL zurück. Da hätte ich die Dokumentation besser studieren sollen.

Ein weiteres Problem war der Aufruf der "getParentNode()" Funkion innerhalb der Eventhooks. Anscheinend zeigt bei der Erstellung eines neuen Objektes diese Funktion immer auf "zms". Ich brauchte in einigen Fällen die „id“ des Elternobjektes um die Objekt-Hierarchie in mySQL zu übernehmen. Das Studieren des REQUEST Objektes zeigte mir die benötigten Werte in der "path_to_handle" Eigenschaft, welche nun genutzt wird. Der Fehler war schwer zu finden, da der mySQL Hook in diesem Fall immer erst beim „zweiten Speichern eines neuen Elementes“ griff und ich es nicht verstand. Zusammen mit meinem Kollegen Thorsten Weber sind wir diesem Problem auf die Spur gekommen.

Die Abdeckung des kompletten Lebenszyklus eines Objektes schließt dann noch der EventHook "afterRollbackObjEvt", der bei aktiviertem Workflow? beim Löschen eines Objektes ausgelöst wird. Hier können alle entsprechenden mySQL Einträge zu dem Objekt gelöscht werden. Ohne aktiviertem Workflow gibt es leider kein weiteres Event das beim Löschen eines Objektes ausgelöst wird und man muss sich mittels Javascript in das ZMS Backend Menü hängen.

Abschließend möchte ich noch erwähnen das Herr Dr. Frank Hoffmann mich anrief um weitere Informationen zu dem "image.getHref()" Zeitproblem zu bekommen, jenes ich im ersten Blogeintrag erwähnte und das sie nun versuchen diesem Problem auf die Spur zu kommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.