{"issue":{"state":"open","created_at":"2011-11-29T19:35:22Z","updated_at":"2011-11-29T19:35:27Z","user":{"gravatar_id":"02c8f3c5cd56551b510e61ab671abc87","id":1224532,"url":"https://api.github.com/users/jantheofel","avatar_url":"https://secure.gravatar.com/avatar/02c8f3c5cd56551b510e61ab671abc87?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"jantheofel"},"comments":4,"body":"Problem:\nFür die Erweiterungsverwaltung werden die Hooks vor dem Update eines Moduls eingelesen. Nachdem dessen Dateien ausgetauscht wurden, wird der outputFrontendTemplate-Hook aufgerufen. Dabei passt durch die alte Version der Erweiterung definierte Hook unter Umständen nicht mehr zu den neuen Dateien. Dies ist insbesondere der Fall, wenn die Funktion, die der Hook aufrufen soll, umbenannt wurde. (Aktuelles Beispiel: Die Erweiterung inputcount ist nun auch im Frontend nutzbar. Um die Benennung dabei klar zu gestalten wurde die Funktion injectJavascriptFE hinzugefügt und die bestehende injectJavascript in injectJavascriptBE umbenannt.)\n\nLösungsvorschläge:\n1. In der Erweiterungsverwaltung sollten Hook-Aufrufe unterdrückt werden. Nachteil: Erweiterungen könnten hier nicht eingreifen.\n2. Bei der Aktualisieren von Erweiterungen deren Hookdefinitionen neu geladen werden.\n3. Dateien erst nach dem Rendern der Seite austauschen.\n\n--- _Originally created on August 18th, 2010, at 11:06am (ID 2448)_","assignee":{"gravatar_id":"87d2e5aefadcb310f9155df28c2b3582","id":1192057,"url":"https://api.github.com/users/leofeyer","avatar_url":"https://secure.gravatar.com/avatar/87d2e5aefadcb310f9155df28c2b3582?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"leofeyer"},"id":2391066,"pull_request":{"patch_url":null,"html_url":null,"diff_url":null},"labels":[{"name":"Defect","color":"bd2c00","url":"https://api.github.com/repos/contao/import/labels/Defect"},{"name":"repository","color":"e6e6e6","url":"https://api.github.com/repos/contao/import/labels/repository"}],"number":2448,"title":"Hook-Handling in der Erweiterungsverwaltung","closed_at":null,"html_url":"https://github.com/contao/import/issues/2448","url":"https://api.github.com/repos/contao/import/issues/2448","milestone":{"state":"open","created_at":"2011-11-29T15:29:55Z","closed_issues":11,"due_on":null,"creator":{"gravatar_id":"87d2e5aefadcb310f9155df28c2b3582","id":1192057,"url":"https://api.github.com/users/leofeyer","avatar_url":"https://secure.gravatar.com/avatar/87d2e5aefadcb310f9155df28c2b3582?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"leofeyer"},"number":33,"description":"Contao 2.9.2 (maintenance release)","title":"2.9.2","open_issues":1,"url":"https://api.github.com/repos/contao/import/milestones/33"}},"action":"created","comment":{"created_at":"2011-11-29T19:35:24Z","updated_at":"2011-11-29T19:35:24Z","user":{"gravatar_id":"256406243346b9253f8610fb1d1e05f6","id":1215373,"url":"https://api.github.com/users/importer","avatar_url":"https://secure.gravatar.com/avatar/256406243346b9253f8610fb1d1e05f6?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","login":"importer"},"body":"Ich vermute er meinte den OutputBackendTemplate Hook.\n\nIm Backend kann durchaus bei jeglichem HOOK eine race condition entstehen, wenn sich die \"gehookten\" Funktionen geaendert haben.\n\nBsp.:\n\n1. extension registriert Foo::bar() als HOOK.\n2. ER aktualisiert/deinstalliert die Extension.\n3. outputBackendTemplate versucht nun den Hook der nicht mehr existenten Klasse Foo auszufyhren und stirbt dabei einen klaeglichen Tod.\n\nDas ER sollte daher am Ende seiner compile() Routine am Besten ein unset($GLOBALS['TL_HOOK']); oder vergleichbares machen.\n\nEnglish:\nUnder certain circumstances, it can come to a race condition between HOOKs and the extension repository, when the ER is updating/uninstalling an extension that has registered a HOOK that is to be called after the ER has finished the upgrade/uninstall.\nTherefore the ER should fire \"unset($GLOBALS['TL_HOOK']);\" or something similar at the end of it's compile method.\n\n--- _Originally created by xtra on September 4th, 2010, at 09:38am_","id":2943673,"url":"https://api.github.com/repos/contao/import/issues/comments/2943673"}}