Löschen von Dateien in neuer Plugin Version

Guten Tag zusammen,

ich bin gestern auf folgendes Problem gestoßen:

Und zwar würden wir gern eine neue Version eines Plugins rausbringen. Im Rahmen der neuen Version wurden bestimmte Template Dateien obsolet und wir würden diese gern löschen. Nur ist bei den Update-Tests aufgefallen, dass Shopware neue Dateien hinzufügt, bestehende Dateien aktualisiert, aber überzählige Dateien, die gelöscht wurden, nicht ebenfalls löscht. Im Rahmen dieses Updates ist es für uns aber zwingend notwendig die .tpl Dateien zu löschen, oder alternativ zu leeren, aber ich denke das sollte nur die letzte Alternative sein.

Nachdem wir dieses Verhalten des Pluginmanagers bei uns und auch auf Kundensystemen festgestellt haben, haben wir versucht in der update() Methode einfach selbst die Dateien zu unlinken, doch der Plugin Ordner scheint im Rahmen des Update-Vorgangs bereits gelockt zu sein, weshalb ein unlink einfach stillschweigend fehlschlägt.

Gibt es jemanden, der vielleicht schon vor einem ähnlichen Problem stand?

Viele Grüße
Sebastian

Hallo Sebastian,

das Problem ist uns bereits bekannt. Das Ticket dazu findest du hier.

Als Zwischenlösung kannst du die alten Dateien einfach leer lassen, so dass nicht ungewollt Content geladen wird. Am Besten mit einem Kommentar, warum diese Dateien leer sind und gelöscht werden können, sobald der Update Prozess gefixt worden ist. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Super, danke für die Info. Dann weiß ich erstmal bescheid, dass wir da strukturell nichts falsch machen und wir umgehen das Problem, wie Sie es beschrieben haben, bis der Fix zur Verfügung steht.

In einem Plugin von uns können kundenspezifische Dateien im Plugin abgelegt werden, da sind wir also etwas angewiesen, dass im Plugin Update nicht “einfach irgendwelche Dateien” gelöscht werden - bitte berücksichtigen bei einer möglichen Anpassung des Update-Prozesses.

Schöne Grüße,
Niklas

@sheitmeier: Was genau funktioniert denn nicht am unlinken von den Dateien? Das habe ich jetzt extra eben nochmal getestet und habe damit keine Probleme und habe das auch früher schon verwendet. 

Hallo Herr Schultze,

meine Tests haben ergeben, dass ein unlink() oder ein rmdir() innerhalb der update() Methode im Boostrap nur auf Dateien bis zu einer Ebene über dem Plugin funktionieren. Dateien ab der Plugin Directory-Ebene, sind bei mir fehlgeschlagen.

@sheitmeier schrieb:

Hallo Herr Schultze,

meine Tests haben ergeben, dass ein unlink() oder ein rmdir() innerhalb der update() Methode im Boostrap nur auf Dateien bis zu einer Ebene über dem Plugin funktionieren. Dateien ab der Plugin Directory-Ebene, sind bei mir fehlgeschlagen.

Hallo,

ich habe eine Frage zu der Problematik: du hast also bei einem Update ein nicht mehr benötigtes Verzeichnis inkl. der darin befindlichen Dateien über:

unlink( __DIR__. '/Views/zu_loseschendes_Verzeichnis/index.tpl')
rmdir( __DIR__. '/Views/zu_loseschendes_Verzeichnis')

gelöscht bzw. löschen können?

Beste Grüße

Sebastian

@sschreier‍

In meinen Tests war eben genau das nicht möglich. Unlink oder rmdir auf ein Element über __DIR__ hat wieder funktioniert, aber eben nicht im Plugin Directory.

Ich habe aber [@Joscha Schultze](http://forum.shopware.com/profile/21625/Joscha Schultze „Joscha Schultze“)‍ so verstanden, dass es bei ihm funktioniert hat?

Eben noch einmal getestet: Habe eine update function, in der ich folgenden Code drin stehen habe:

unlink(dirname( __FILE__ )."/Views/test.txt");

Das klappt wunderbar. Die vorher erstellte Datei ist nach dem update weg.

@Joscha Schultze schrieb:

Eben noch einmal getestet: Habe eine update function, in der ich folgenden Code drin stehen habe:

unlink(dirname( FILE ).„/Views/test.txt“);

Das klappt wunderbar. Die vorher erstellte Datei ist nach dem update weg.

Hallo,

ich habe das ganze einmal bei mir getestet - bei mir hat es wie bei sheitmeier auch nicht funktioniert - es kommt sicher auch drauf an, welche Rechte (Lese-/Schreibrechte) welche Gruppe hat, und das kann ja Shop für Shop unterschiedlich gesetzt sein. Somit keine wirklich brauchbare Lösung (da Sie auch nicht funktioniert hat).

Beste Grüße

Sebastian