GX-Bug #55691
geschlossenDas Löschen von Kategorien und Artikeln sendet irreführende Daten
100%
Beschreibung
Step 1. Erstelle eine Kategorie.
Step 2. Erstelle einen Artikel welcher zur neuen Katogorie und zur Kategorie Top gehört.
Step 3. Nun lösche den Artikel und die neue Kategorie.
In diesem Fall passiert folgendes in categories.php:
$_POST['multi_categories'] wird mit der KategorieID gefüllt.
$_POST['multi_products'] wird mit dem zu löschenden Artikel gefüllt.
$_POST['multi_products_categories'] wird mit den Kategorien der jeweiligen zu löschenden Artikeln gefüllt.
Was schließlich passiert:
Step 1: Die Kategorie wird gelöscht. Dabei wird der Artikel übersprungen, da er in der Kategorie Top auch existiert.
Step 2: Der Artikel wird gelöscht. Dabei kommt es zu einem Fehler, denn ursprünglich würde hier als Referenz $_POST['multi_products_categories'] übergeben.
Es kommt zum Fehler, weil der zu löschende Code des Artikels glaubt, das dieser Artikel in 2 Kategorien zu finden ist und nicht in 1.
(Das findest du in ProductWriteService.inc.php -> Zeile 246. Die If Bedingung)
Um diesen Fehler zu beheben, habe ich nun Code geschrieben, welcher durch die "multi_products_categories" iteriert und alle gelöschten Kategorien aus diesem Array entfernt. Diesen findest du in categories.php auf Zeile 464ff.
Dieser Code ist nicht unbedingt die beste Lösung. Es gilt hier herauszufinden warum wir überhaupt die Kategorien von Artikeln beim Aufruf von Löschen bereits mitübergeben, statt diese aus der Datenbank zu holen und zu schauen ob dieser Teil refactored werden könnte.
Wenn dies nicht möglich ist, wäre es auch interessant zu schauen ob mein Code verbessert werden könnte.
Bei Fragen einfach an mich wenden.
Zugehörige Tickets
Von Kevin Sekin vor mehr als 6 Jahren aktualisiert
- Nachfolger von GX-Bug #55385: Durch das Löschen von Kategorien und Artikeln kann es dazu kommen, dass verwaiste Artikel in der Datenbank zurückbleiben wurde hinzugefügt
Von Kevin Sekin vor mehr als 6 Jahren aktualisiert
- Status wurde von Anerkannt zu Erledigt geändert
- % erledigt wurde von 0 zu 100 geändert
Von Daniel Wu vor mehr als 6 Jahren aktualisiert
- Zielversion wurde von 3.8.1.1 zu 3.8.2.0 beta1 geändert
Von Moritz Bunjes vor mehr als 3 Jahren aktualisiert
- Tags
3.8_bugfix_lost_articleswurde gelöscht