Hallo zusammen, ich bin gerade dabei, ein Plugin zu schreiben, welches den MediaManager um einen geschützten Bereich erweitert, desen Dateien nur über gewisse Controller-Actions im Frontend bereitgestellt werden können. Das Plugin ist fast fertig, allerdings grätscht mir das onRemove()-Event der Album.php beim Löschen eines Albums rein. public function onRemove() { //change the associated media to the unsorted album. $sql = "UPDATE s\_media SET albumID = ? WHERE albumID = ?"; Shopware()-\>Db()-\>query($sql, array(-10, $this-\>id)); }
Ich müsste diese Methode dahingehend abändern, dass vorher geprüft wird, ob es sich bei dem Album um ein privates Album handelt, allerdings möchte ich keinerlei Core-Dateien anfassen. Leider konnte ich der Shopware-Dokumentation nicht entnehmen, ob es möglich ist, diese Methode zu hooken oder evtl. durch einen Listener abzugreifen. Wenn ich das richtig verstanden habe, kann sich so gut wie alles hooken lassen, sofern es einer Proxy-Klasse entsprang. Da dies bei der Album.php nicht der Fall ist - hat jemand eine Idee, wie ich an diese Methode rankommen könnte, ohne die Core-Dateien anzufassen? zur Info: SW CE V. 4.2.1 Bin für jeden Ratschlag dankbar. Vielen Dank und viele Grüße, Tom
Das dürfte Dir helfen: http://wiki.shopware.de/Shopware-4-Mode … move_Event
1 „Gefällt mir“
Hi, danke für den Link. Ich konnte das Event erfolgreich abgreifen, allerdings greift es erst, nachdem onRremove() der von Album gefeuert wurde. Damit bin ich leider nicht mehr in der Lage, das Umhängen der zugehörigen Media-Elemente (Kind-Elemente des Albums) abzugreifen / zu verändern.
Hast Du “preRemove” verwendet?
Ja genau, folgendes Event habe ich registriert: $this-\>subscribeEvent( 'Shopware\Models\Media\Album::preRemove', 'preRemoveAlbum' );
und das greift erst, nachdem die onRemove() der Album-Klasse ausgeführt wurde, in der bereits ein SQL-Query getriggert wird.
Hat irgendjemand noch eine Idee?